Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated README for static-hosting package #1417

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 211 additions & 0 deletions packages/static-hosting/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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<BehaviorOptions>;
}[]
```

- Overrides default behaviour paths with a prefix and takes in behviour options to apply on the prefix behaviour

Default: **true**

### `staticFileRemapOptions` (Partial&lt;BehaviorOptions&gt;)

- 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&lt;string, BehaviorOptions&gt;)

- 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.
Expand Down
Loading