From e89fc7afa920f41370e2444bd65f6baabed2df84 Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 00:35:51 +0200 Subject: [PATCH 01/13] Add files via upload --- static-site.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 static-site.js diff --git a/static-site.js b/static-site.js new file mode 100644 index 0000000..cddcdca --- /dev/null +++ b/static-site.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StaticSite = void 0; +const s3 = require("@aws-cdk/aws-s3"); +const s3deploy = require("@aws-cdk/aws-s3-deployment"); +const cloudfront = require("@aws-cdk/aws-cloudfront"); +const iam = require("@aws-cdk/aws-iam"); +const core_1 = require("@aws-cdk/core"); +class StaticSite extends core_1.Construct { + constructor(parent, name) { + super(parent, name); + const cloudfrontOAI = new cloudfront.OriginAccessIdentity(this, "JSCC-OAI"); + const siteBucket = new s3.Bucket(this, "JSCCStaticBucket", { + bucketName: "js-cc-cloudfront-s33", + websiteIndexDocument: 'index.html', + publicReadAccess: false, + blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL + }); + siteBucket.addToResourcePolicy(new iam.PolicyStatement({ + actions: ["s3:GetObject"], + resources: [siteBucket.arnForObjects("*")], + principals: [new iam.CanonicalUserPrincipal(cloudfrontOAI.cloudFrontOriginAccessIdentityS3CanonicalUserId)] + })); + const distribution = new cloudfront.CloudFrontWebDistribution(this, 'JSCCStaticDistribution', { + originConfigs: [{ + s3OriginSource: { + s3BucketSource: siteBucket, + originAccessIdentity: cloudfrontOAI + }, + behaviors: [{ + isDefaultBehavior: true + }] + }] + }); + new s3deploy.BucketDeployment(this, "JSCC-Bucket-Deployment", { + sources: [s3deploy.Source.asset("./website")], + destinationBucket: siteBucket, + distribution, + distributionPaths: ["/*"] + }); + } +} +exports.StaticSite = StaticSite; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGF0aWMtc2l0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0Esc0NBQXNDO0FBQ3RDLHVEQUF1RDtBQUN2RCxzREFBc0Q7QUFDdEQsd0NBQXdDO0FBQ3hDLHdDQUFpRDtBQUVqRCxNQUFhLFVBQVcsU0FBUSxnQkFBUztJQUN2QyxZQUFZLE1BQWEsRUFBRSxJQUFZO1FBQ3JDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFcEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDdkQsVUFBVSxFQUFFLHNCQUFzQjtZQUNsQyxvQkFBb0IsRUFBRSxZQUFZO1lBQ2xDLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7U0FDcEQsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNuRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsK0NBQStDLENBQUMsQ0FBQztTQUM5RyxDQUFDLENBQUMsQ0FBQztRQUNKLE1BQU0sWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUMxRixhQUFhLEVBQUUsQ0FBQztvQkFDUixjQUFjLEVBQUU7d0JBQ1osY0FBYyxFQUFFLFVBQVU7d0JBQzFCLG9CQUFvQixFQUFFLGFBQWE7cUJBQ3RDO29CQUNELFNBQVMsRUFBRSxDQUFDOzRCQUNKLGlCQUFpQixFQUFFLElBQUk7eUJBQzFCLENBQUM7aUJBQ1QsQ0FBQztTQUNULENBQUMsQ0FBQztRQUNILElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUMxRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QyxpQkFBaUIsRUFBRSxVQUFVO1lBQzdCLFlBQVk7WUFDWixpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQztTQUM1QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFsQ0QsZ0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy9AdHMtbm9jaGVja1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnQGF3cy1jZGsvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzZGVwbG95IGZyb20gJ0Bhd3MtY2RrL2F3cy1zMy1kZXBsb3ltZW50JztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ0Bhd3MtY2RrL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgU3RhdGljU2l0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogU3RhY2ssIG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICBjb25zdCBjbG91ZGZyb250T0FJID0gbmV3IGNsb3VkZnJvbnQuT3JpZ2luQWNjZXNzSWRlbnRpdHkodGhpcywgXCJKU0NDLU9BSVwiKTtcbiAgICAgICAgY29uc3Qgc2l0ZUJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJKU0NDU3RhdGljQnVja2V0XCIsIHtcbiAgICAgICAgICAgIGJ1Y2tldE5hbWU6IFwianMtY2MtY2xvdWRmcm9udC1zMzNcIixcbiAgICAgICAgICAgIHdlYnNpdGVJbmRleERvY3VtZW50OiAnaW5kZXguaHRtbCcsXG4gICAgICAgICAgICBwdWJsaWNSZWFkQWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTExcbiAgICAgICAgfSk7XG4gICAgICAgIHNpdGVCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJzMzpHZXRPYmplY3RcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtzaXRlQnVja2V0LmFybkZvck9iamVjdHMoXCIqXCIpXSxcbiAgICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkNhbm9uaWNhbFVzZXJQcmluY2lwYWwoY2xvdWRmcm9udE9BSS5jbG91ZEZyb250T3JpZ2luQWNjZXNzSWRlbnRpdHlTM0Nhbm9uaWNhbFVzZXJJZCldXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuQ2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbih0aGlzLCAnSlNDQ1N0YXRpY0Rpc3RyaWJ1dGlvbicsIHtcbiAgICAgICAgICAgIG9yaWdpbkNvbmZpZ3M6IFt7XG4gICAgICAgICAgICAgICAgICAgIHMzT3JpZ2luU291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzM0J1Y2tldFNvdXJjZTogc2l0ZUJ1Y2tldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbkFjY2Vzc0lkZW50aXR5OiBjbG91ZGZyb250T0FJXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHRCZWhhdmlvcjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICB9KTtcbiAgICAgICAgbmV3IHMzZGVwbG95LkJ1Y2tldERlcGxveW1lbnQodGhpcywgXCJKU0NDLUJ1Y2tldC1EZXBsb3ltZW50XCIsIHtcbiAgICAgICAgICAgIHNvdXJjZXM6IFtzM2RlcGxveS5Tb3VyY2UuYXNzZXQoXCIuL3dlYnNpdGVcIildLFxuICAgICAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHNpdGVCdWNrZXQsXG4gICAgICAgICAgICBkaXN0cmlidXRpb24sXG4gICAgICAgICAgICBkaXN0cmlidXRpb25QYXRoczogW1wiLypcIl1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19 \ No newline at end of file From a54ce12bb5a5512dbc5b6ad1785318c9fe95acea Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 00:36:06 +0200 Subject: [PATCH 02/13] Add files via upload --- static-site.ts | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/static-site.ts b/static-site.ts index f50ab4f..222e6bc 100644 --- a/static-site.ts +++ b/static-site.ts @@ -11,6 +11,34 @@ export class StaticSite extends Construct { constructor(parent: Stack, name: string) { super(parent, name); - - } + const cloudfrontOAI = new cloudfront.OriginAccessIdentity(this, "JSCC-OAI"); + const siteBucket = new s3.Bucket(this, "JSCCStaticBucket", { + bucketName: "js-cc-cloudfront-s33", + websiteIndexDocument: 'index.html', + publicReadAccess: false, + blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL + }); + siteBucket.addToResourcePolicy(new iam.PolicyStatement({ + actions: ["s3:GetObject"], + resources: [siteBucket.arnForObjects("*")], + principals: [new iam.CanonicalUserPrincipal(cloudfrontOAI.cloudFrontOriginAccessIdentityS3CanonicalUserId)] + })); + const distribution = new cloudfront.CloudFrontWebDistribution(this, 'JSCCStaticDistribution', { + originConfigs: [{ + s3OriginSource: { + s3BucketSource: siteBucket, + originAccessIdentity: cloudfrontOAI + }, + behaviors: [{ + isDefaultBehavior: true + }] + }] + }); + new s3deploy.BucketDeployment(this, "JSCC-Bucket-Deployment", { + sources: [s3deploy.Source.asset("./website")], + destinationBucket: siteBucket, + distribution, + distributionPaths: ["/*"] + }); + } } From 057c915aa4297057f786eb22cb8390ad46c4c14d Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 00:36:15 +0200 Subject: [PATCH 03/13] Add files via upload --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c012624..caf7fc4 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# nodejs-aws-cdk-starter \ No newline at end of file +# nodejs-aws-cdk-starter +d15gjqebga76z2.cloudfront.net +js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com \ No newline at end of file From 09f6d822b9f5745c68d97c09286cb0d97f23acef Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 00:36:43 +0200 Subject: [PATCH 04/13] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index caf7fc4..8dad41b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # nodejs-aws-cdk-starter -d15gjqebga76z2.cloudfront.net -js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com \ No newline at end of file +##d15gjqebga76z2.cloudfront.net +##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com From 150bc125a48513d95e53a8c6bd4e84401d1f9761 Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 11:06:12 +0200 Subject: [PATCH 05/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8dad41b..a6fbc6b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # nodejs-aws-cdk-starter -##d15gjqebga76z2.cloudfront.net +##(Domain name)[d1qg6ersmgr5de.cloudfront.net] ##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com From ab50b72ecd69509220e320c5dfea54480bc7fbbc Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 11:06:26 +0200 Subject: [PATCH 06/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6fbc6b..ad14586 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # nodejs-aws-cdk-starter -##(Domain name)[d1qg6ersmgr5de.cloudfront.net] +##(Domain name):[d1qg6ersmgr5de.cloudfront.net] ##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com From df54d5811dbe9602ca39d67cbd9952a498fa5cf1 Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 11:06:45 +0200 Subject: [PATCH 07/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad14586..541d78f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # nodejs-aws-cdk-starter -##(Domain name):[d1qg6ersmgr5de.cloudfront.net] +##[Domain name]:(d1qg6ersmgr5de.cloudfront.net) ##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com From 13c51a2bdaf2d59064925683a38f364891532ebb Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 11:07:16 +0200 Subject: [PATCH 08/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 541d78f..0646cee 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # nodejs-aws-cdk-starter -##[Domain name]:(d1qg6ersmgr5de.cloudfront.net) +##[Domain name](d1qg6ersmgr5de.cloudfront.net) ##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com From 2a8e237b57ac85f54f0f75451f53e23a9bdf049c Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 11:30:04 +0200 Subject: [PATCH 09/13] Update README.md --- README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0646cee..1a4faa7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ # nodejs-aws-cdk-starter -##[Domain name](d1qg6ersmgr5de.cloudfront.net) -##js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com + +Task 2.1 Manual Deployment +### [S3-website](https://nodejs-aws-shop-react1.s3.eu-west-1.amazonaws.com/index.html) and [CloudFront URL](https://d82d3iyhzejev.cloudfront.net) + +Task 2.2 Automated Deployment +###[Domain name](d1qg6ersmgr5de.cloudfront.net) +###js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com + + +Task 2.3 Automated Deployment +Here done From 8184b665e9a0ffd2493fd9035ba512f5e593fbff Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 17:06:19 +0200 Subject: [PATCH 10/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a4faa7..00f81a0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Task 2.1 Manual Deployment Task 2.2 Automated Deployment ###[Domain name](d1qg6ersmgr5de.cloudfront.net) -###js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com +###[cloudfront](js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com) Task 2.3 Automated Deployment From 4e2b43111fd50f9d2208dfa6b1140e6c939ac365 Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 17:08:22 +0200 Subject: [PATCH 11/13] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 00f81a0..ae479a7 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ Task 2.1 Manual Deployment Task 2.2 Automated Deployment ###[Domain name](d1qg6ersmgr5de.cloudfront.net) -###[cloudfront](js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com) - - +###[CloudFront]([js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com](https://js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com/)) Task 2.3 Automated Deployment Here done From 75941e9a82c52eee36ce4d2d75eb99fe265a247d Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 17:08:40 +0200 Subject: [PATCH 12/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae479a7..1d7cc18 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,6 @@ Task 2.1 Manual Deployment Task 2.2 Automated Deployment ###[Domain name](d1qg6ersmgr5de.cloudfront.net) -###[CloudFront]([js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com](https://js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com/)) +###[CloudFront](https://js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com/) Task 2.3 Automated Deployment Here done From 4afb57ebf6ff6b43d551e66bbb595c41c7b4c97a Mon Sep 17 00:00:00 2001 From: Denis Banda Date: Tue, 30 May 2023 17:09:31 +0200 Subject: [PATCH 13/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d7cc18..fbf1584 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Task 2.1 Manual Deployment ### [S3-website](https://nodejs-aws-shop-react1.s3.eu-west-1.amazonaws.com/index.html) and [CloudFront URL](https://d82d3iyhzejev.cloudfront.net) Task 2.2 Automated Deployment -###[Domain name](d1qg6ersmgr5de.cloudfront.net) +###[Domain name](https://d1qg6ersmgr5de.cloudfront.net/) ###[CloudFront](https://js-cc-cloudfront-s33.s3.eu-west-1.amazonaws.com/) Task 2.3 Automated Deployment Here done