From f89801887f022f59f9b8fc85f7f7d7e05fee177c Mon Sep 17 00:00:00 2001 From: porhkz Date: Thu, 19 Dec 2024 15:31:24 +1030 Subject: [PATCH] Added options from static-hosting.ts --- packages/static-hosting/README.md | 211 ++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) diff --git a/packages/static-hosting/README.md b/packages/static-hosting/README.md index 9e3f34eb..2f3c70ac 100644 --- a/packages/static-hosting/README.md +++ b/packages/static-hosting/README.md @@ -2,6 +2,8 @@ ## Overview +![TypeScript version](https://img.shields.io/github/package-json/dependency-version/aligent/cdk-constructs/dev/typescript?filename=packages/static-hosting/package.json&color=red) ![AWS CDK version](https://img.shields.io/github/package-json/dependency-version/aligent/cdk-constructs/dev/aws-cdk?filename=packages/static-hosting/package.json) ![NPM version](https://img.shields.io/npm/v/%40aligent%2Fcdk-static-hosting?color=green) + This repository defines a CDK construct for hosting a static website on AWS using S3 and CloudFront. It can be imported and used within CDK applications. By default this construct will create a CloudFront distribution with an S3 bucket as the origin. It will also create an IAM user and group that have permission to create files in the S3 bucket. @@ -15,6 +17,215 @@ It has the following features that can optionally be enabled: ![static hosting diagram](docs/static_hosting.png) +## Usage and PrerenderFargateOptions +### `domainName`(string) +- Domain name for the stack. Combined with the subDomainName it is used as the name for the S3 origin and an alternative domain name for the CloudFront distribution + +### `subDomainName`(string) +- Subdomain name for the stack. Combined with the domainName it is used as the name for the S3 origin and an alternative domain name for the CloudFront distribution + +### `extraDistributionCnames` (ReadonlyArray<string>) + +- An array of additional Cloudfront alternative domain names. + +Default: **undefined** + +### `certificateArn` (string) + +- The arn of the certificate to attach to the CloudFront distribution. Must be created in us-east-1 + +### `backendHost` (string) + +- Custom backend host to add as a second origin to the CloudFront distribution + +Default: **undefined** + +### `zoneName` (string) + +- The hosted zone name to create a DNS record in. If not supplied a DNS record will not be created + +Default: **undefined** + +### `createPublisherGroup` (boolean) + +- Whether to create a group with permissions to publish to the S3 bucket. + +Default: **true** + +### `createPublisherUser` (boolean) + +- Whether to create a user with permissions to publish to the S3 bucket. The user will not have permissions unless the publisher group is also created + +Default: **true** + +### `enableCloudFrontAccessLogging` (boolean) + +- Enable CloudFront access logs + +Default: **false** + +### `enableS3AccessLogging` (boolean) + +- Enable S3 access logging + +Default: **false** + +### `enableErrorConfig` (boolean) + +- Enable returning the errorResponsePagePath on a 404. Not required when using Prerender or Feature environment Lambda@Edge functions + +Default: **false** + +### `errorResponsePagePath` (string) + +- Custom error response page path + +Default: **/index.html** + +### `enableStaticFileRemap` (boolean) + +- CCreate behaviours for the following file extensions to route straight to the S3 origin: + - js, css, json, svg, jpg, jpeg, png, gif, ico, woff, woff2, otf + +Default: **true** + +### `defaultBehaviourPrefixes` (prefix: string), (behaviourOverride: Partial<BehaviorOptions>) + +``` +{ + prefix: string; + behaviourOverride: Partial; + }[] +``` + +- Overrides default behaviour paths with a prefix and takes in behviour options to apply on the prefix behaviour + +Default: **true** + +### `staticFileRemapOptions` (Partial<BehaviorOptions>) + +- Optional additional properties for static file remap behaviours + +Default: **none** + +### `remapPaths` (remapPath[]) + +- Paths to remap on the default behaviour. For example you might remap deployed_sitemap.xml -> sitemap.xml +- Created a behaviour in CloudFront to handle the remap. If the paths are different it will also deploy a Lambda@Edge function to perform the required remap. The "to" path is optional, and the Lambda@Edge function will not be deployed if not provided. + +Default: **undefined** + +### `remapBackendPaths` (remapPath[]) + +- Functions the same as remapPaths but uses the backendHost as the origin. +- Requires a valid backendHost to be configured + +Default: **undefined** + +### `defaultRootObject` (string) + +- Override the default root object + +Default: **index.html** + +### `enforceSSL` (boolean) + +- Enforce ssl on bucket requests + +Default: **true** + +### `disableCSP` (boolean) + +- EDisable the use of the CSP header + +Default: **false** + +### `csp` (CSP) + +- Adds custom CSP directives and URLs to the header. +- AWS limits the max header size to 1kb, this is too small for complex csp headers. +- The main purpose of this csp header is to provide a method of setting a report-uri. + +Default: **undefined** + +### `explicitCSP` (boolean) + +- This will generate a csp based *purely* on the provided csp object. Therefore disabling the automatic adding of common use-case properties. + +Default: **false** + +### `s3ExtendedProps` (BucketProps) + +- Extend the default props for S3 bucket + +Default: **undefined** + +### `webAclArn` (string) + +- Add an external WAF via an arn + +Default: **undefined** + +### `responseHeadersPolicies` (ResponseHeaderMappings) + +- Add response headers policies to the default behaviour + +Default: **undefined** + +### `additionalBehaviors` (Record<string, BehaviorOptions>) + +- Additional behaviours + +Default: **undefined** + +### `defaultBehaviorEdgeLambdas` (EdgeLambda[]) + +- Lambda@Edge functions to add to the default behaviour + +Default: **undefined** + +### `defaultBehaviorRequestPolicy` (CachePolicy) + +- A request policy used on the default behavior + +Default: **undefined** + +### `defaultBehaviorCachePolicy` (EdgeLambda[]) + +- A cache policy used on the default behavior + +Default: **undefined** + +### `additionalDefaultOriginRequestHeaders` (string[]) + +- Additional headers to include in OriginRequestHeaderBehavior + +### `additionalDefaultCacheKeyHeaders` (string[]) + +- Additional headers to include in CacheHeaderBehavior + +### `overrideLogicalId` (string) + +- After switching constructs, you need to maintain the same logical ID for the underlying CfnDistribution if you wish to avoid the deletion and recreation of your distribution. +- To do this, use escape hatches to override the logical ID created by the new Distribution construct with the logical ID created by theold construct + + +See: [Migrating from original cfnDistribution - AWS Docs](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront-readme.html#migrating-from-the-original-cloudfrontwebdistribution-to-the-newer-distribution-construct) + +Default: **undefined** + +### `exportPrefix` (string) + +- A string to prefix CloudFormation outputs with + +Default: **undefined** + +### `exportPrefix` (string) + +- Add a comment to the CloudFront distribution + +Default: **undefined** + ## Example The following CDK snippet can be used to provision a static hosting stack using this construct.