Post on 21-Apr-2017
clda.co/lambda-‐edge-‐london
AWS Lambda@Edge (Preview)
Serverless & Originless on AWS
4/5/2017
About Me
@alex_casalboni
clda.co/lambda-‐edge-‐london
Computer Science Background
Master in Sound & Music Engineering
Sr. SoEware Engineer & Web Developer
Cloud Evangelist @ Cloud Academy
Agenda
What is Lambda@Edge?
Benefits and use cases
Preview limitaKons
My personal experiment
clda.co/lambda-‐edge-‐london
What is Lambda@Edge?
How does it work and how’s it different from AWS Lambda?
clda.co/lambda-‐edge-‐london
AWS Lambda & Regions
us-‐east-‐1
clda.co/lambda-‐edge-‐london
AWS Lambda & Regions
us-‐east-‐1 eu-‐west-‐1
clda.co/lambda-‐edge-‐london
AWS’s CDN & PoPs
70+ PoPs
clda.co/lambda-‐edge-‐london
Amazon CloudFront
StaKc content (web assets, videos, etc.)
Dynamic content (cache)
70+ Edge LocaKons
Custom SSL & domain name
Cache InvalidaKon
AnalyKcs dashboard
Custom origins (e.g. EC2)
Supports cookies & querystrings
clda.co/lambda-‐edge-‐london
Hits/Misses/Errors
clda.co/lambda-‐edge-‐london
Lambda@Edge Architecture
clda.co/lambda-‐edge-‐london
CloudFront Triggers
Viewer Request
Viewer Response
Origin Request
Origin Response
Before cache hit/miss
A8er cache hit/miss
Only if cache miss, before forwarding
Only if cache miss, a8er forwarding
clda.co/lambda-‐edge-‐london
Benefits and use cases
Use cases categorisa@on and analysis
clda.co/lambda-‐edge-‐london
AWS Lambda@Edge Use cases
Request/Response manipulaKon
Dynamic content generaKon
Pure latency opKmizaKon
clda.co/lambda-‐edge-‐london
1. Request/Response manipulaQon
Custom HTTP headers
Adapt to client capabiliKes
Add Kmezone-‐related info
A/B tesKng
URL rewriKng / redirects
Cookies manipulaKon
clda.co/lambda-‐edge-‐london
2. Dynamic content generaQon *
Custom error pages
Custom signup forms
Opzimized JS code (Polyfill.io)
Dynamic HTML
* Never hit the origin!
clda.co/lambda-‐edge-‐london
3. Pure latency opQmizaQon *
401 errors if missing auth
Custom edge-‐based logging
Custom data validaKon
Custom data transformaKon
* Assuming dynamic origin
clda.co/lambda-‐edge-‐london
Preview limitaKons
What restric@ons do you encounter during the preview phase?
clda.co/lambda-‐edge-‐london
LimitaQons (preview only)
Max 50ms
Only 128MB (RAM)
Only 1MB of code
Only Node.js 4.3
clda.co/lambda-‐edge-‐london
Slightly different programming model
Manual handling of HTTP convenKons (OPTIONS, 204, etc.)
LimitaQons (permanent)
No HTTP calls
No AWS SDK
No VPC/DLQ config
No real-‐Kme logging
No 3rd-‐party monitoring
Slow deploy (up to 15min)
clda.co/lambda-‐edge-‐london
My personal experiment
Finally some code :)
clda.co/lambda-‐edge-‐london
Render dynamic HTML with Lambda@Edge
< origin-‐less demo >
clda.co/lambda-‐edge-‐london
clda.co/lambda-‐edge-‐gist
clda.co/lambda-‐edge-‐demo