Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/accenture/cna-aws-cdk-patterns
https://github.com/accenture/cna-aws-cdk-patterns
aws cdk infrastructure-as-code static-website
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/accenture/cna-aws-cdk-patterns
- Owner: Accenture
- License: mit
- Created: 2021-02-01T10:08:09.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-06T18:55:46.000Z (about 2 years ago)
- Last Synced: 2024-04-03T10:31:14.123Z (10 months ago)
- Topics: aws, cdk, infrastructure-as-code, static-website
- Language: TypeScript
- Homepage:
- Size: 1.16 MB
- Stars: 3
- Watchers: 8
- Forks: 1
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Cloud-native Accelerator: CDK Patterns for AWS
## Usage
### Install
To install this construct to your CDK project you need to run
```bash
npm install @Accenture/cna-aws-cdk-patterns
```## Static Website CDK Construct
This project contains a CDK construct for creating the infrastructure needed for hosting a static website. It also contains templates for CI/CD pipelines for deploying static content and *Single Page Applications* (SPA) to the static website infrastructure.
### Architecture
The infrastructure for hosting consists of the following AWS services:
* AWS S3
* CloudFront
* ACM
* Route 53Additionally, the CI/CD pipelines are based on the following AWS services:
* CodePipeline
* CodeBuild### Create Static Website
This CDK Construct contains everything which is needed to create the infrastructure for hosting the Website. Therefore, the following code is sufficient for creating a Stack with the website:
```typescript
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { StaticWebsite } from '@Accenture/cna-aws-cdk-patterns';export class StaticWebsiteStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
new StaticWebsite(this, 'simple-static-website', {
name: 'simple-static-website'
});
}
}
```If you have want to use you own custom domain for the static website you can provide a Route 53 Hosted Zone and the domain name as input:
```typescript
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { StaticWebsite } from '@Accenture/cna-aws-cdk-patterns';export class StaticWebsiteStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);// Look up the hosted zone for the domainName in Route 53
const hostedZone = HostedZone.fromLookup(this, 'hosted-zone', {
domainName: 'example.com'
});
new StaticWebsite(this, 'simple-static-website', {
name: 'simple-static-website',
hostedZone: hostedZone,
domainName: 'www.example.com'
});
}
}
```With this configuration a SSL certificate is created in ACM and a DNS record is added to point to the CloudFront distribution.
**Important:** The stack for the website needs to be created in the AWS Region *us-east-1*.
## Useful commands
* `npm run build` compile typescript to js
* `npm run watch` watch for changes and compile
* `npm run test` perform the jest unit tests
* `cdk deploy` deploy this stack to your default AWS account/region
* `cdk diff` compare deployed stack with current state
* `cdk synth` emits the synthesized CloudFormation template