From ebc8e5df07010529cd552525ccb7a0a768edb845 Mon Sep 17 00:00:00 2001 From: Durgaprasad Budhwani Date: Mon, 26 Aug 2019 15:39:14 +0530 Subject: [PATCH 01/11] feat(serverless-component): Change Package name. --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index eee006d..ab25f3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@serverless/website", - "version": "3.0.9", + "name": "@ublend-npm/serverless-website-component", + "version": "0.0.1", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -10,7 +10,7 @@ "lint": "eslint . --fix --cache" }, "author": "Serverless, Inc.", - "license": "Apache", + "license": "UNLICENSED", "dependencies": { "@serverless/aws-s3": "^2.0.0", "@serverless/core": "^1.0.0", From 8f8950ef8806bef26c32019068899c4368e7b4be Mon Sep 17 00:00:00 2001 From: Durgaprasad Budhwani Date: Fri, 30 Aug 2019 10:54:57 +0530 Subject: [PATCH 02/11] feat(serverless-component): Added bucket and cloudfront information --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7133ecf..3797cbe 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,10 @@ myWebsite: region: us-east-1 # The AWS region to deploy your website into bucketName: myBucket # (Optional) The Bucket name where `src` files/folder will be upload. # If not provided, it will create random bucket name and upload `src` files + cloudFront: # (Optional) + waitForCreateDistribution: true # (Optional) wait for create cloudfront distrubution to complete + waitForUpdateDistribution: false # (Optional) wait for update cloudfront distrubution to complete + customOrigin: true # (Optional) wait for custom origin to avoid s3 bucket redirect during cloudfront creation env: # Environment variables to include in a 'env.js' file with your uploaded code. API_URL: https://api.com From 2864cee42bf1479a2ccf0fdf894e6750e6b93371 Mon Sep 17 00:00:00 2001 From: Durgaprasad Budhwani Date: Fri, 30 Aug 2019 10:56:37 +0530 Subject: [PATCH 03/11] feat(serverless-component): Added bucket and cloudfront information --- package.json | 10 +++++----- serverless.js | 10 ++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index ab25f3b..2d208c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@ublend-npm/serverless-website-component", - "version": "0.0.1", + "name": "@serverless/website", + "version": "3.0.2", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -10,11 +10,11 @@ "lint": "eslint . --fix --cache" }, "author": "Serverless, Inc.", - "license": "UNLICENSED", + "license": "Apache", "dependencies": { - "@serverless/aws-s3": "^2.0.0", + "@serverless/aws-s3": "^2.0.7", "@serverless/core": "^1.0.0", - "@serverless/domain": "^2.0.0", + "@serverless/domain": "^2.0.6", "aws-sdk": "^2.499.0" }, "devDependencies": { diff --git a/serverless.js b/serverless.js index bfc5657..7919d57 100644 --- a/serverless.js +++ b/serverless.js @@ -20,7 +20,9 @@ class Website extends Component { * Types */ - types() { return types } + types() { + return types + } /* * Default @@ -119,7 +121,11 @@ class Website extends Component { subdomains: {} } - domainInputs.subdomains[subdomain] = { url: this.state.url } + domainInputs.subdomains[subdomain] = { + url: this.state.url, + bucketName: this.state.bucketName, + cloudFront: inputs.cloudFront + } const domainOutputs = await domain(domainInputs) outputs.domain = domainOutputs.domains[0] From 8a6984704ececebdfc2936a297571f17ed31e6ff Mon Sep 17 00:00:00 2001 From: Durgaprasad Budhwani Date: Fri, 30 Aug 2019 11:00:12 +0530 Subject: [PATCH 04/11] feat(serverless-component): Change package code --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2d208c4..eee006d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@serverless/website", - "version": "3.0.2", + "version": "3.0.9", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -12,9 +12,9 @@ "author": "Serverless, Inc.", "license": "Apache", "dependencies": { - "@serverless/aws-s3": "^2.0.7", + "@serverless/aws-s3": "^2.0.0", "@serverless/core": "^1.0.0", - "@serverless/domain": "^2.0.6", + "@serverless/domain": "^2.0.0", "aws-sdk": "^2.499.0" }, "devDependencies": { From 165f3a8acc01955e505358bf19b1ecdd4dcd40af Mon Sep 17 00:00:00 2001 From: Durgaprasad Budhwani Date: Fri, 30 Aug 2019 11:11:33 +0530 Subject: [PATCH 05/11] feat(serverless-component): Fixed typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3797cbe..3434274 100644 --- a/README.md +++ b/README.md @@ -64,8 +64,8 @@ myWebsite: bucketName: myBucket # (Optional) The Bucket name where `src` files/folder will be upload. # If not provided, it will create random bucket name and upload `src` files cloudFront: # (Optional) - waitForCreateDistribution: true # (Optional) wait for create cloudfront distrubution to complete - waitForUpdateDistribution: false # (Optional) wait for update cloudfront distrubution to complete + waitForCreateDistribution: true # (Optional) wait for create cloudfront distribution to complete + waitForUpdateDistribution: false # (Optional) wait for update cloudfront distribution to complete customOrigin: true # (Optional) wait for custom origin to avoid s3 bucket redirect during cloudfront creation env: # Environment variables to include in a 'env.js' file with your uploaded code. API_URL: https://api.com From faf1402153c7772c223276d72d7f6a5885a86b26 Mon Sep 17 00:00:00 2001 From: Jim Liddell Date: Mon, 28 Nov 2022 17:55:35 +0000 Subject: [PATCH 06/11] fix: pinning aws-sdk to work around https://github.com/aws/aws-sdk-js/issues/4285 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index eee006d..32ed3d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@serverless/website", - "version": "3.0.9", + "name": "@ublend-npm/serverless-website-component", + "version": "0.0.12", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "@serverless/aws-s3": "^2.0.0", "@serverless/core": "^1.0.0", "@serverless/domain": "^2.0.0", - "aws-sdk": "^2.499.0" + "aws-sdk": "2.1259.0" }, "devDependencies": { "babel-eslint": "9.0.0", From 92af275d926136159e06a968aca25eff5f277045 Mon Sep 17 00:00:00 2001 From: Jim Liddell Date: Fri, 2 Dec 2022 16:47:28 +0000 Subject: [PATCH 07/11] fix: backporting uncommited changes --- awsRegionUrls.json | 22 ++++++++++++++++++++++ package.json | 4 ++-- serverless.js | 27 ++++++++++++++++++++++----- 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 awsRegionUrls.json diff --git a/awsRegionUrls.json b/awsRegionUrls.json new file mode 100644 index 0000000..468f48f --- /dev/null +++ b/awsRegionUrls.json @@ -0,0 +1,22 @@ +{ + "us-east-2": "s3-website.us-east-2.amazonaws.com", + "us-east-1": "s3-website-us-east-1.amazonaws.com", + "us-west-1": "s3-website-us-west-1.amazonaws.com", + "us-west-2": "s3-website-us-west-2.amazonaws.com", + "ap-east-1": "s3-website.ap-east-1.amazonaws.com", + "ap-south-1": "s3-website.ap-south-1.amazonaws.com", + "ap-northeast-3": "s3-website.ap-northeast-3.amazonaws.com", + "ap-northeast-2": "s3-website.ap-northeast-2.amazonaws.com", + "ap-southeast-1": "s3-website-ap-southeast-1.amazonaws.com", + "ap-southeast-2": "s3-website-ap-southeast-2.amazonaws.com", + "ap-northeast-1": "s3-website-ap-northeast-1.amazonaws.com", + "ca-central-1": "s3-website.ca-central-1.amazonaws.com", + "cn-northwest-1": "s3-website.cn-northwest-1.amazonaws.com.cn", + "eu-central-1": "s3-website.eu-central-1.amazonaws.com", + "eu-west-1": "s3-website-eu-west-1.amazonaws.com", + "eu-west-2": "s3-website.eu-west-2.amazonaws.com", + "eu-west-3": "s3-website.eu-west-3.amazonaws.com", + "eu-north-1": "s3-website.eu-north-1.amazonaws.com", + "sa-east-1": "s3-website-sa-east-1.amazonaws.com", + "me-south-1": "s3-website.me-south-1.amazonaws.com" +} diff --git a/package.json b/package.json index 32ed3d2..8946840 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ublend-npm/serverless-website-component", - "version": "0.0.12", + "version": "0.0.15", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "dependencies": { "@serverless/aws-s3": "^2.0.0", "@serverless/core": "^1.0.0", - "@serverless/domain": "^2.0.0", + "@ublend-npm/serverless-compoonent-domain": "^0.0.8", "aws-sdk": "2.1259.0" }, "devDependencies": { diff --git a/serverless.js b/serverless.js index 7919d57..65523d9 100644 --- a/serverless.js +++ b/serverless.js @@ -9,13 +9,13 @@ const { configureDomainForBucket, configureBucketForRedirect } = require('./utils') +const regionUrls = require('./awsRegionUrls') /* * Website */ class Website extends Component { - /** * Types */ @@ -102,7 +102,7 @@ class Website extends Component { this.state.bucketName = inputs.bucketName this.state.region = inputs.region - this.state.url = `http://${bucketOutputs.name}.s3-website-${inputs.region}.amazonaws.com` + this.state.url = `http://${bucketOutputs.name}.${regionUrls[inputs.region]}` await this.save() const outputs = { @@ -112,20 +112,37 @@ class Website extends Component { // Configure custom domain, if specified if (inputs.domain) { - const domain = await this.load('@serverless/domain') + const domain = await this.load('@ublend-npm/serverless-compoonent-domain') const subdomain = inputs.domain.split('.')[0] const secondLevelDomain = inputs.domain.replace(`${subdomain}.`, '') const domainInputs = { + region: this.state.region, domain: secondLevelDomain, subdomains: {} } + // eslint-disable-next-line prefer-destructuring + let cloudFront = inputs.cloudFront + const { institution } = inputs + if (inputs.securityHeaders) { + cloudFront = { + ...cloudFront, + customLambdaAssociations: [ + { + functionName: `${institution}-security-headers-injector-prod-injectSecurityHeaders`, + type: 'origin-response' + } + ] + } + } + domainInputs.subdomains[subdomain] = { url: this.state.url, bucketName: this.state.bucketName, - cloudFront: inputs.cloudFront + cloudFront } + const domainOutputs = await domain(domainInputs) outputs.domain = domainOutputs.domains[0] @@ -153,7 +170,7 @@ class Website extends Component { // Remove custom domain, if specified if (this.state.domain) { this.context.debug(`Removing custom domain.`) - const domain = await this.load('@serverless/domain') + const domain = await this.load('@ublend-npm/serverless-compoonent-domain') await domain.remove() } From 5bc1f51ab6f3d9efefefe05c0c6a13e3a0288888 Mon Sep 17 00:00:00 2001 From: Jim Liddell Date: Fri, 16 Dec 2022 14:31:37 +0000 Subject: [PATCH 08/11] chore: unpin aws-sdk now that regression has been fixed --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8946840..9eebb99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ublend-npm/serverless-website-component", - "version": "0.0.15", + "version": "0.0.16", "main": "./serverless.js", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "@serverless/aws-s3": "^2.0.0", "@serverless/core": "^1.0.0", "@ublend-npm/serverless-compoonent-domain": "^0.0.8", - "aws-sdk": "2.1259.0" + "aws-sdk": "^2.1259.0" }, "devDependencies": { "babel-eslint": "9.0.0", From 688f5245bd29fd1ea1beadaf880449819aa0b950 Mon Sep 17 00:00:00 2001 From: Jim Liddell Date: Tue, 14 Mar 2023 11:46:07 +0000 Subject: [PATCH 09/11] docs: update README to detail publishing approach --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 3434274..dced1a2 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,9 @@ $ serverless ### New to Components? Checkout the [Serverless Components](https://github.com/serverless/components) repo for more information. + +  + +### Publishing new versions +New versions of this fork should be published from the `master` branch +using `npm publish`. Remember to bump the package version as appropriate before publishing. \ No newline at end of file From 8e3186d0846a65a84505ecf209b052b9993a9183 Mon Sep 17 00:00:00 2001 From: Guilherme Arantes Date: Mon, 1 May 2023 06:57:08 -0300 Subject: [PATCH 10/11] feat: disabling public access block before adding policy --- package.json | 2 +- utils.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9eebb99..51a850b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ublend-npm/serverless-website-component", - "version": "0.0.16", + "version": "0.0.18", "main": "./serverless.js", "publishConfig": { "access": "public" diff --git a/utils.js b/utils.js index 9d9ef3f..85d2910 100644 --- a/utils.js +++ b/utils.js @@ -1,6 +1,13 @@ const { utils } = require('@serverless/core') const configureBucketForHosting = async (s3, bucketName) => { + const publicAccessBlockConfig = { + BlockPublicAcls: false, + BlockPublicPolicy: false, + IgnorePublicAcls: false, + RestrictPublicBuckets: false + } + const s3BucketPolicy = { Version: '2012-10-17', Statement: [ @@ -41,6 +48,13 @@ const configureBucketForHosting = async (s3, bucketName) => { } try { + await s3 + .putPublicAccessBlock({ + Bucket: bucketName, + PublicAccessBlockConfiguration: publicAccessBlockConfig + }) + .promise() + await s3 .putBucketPolicy({ Bucket: bucketName, From 49536614b4dbb7de4d2f98d61ea87002a0841979 Mon Sep 17 00:00:00 2001 From: Cristina Radulescu Date: Fri, 22 Nov 2024 10:48:59 +0200 Subject: [PATCH 11/11] chore: Incremented version and renamed inject headers function. --- package.json | 2 +- serverless.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 51a850b..96e5cb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ublend-npm/serverless-website-component", - "version": "0.0.18", + "version": "0.0.19", "main": "./serverless.js", "publishConfig": { "access": "public" diff --git a/serverless.js b/serverless.js index 65523d9..5f51296 100644 --- a/serverless.js +++ b/serverless.js @@ -130,7 +130,7 @@ class Website extends Component { ...cloudFront, customLambdaAssociations: [ { - functionName: `${institution}-security-headers-injector-prod-injectSecurityHeaders`, + functionName: `${institution}-security-headers-injector-prod-injectHeaders`, type: 'origin-response' } ]