CloudFront Functions vs Lambda@Edge
CloudFront Functions
- is a CloudFront native feature (code is managed entirely within CloudFront) and visible only on the CloudFront dashboard.
- supports lightweight functions written only in JavaScript language
- runs in Edge Locations
- has process-based isolation
- supports Viewer Request, Viewer Response trigger events only
- Viewer Request: after CloudFront receives the request from the Viewer
- Viewer Response: before CloudFront forwards the response to the Viewer
- supports sub-millisecond execution time
- scales to millions of requests/second
- as they are built to be more scalable, performant, and cost-effective, they have the following limitations
- no network access
- no file system access
- cannot access the request body
Lambda@Edge
- are Lambda functions and visible on the Lambda dashboard.
- supports Node.js and Python languages, currently
- runs in Regional Edge Caches
- has VM-based isolation
- supports Viewer Request, Viewer Response, Origin Request, and Origin Response trigger events.
- Viewer Request: after CloudFront receives the request from the Viewer
- Viewer Response: before CloudFront forwards the response to the Viewer
- Origin Request: before CloudFront forwards the request to the Origin
- Origin Response: after CloudFront receives the response from the Origin
- supports longer execution time, 5 seconds for viewer triggers and 30 seconds for origin triggers
- scales to 1000s of requests/second
- has network and file system access
- can access the request body
AWS Certification Exam Practice Questions
- Questions are collected from Internet and the answers are marked as per my knowledge and understanding (which might differ with yours).
- AWS services are updated everyday and both the answers and questions might be outdated soon, so research accordingly.
- AWS exam questions are not updated to keep up the pace with AWS updates, so even if the underlying feature has changed the question might not be updated
- Open to further feedback, discussion and correction.
- You’ve been given the requirement to customize the content which is distributed to users via a CloudFront Distribution. The content origin is an S3 bucket and the customization attribute exists in the request body. How could you achieve this?
- Add an event to the S3 bucket. Make the event invoke a Lambda function to customize the content before rendering
- Use CloudFront Functions
- Use Lambda@Edge
- Use a separate application on an EC2 Instance for this purpose.
References
AWS_CloudFront_Functions_Lambda@Edge_Comparison