
com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin Maven / Gradle / Ivy
package com.pwrdrvr.microapps.cdk;
/**
* (experimental) Create a new MicroApps Edge to Origin Function w/ `config.yml`.
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.75.0 (build 63bb957)", date = "2023-06-14T17:32:47.063Z")
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@software.amazon.jsii.Jsii(module = com.pwrdrvr.microapps.cdk.$Module.class, fqn = "@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin")
public class MicroAppsEdgeToOrigin extends software.constructs.Construct implements com.pwrdrvr.microapps.cdk.IMicroAppsEdgeToOrigin {
protected MicroAppsEdgeToOrigin(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
}
protected MicroAppsEdgeToOrigin(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) {
super(initializationMode);
}
/**
* @param scope This parameter is required.
* @param id This parameter is required.
* @param props This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public MicroAppsEdgeToOrigin(final @org.jetbrains.annotations.NotNull software.constructs.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOriginProps props) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, "scope is required"), java.util.Objects.requireNonNull(id, "id is required"), java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* (experimental) Generate the yaml config for the edge lambda.
*
* @param props This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public static @org.jetbrains.annotations.NotNull java.lang.String generateEdgeToOriginConfig(final @org.jetbrains.annotations.NotNull com.pwrdrvr.microapps.cdk.GenerateEdgeToOriginConfigOptions props) {
return software.amazon.jsii.JsiiObject.jsiiStaticCall(com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin.class, "generateEdgeToOriginConfig", software.amazon.jsii.NativeType.forClass(java.lang.String.class), new Object[] { java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* (experimental) The edge to origin function for API Gateway Request Origin Edge Lambda.
*
* The generated config.yml
is included in the Lambda's code.
*/
@Override
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public @org.jetbrains.annotations.NotNull java.lang.Object getEdgeToOriginFunction() {
return software.amazon.jsii.Kernel.get(this, "edgeToOriginFunction", software.amazon.jsii.NativeType.forClass(java.lang.Object.class));
}
/**
* (experimental) Configuration of the edge to origin lambda functions.
*/
@Override
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public @org.jetbrains.annotations.NotNull java.util.List getEdgeToOriginLambdas() {
return java.util.Collections.unmodifiableList(software.amazon.jsii.Kernel.get(this, "edgeToOriginLambdas", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.cloudfront.EdgeLambda.class))));
}
/**
* (experimental) The IAM Role for the edge to origin function.
*/
@Override
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public @org.jetbrains.annotations.NotNull software.amazon.awscdk.services.iam.Role getEdgeToOriginRole() {
return software.amazon.jsii.Kernel.get(this, "edgeToOriginRole", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.Role.class));
}
/**
* (experimental) A fluent builder for {@link com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public static final class Builder implements software.amazon.jsii.Builder {
/**
* @return a new instance of {@link Builder}.
* @param scope This parameter is required.
* @param id This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public static Builder create(final software.constructs.Construct scope, final java.lang.String id) {
return new Builder(scope, id);
}
private final software.constructs.Construct scope;
private final java.lang.String id;
private final com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOriginProps.Builder props;
private Builder(final software.constructs.Construct scope, final java.lang.String id) {
this.scope = scope;
this.id = id;
this.props = new com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOriginProps.Builder();
}
/**
* (experimental) Adds an X-Forwarded-Host-Header when calling API Gateway.
*
* Can only be trusted if signingMode
is enabled, which restricts
* access to API Gateway to only IAM signed requests.
*
* Note: if true, creates OriginRequest Lambda @ Edge function for API Gateway Origin
*
* Default: true
*
* @return {@code this}
* @param addXForwardedHostHeader Adds an X-Forwarded-Host-Header when calling API Gateway. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder addXForwardedHostHeader(final java.lang.Boolean addXForwardedHostHeader) {
this.props.addXForwardedHostHeader(addXForwardedHostHeader);
return this;
}
/**
* (experimental) Account IDs allowed for cross-account Function URL invocations.
*
* Default: []
*
* @return {@code this}
* @param allowedFunctionUrlAccounts Account IDs allowed for cross-account Function URL invocations. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder allowedFunctionUrlAccounts(final java.util.List allowedFunctionUrlAccounts) {
this.props.allowedFunctionUrlAccounts(allowedFunctionUrlAccounts);
return this;
}
/**
* (experimental) List of allowed locale prefixes for pages.
*
* Default: none
*
* Example:
*
*
* : ['en', 'fr', 'es']
*
*
* @return {@code this}
* @param allowedLocalePrefixes List of allowed locale prefixes for pages. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder allowedLocalePrefixes(final java.util.List allowedLocalePrefixes) {
this.props.allowedLocalePrefixes(allowedLocalePrefixes);
return this;
}
/**
* (experimental) Optional asset name root.
*
* Default: - resource names auto assigned
*
* Example:
*
*
* microapps
*
*
* @return {@code this}
* @param assetNameRoot Optional asset name root. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder assetNameRoot(final java.lang.String assetNameRoot) {
this.props.assetNameRoot(assetNameRoot);
return this;
}
/**
* (experimental) Optional asset name suffix.
*
* Default: none
*
* Example:
*
*
* -dev-pr-12
*
*
* @return {@code this}
* @param assetNameSuffix Optional asset name suffix. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder assetNameSuffix(final java.lang.String assetNameSuffix) {
this.props.assetNameSuffix(assetNameSuffix);
return this;
}
/**
* (experimental) Origin region that API Gateway will be deployed to, used for the config.yml on the Edge function to sign requests for the correct region.
*
* Note that Lambda FunctionURLs get the region from the Lambda ARN
* and do not need this to be configured.
*
* Default: undefined
*
* @return {@code this}
* @param originRegion Origin region that API Gateway will be deployed to, used for the config.yml on the Edge function to sign requests for the correct region. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder originRegion(final java.lang.String originRegion) {
this.props.originRegion(originRegion);
return this;
}
/**
* (experimental) RemovalPolicy override for child resources.
*
* Default: - per resource default
*
* @return {@code this}
* @param removalPolicy RemovalPolicy override for child resources. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder removalPolicy(final software.amazon.awscdk.RemovalPolicy removalPolicy) {
this.props.removalPolicy(removalPolicy);
return this;
}
/**
* (experimental) Replaces Host header (which will be the Edge domain name) with the Origin domain name when enabled.
*
* This is necessary when API Gateway has not been configured
* with a custom domain name that matches the exact domain name used by the CloudFront
* Distribution AND when the OriginRequestPolicy.HeadersBehavior is set
* to pass all headers to the origin.
*
* Note: if true, creates OriginRequest Lambda @ Edge function for API Gateway Origin
*
* Default: true
*
* @return {@code this}
* @param replaceHostHeader Replaces Host header (which will be the Edge domain name) with the Origin domain name when enabled. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder replaceHostHeader(final java.lang.Boolean replaceHostHeader) {
this.props.replaceHostHeader(replaceHostHeader);
return this;
}
/**
* (experimental) Path prefix on the root of the API Gateway Stage.
*
* Default: none
*
* Example:
*
*
* dev/
*
*
* @return {@code this}
* @param rootPathPrefix Path prefix on the root of the API Gateway Stage. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder rootPathPrefix(final java.lang.String rootPathPrefix) {
this.props.rootPathPrefix(rootPathPrefix);
return this;
}
/**
* (experimental) Enable invoking API Gateway from the Edge Lambda.
*
* Default: false
*
* @return {@code this}
* @param setupApiGatewayPermissions Enable invoking API Gateway from the Edge Lambda. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder setupApiGatewayPermissions(final java.lang.Boolean setupApiGatewayPermissions) {
this.props.setupApiGatewayPermissions(setupApiGatewayPermissions);
return this;
}
/**
* (experimental) Requires IAM auth on the API Gateway origin if not set to 'none'.
*
* 'sign' - Uses request headers for auth.
* 'presign' - Uses query string for auth.
*
* If enabled,
*
* Note: if 'sign' or 'presign', creates OriginRequest Lambda @ Edge function for API Gateway Origin
*
* Default: 'sign'
*
* @return {@code this}
* @param signingMode Requires IAM auth on the API Gateway origin if not set to 'none'. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder signingMode(final java.lang.String signingMode) {
this.props.signingMode(signingMode);
return this;
}
/**
* (experimental) DynamoDB Table Name for apps/versions/rules.
*
* Must be a full ARN as this can be cross region.
*
* Implies that 2nd generation routing is enabled.
*
* @return {@code this}
* @param tableRulesArn DynamoDB Table Name for apps/versions/rules. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder tableRulesArn(final java.lang.String tableRulesArn) {
this.props.tableRulesArn(tableRulesArn);
return this;
}
/**
* @returns a newly built instance of {@link com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@Override
public com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin build() {
return new com.pwrdrvr.microapps.cdk.MicroAppsEdgeToOrigin(
this.scope,
this.id,
this.props.build()
);
}
}
}