From da2d5672b985fd678be292f999dbb2d926240b7a Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Fri, 16 Mar 2018 18:06:24 -0700 Subject: [PATCH 1/7] First --- Makefile | 2 +- deploy.js | 14 ++++++++++++-- handler.js | 4 ++-- serverless.yml | 12 ++++++------ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 796049c..479e15b 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ invalidate: CLOUDFRONT_DISTRIBUTION_ID="${CLOUDFRONT_DISTRIBUTION_ID}" node create-invalidation.js listinvalidations: - aws cloudfront list-invalidations --distribution-id "" | head + aws cloudfront list-invalidations --distribution-id "${CLOUDFRONT_DISTRIBUTION_ID}" | tail | head -25 test: DEBUG=prerendercloud PRERENDER_SERVICE_URL="https://service.prerender.cloud" ./node_modules/jasmine/bin/jasmine.js diff --git a/deploy.js b/deploy.js index 2ca09a9..9d52891 100644 --- a/deploy.js +++ b/deploy.js @@ -4,16 +4,26 @@ if (!process.env["CLOUDFRONT_DISTRIBUTION_ID"]) { CLOUDFRONT_DISTRIBUTION_ID = process.env["CLOUDFRONT_DISTRIBUTION_ID"]; +const viewjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-viewerRequest'; +const originjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-originRequest'; +const originName1 = process.env["originName"]; +const viewerName1 = process.env["viewerName"]; +const viewer = viewjoin + ':' + viewerName1; +const origin = originjoin + ':' + originName1; +console.log(viewer); +console.log(origin); + const lambdaMappings = [ { - FunctionName: "Lambda-Edge-Prerendercloud-dev-viewerRequest", + FunctionName: viewer, EventType: "viewer-request" }, { - FunctionName: "Lambda-Edge-Prerendercloud-dev-originRequest", + FunctionName: origin, EventType: "origin-request" } ]; +console.log(lambdaMappings); const AWS = require("aws-sdk"); AWS.config.region = "us-east-1"; diff --git a/handler.js b/handler.js index 0b5fdc7..a648078 100644 --- a/handler.js +++ b/handler.js @@ -21,7 +21,7 @@ const resetPrerenderCloud = () => { // 1. prerenderToken (API token, you'll be rate limited without it) // Get it after signing up at https://www.prerender.cloud/ // note: Lambda@Edge doesn't support env vars, so hardcoding is your only option. - // prerendercloud.set("prerenderToken", "mySecretToken") + prerendercloud.set("prerenderToken", "") // 2. protocol (optional, default is https) // use this to force a certain protocol for requests from service.prerender.cloud to your origin @@ -35,7 +35,7 @@ const resetPrerenderCloud = () => { // set it, the only info we'd have access to during Lambda@Edge runtime is the host of the origin (S3) // which would require additional configuration to make it publicly accessible (and it just makes things more confusing). // example value: example.com or d1pxreml448ujs.cloudfront.net (don't include the protocol) - // prerendercloud.set("host", ""); + prerendercloud.set("host", ""); // 4. removeTrailingSlash (recommended) // Removes trailing slash from URLs to increase prerender.cloud server cache hit rate diff --git a/serverless.yml b/serverless.yml index 7881aca..0e00767 100644 --- a/serverless.yml +++ b/serverless.yml @@ -15,12 +15,12 @@ provider: role: LambdaEdgeRole # you can overwrite defaults here -# stage: dev + stage: ${env:stage} # you can define service wide environment variables here -# environment: -# variable1: value1 - + environment: + viewerName: dev + originName: dev # you can add packaging information here #package: # include: @@ -31,7 +31,7 @@ provider: # - exclude-me-dir/** functions: - viewerRequest: + viewerRequest: handler: handler.viewerRequest timeout: 5 originRequest: @@ -57,7 +57,7 @@ resources: Policies: - PolicyName: LambdaEdgeExecutionRole PolicyDocument: - Version: "2012-10-17" +# Version: "2012-10-17" Statement: - Effect: Allow Action: From 157ff2627cd03cc5cce4572c7863b843758a6175 Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Mon, 19 Mar 2018 10:51:31 -0700 Subject: [PATCH 2/7] Support Multiple Environments --- deploy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy.js b/deploy.js index 9d52891..d67ef6f 100644 --- a/deploy.js +++ b/deploy.js @@ -8,8 +8,8 @@ const viewjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-viewer const originjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-originRequest'; const originName1 = process.env["originName"]; const viewerName1 = process.env["viewerName"]; -const viewer = viewjoin + ':' + viewerName1; -const origin = originjoin + ':' + originName1; +const viewer = viewjoin //+ ':' + viewerName1; +const origin = originjoin //+ ':' + originName1; console.log(viewer); console.log(origin); From 88d71bd73768f5c3bdc5b053cd03bf39349a66cd Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Mon, 19 Mar 2018 11:15:09 -0700 Subject: [PATCH 3/7] Update handler.js --- handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handler.js b/handler.js index a648078..6f78aa1 100644 --- a/handler.js +++ b/handler.js @@ -35,7 +35,7 @@ const resetPrerenderCloud = () => { // set it, the only info we'd have access to during Lambda@Edge runtime is the host of the origin (S3) // which would require additional configuration to make it publicly accessible (and it just makes things more confusing). // example value: example.com or d1pxreml448ujs.cloudfront.net (don't include the protocol) - prerendercloud.set("host", ""); + prerendercloud.set("host", ""); // 4. removeTrailingSlash (recommended) // Removes trailing slash from URLs to increase prerender.cloud server cache hit rate From f5863cb18a35f262c17e145dee9f5fb081f51587 Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Mon, 19 Mar 2018 15:01:34 -0700 Subject: [PATCH 4/7] env rework for lambda --- handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handler.js b/handler.js index a648078..0f4c76a 100644 --- a/handler.js +++ b/handler.js @@ -35,7 +35,7 @@ const resetPrerenderCloud = () => { // set it, the only info we'd have access to during Lambda@Edge runtime is the host of the origin (S3) // which would require additional configuration to make it publicly accessible (and it just makes things more confusing). // example value: example.com or d1pxreml448ujs.cloudfront.net (don't include the protocol) - prerendercloud.set("host", ""); + prerendercloud.set("host", ""); // 4. removeTrailingSlash (recommended) // Removes trailing slash from URLs to increase prerender.cloud server cache hit rate From e7c7399b46e0daf3a097904b55f1bcdcd7e9f3ac Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Mon, 19 Mar 2018 15:41:11 -0700 Subject: [PATCH 5/7] Update handler.js --- handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handler.js b/handler.js index 0f4c76a..76dfe3b 100644 --- a/handler.js +++ b/handler.js @@ -21,7 +21,7 @@ const resetPrerenderCloud = () => { // 1. prerenderToken (API token, you'll be rate limited without it) // Get it after signing up at https://www.prerender.cloud/ // note: Lambda@Edge doesn't support env vars, so hardcoding is your only option. - prerendercloud.set("prerenderToken", "") + prerendercloud.set("prerenderToken", "mySecretToken") // 2. protocol (optional, default is https) // use this to force a certain protocol for requests from service.prerender.cloud to your origin From 8d7e88353cd2af5a14a9de48c5232be726f72a59 Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Mon, 19 Mar 2018 16:01:38 -0700 Subject: [PATCH 6/7] env change yml and hosts --- .gitignore | 4 +++- deploy.js | 4 ++-- handler.js | 2 +- serverless.yml | 9 +++++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 2b48c8b..6450435 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ node_modules jspm_packages # Serverless directories -.serverless \ No newline at end of file +.serverless + +replacements.txt diff --git a/deploy.js b/deploy.js index d67ef6f..5221cb9 100644 --- a/deploy.js +++ b/deploy.js @@ -6,8 +6,8 @@ CLOUDFRONT_DISTRIBUTION_ID = process.env["CLOUDFRONT_DISTRIBUTION_ID"]; const viewjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-viewerRequest'; const originjoin = 'Lambda-Edge-Prerendercloud-' + process.env["color"] + '-originRequest'; -const originName1 = process.env["originName"]; -const viewerName1 = process.env["viewerName"]; +const originName1 = process.env["stage"]; +const viewerName1 = process.env["stage"]; const viewer = viewjoin //+ ':' + viewerName1; const origin = originjoin //+ ':' + originName1; console.log(viewer); diff --git a/handler.js b/handler.js index 76dfe3b..438c93c 100644 --- a/handler.js +++ b/handler.js @@ -35,7 +35,7 @@ const resetPrerenderCloud = () => { // set it, the only info we'd have access to during Lambda@Edge runtime is the host of the origin (S3) // which would require additional configuration to make it publicly accessible (and it just makes things more confusing). // example value: example.com or d1pxreml448ujs.cloudfront.net (don't include the protocol) - prerendercloud.set("host", ""); + prerendercloud.set("host", "<${color}.test.com DNS Example CNAME>"); // 4. removeTrailingSlash (recommended) // Removes trailing slash from URLs to increase prerender.cloud server cache hit rate diff --git a/serverless.yml b/serverless.yml index 0e00767..3179c07 100644 --- a/serverless.yml +++ b/serverless.yml @@ -16,11 +16,12 @@ provider: # you can overwrite defaults here stage: ${env:stage} + color: ${env:color} -# you can define service wide environment variables here - environment: - viewerName: dev - originName: dev +# you can not define service wide environment variables here as Lambda won't accept them +# environment: +# viewerName: dev +# originName: dev # you can add packaging information here #package: # include: From 65bc21b71ba0d1a4cdc1c68245acef3357fb9807 Mon Sep 17 00:00:00 2001 From: Printed Hart Date: Tue, 3 Apr 2018 09:05:37 -0700 Subject: [PATCH 7/7] Update viewerRequestSpec.js --- spec/viewerRequestSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/viewerRequestSpec.js b/spec/viewerRequestSpec.js index a52998b..1a1ff7b 100644 --- a/spec/viewerRequestSpec.js +++ b/spec/viewerRequestSpec.js @@ -198,7 +198,7 @@ describe("viewerRequest", function() { // since shouldPrerender is false, it rewrites uri for cache-key describe("curl user-agent", function() { - withUserAgentAndUri("curl", "/nexted/path"); + withUserAgentAndUri("curl", "/nested/path"); runHandlerWithViewerRequestEvent(); itDoesNotPrerender("curl", "/index.html");