Simple bucket with cdn using cdk
First create the project:
mkdir <name-of-the-stack>
cd <name-of-the-stack>
cdk init app --language=typescript
Add dependencies:
npm i --save @aws-cdk/aws-s3 @aws-cdk/aws-cloudfront
And create the stack:
import * as cdk from "@aws-cdk/core";
import { Bucket } from "@aws-cdk/aws-s3";
import {
CloudFrontWebDistribution,
CloudFrontWebDistributionProps,
OriginAccessIdentity,
} from "@aws-cdk/aws-cloudfront";
const WEBSITE_NAME = "my-site.com";
export class MyStack extends cdk.Stack {
devBucket: Bucket;
cloudfrontDist: CloudFrontWebDistribution;
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
this.devBucket = new Bucket(this, "unrec-development", {
publicReadAccess: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
// https://dev.to/ryands17/deploying-a-spa-using-aws-cdk-typescript-4ibf
const cloudFrontOAI = new OriginAccessIdentity(this, "OAI", {
comment: `OAI for ${WEBSITE_NAME} website.`,
});
const cloudFrontDistProps: CloudFrontWebDistributionProps = {
originConfigs: [
{
s3OriginSource: {
s3BucketSource: this.devBucket,
originAccessIdentity: cloudFrontOAI,
},
behaviors: [{ isDefaultBehavior: true }],
},
],
};
this.cloudfrontDist = new CloudFrontWebDistribution(
this,
`${WEBSITE_NAME}-cfd`,
cloudFrontDistProps
);
}
}
🖖