@Stability(Experimental)
Package software.aws.awsprototypingsdk.staticwebsite
The static-website module is able to deploy your pre-packaged static website content into an S3 Bucket, fronted by Cloudfront. This module uses an Origin Access Identity to ensure your Bucket can only be accessed via Cloudfront and is configured to only allow HTTPS requests by default. Custom runtime configurations can also be specified which will emit a runtime-config.json file along with your website content. Typically this includes resource Arns, Id's etc which may need to be referenced from your website. This package uses sane defaults and at a minimum only requires the path to your website assets.
Below is a conceptual view of the default architecture this module creates:
Cloudfront Distribution (HTTPS only) -> S3 Bucket (Private via OAI)
|_ WAF V2 ACL |_ index.html (+ other website files and assets)
|_ runtime-config.json
A typical use case is to create a static website with AuthN. To accomplish this, we can leverage the UserIdentity to create the User Pool (Cognito by default) and Identity Pool. We can then pipe the respective pool id's as runtimeOptions into the StaticWebsite. After the website is deployed, these values can be interrogated from the runtime-config.json deployed alongside the website in order to perform authentication within the app using something like the Amplify Auth API.
const userIdentity = new UserIdentity(this, 'UserIdentity');
new StaticWebsite(this, 'StaticWebsite', {
websiteContentPath: '<relative>/<path>/<to>/<built>/<website>',
runtimeOptions: {
jsonPayload: {
region: Stack.of(this).region,
identityPoolId: userIdentity.identityPool.identityPoolId,
userPoolId: userIdentity.userPool?.userPoolId,
userPoolWebClientId: userIdentity.userPoolClient?.userPoolClientId,
}
},
});
-
Interface Summary Interface Description CidrAllowList (experimental) Representation of a CIDR range.CloudFrontWebAclProps (experimental) Properties to configure the web acl.ManagedRule (experimental) Represents a WAF V2 managed rule.RuntimeOptions (experimental) Dynamic configuration which gets resolved only during deployment.StaticWebsiteProps (experimental) Properties for configuring the StaticWebsite. -
Class Summary Class Description CidrAllowList.Builder A builder forCidrAllowListCidrAllowList.Jsii$Proxy An implementation forCidrAllowListCloudfrontWebAcl (experimental) This construct creates a WAFv2 Web ACL for cloudfront in the us-east-1 region (required for cloudfront) no matter the region of the parent cdk stack.CloudfrontWebAcl.Builder (experimental) A fluent builder forCloudfrontWebAcl.CloudFrontWebAclProps.Builder A builder forCloudFrontWebAclPropsCloudFrontWebAclProps.Jsii$Proxy An implementation forCloudFrontWebAclPropsManagedRule.Builder A builder forManagedRuleManagedRule.Jsii$Proxy An implementation forManagedRuleRuntimeOptions.Builder A builder forRuntimeOptionsRuntimeOptions.Jsii$Proxy An implementation forRuntimeOptionsStaticWebsite (experimental) Deploys a Static Website using by default a private S3 bucket as an origin and Cloudfront as the entrypoint.StaticWebsite.Builder (experimental) A fluent builder forStaticWebsite.StaticWebsiteOrigin (experimental) If passing in distributionProps, the default behaviour.origin is a required parameter.StaticWebsiteProps.Builder A builder forStaticWebsitePropsStaticWebsiteProps.Jsii$Proxy An implementation forStaticWebsiteProps