3 Answers
- Newest
- Most votes
- Most comments
1
Hi Simon,
Lambda@Edge allows you to run Lambda functions to customize the content delivered through your CloudFront distribution.
Example of a Node.js Lambda@Edge function:
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const headers = response.headers;
// only modify HTML content !!
if (headers['content-type'] && headers['content-type'][0].value.includes('text/html')) {
let body = response.body;
// generate a nonce value - you could generate a dynamic value
const nonce = 'generatedNonceValue';
// replace the placeholder in the body then update it
body = body.replace('<!-- NONCE_PLACEHOLDER -->', `<script>var nonce = "${nonce}";</script>`);
response.body = body;
}
// return
callback(null, response);
};
Hope this helps.
answered a month ago
0
Hi,
is it for lambda node v16, v18 or v20? and after make, i pout in Viewer request, Viewer response, Origin request or Origin response in cloudfront?
Regards
answered a month ago
0
since i try to use body.replace before and seem make cloudfront return 503.
answered a month ago
Relevant content
- asked 4 years ago
- Accepted Answerasked 2 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated 2 years ago
For modifying HTML with Lambda@Edge, you can use Node.js versions 14.x or 16.x. Deploy the Lambda function to trigger on the Viewer Response or Origin Response events in CloudFront. If you encountered a 503 error, it might be due to handling large bodies or CloudFront limitations. Ensure your function doesn't exceed Lambda's memory and time limits, and check CloudWatch Logs for errors.