aws lambda: event-driven code in the cloud
TRANSCRIPT
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS Lambda:
Event-Driven Code in the Cloud
Dr. Tim Wagner, General Manager AWS Lambda
July 9, 2015 | New York, NY
Five Sample Use Cases for AWS Lambda
Serverless
Microservices
Adding a
Feature to
Amazon S3
Extending
Platforms
Scalable
Mobile
Backends
Real-Time
Streaming
Analysis
Requirements
• Effortless scaling / no provisioning
• Built-in rollout
• Highly available by default
• BYOC*
• Never pay for idle
*Bring Your Own Code
Building a Mobile Backend with AWS Lambda
1. Create an Amazon
DynamoDB database.
2. Pick the “Simple Mobile Backend”
sample code in the Lambda console.
3. Build your app with the AWS Mobile SDK.
AWS Lambda
Let’s see it in action…
Building a Mobile Backend: Add-ons
Want users to log in?
Use Amazon Cognito Identity.
Need device-specific rendering?
Device info is in the function’s context object.
AWS Lambda
What Makes This Easy?
Eliminating the distance between
“Works on my box” and “Ship it to customers!”
Never Pay
for Idle
Built-In
Web Server
Auto Patch
Auto
Deploy
Auto ScaleBuilt-In
Monitoring
Built-In
Logging
Built-In
Security
HTTP
Endpoint
Diving Deeper: Programming Model
• Two main languages– Node.js
– Java 8
• Plus Scala, Clojure, and other “jvm” languages
• Run background processes– Node.js or Java
– Also Python, csh, or your own executable
• Native libraries are welcome!
SquirrelBin Architecture
Static web
content served
from
Amazon S3
“Codeless”
Backend +
Acorn
ExecutionAcorns Stored
in Amazon
DynamoDB
New Capabilities for AWS Lambda Functions
• Public HTTP endpoints
• Throttling controls
• API Key management
• Results caching
• SDK Generation and Swagger support
• Apache Velocity templates
• API mocking
Learn More About Amazon API Gateway
Build and Manage Your APIs with
Amazon API Gateway
Simon Poile, General Manager
4:30 p.m.–5:30 p.m.
Room 1E12
Diving Deeper: Programming Model
• Run your code sync or async from…– Any AWS SDK
– AWS Mobile SDK
– REST call
– AWS Command Line Interface
– Inside AWS Lambda itself (yep, it self-hosts)
• Code is pre-credentialed– Choose a role and Lambda will assume it for you
– Cross account access is supported
Compute for Connected Devices
• Alexa Skills Kit—build
voice-enabled apps
• Uses AWS Lambda
as a connected
device/IoT platform
Slack Demo Architecture
Alexa, tell Slack to
send, “I’m giving the
demo now.”
Message Retrieval
(via Amazon SQS
queue)
Kevin says,
“Break a leg!”
Message Upload
(via Slack API)
Team
(channel users)
Slack
What Makes This Easy?
For the Platform Provider
• Nothing to host
• Nothing to license
• No capacity management
• No web service to run
• Low latency sync calls
• “Fire and forget” events
For the App Developer
• Low cost
• Forever free tier
• No infrastructure
• No “boilerplate” code
• Language choice
• No library restrictions
Diving Deeper: Resource Sizing
• AWS Lambda offers 12 “power levels”
• Higher levels offer more memory and more CPU power– 128 MB, lowest CPU power
– 1.5 GB, highest CPU power
• Higher power levels == lower latency for CPU-bound and bursty tasks
• Compute price scales with the power level
Extending Amazon S3 with Auto-Compress
Amazon S3 Bucket Events AWS Lambda
Original object Compressed object
1
2
3
How to Add a Feature to Amazon S3
1. Grab Java compress sample from the web.
2. Start with the Amazon S3 event sample:1. GET original from S3
2. Compress
3. PUT compressed version back to S3
3. Pick some S3 bucket(s) to apply it to.
Let’s see it in action…
What Makes This Easy? Request-Level Scaling!
• Who knows the event
rate? S3 and Lambda!
• You can’t over or under
provision (by design)
• Pay only for what you
use
AWS Services You Can Extend Today
Amazon
S3
Amazon
DynamoDB
AWS
CloudTrail
Amazon
CloudWatch
Logs
AWS
CloudFormation
Amazon
Kinesis
Amazon
Cognito
Amazon
SNS
Easy Real-Time Streaming Architecture
Data Ingestion
with Amazon
Kinesis
(PUT record)
Records
retrieved by
AWS Lambda
Your code runs
once per [batch
of] records
Amazon
S3
Amazon
DynamoDB
Smart Devices
Click
Stream
Log
Data
Amazon
Redshift
Learn more: Watch the Lambda Webinar on Streaming Data
Diving Deeper: Retries and Event Ordering
• Three possibilities:– Call your AWS Lambda function synchronously.
• Using the AWS SDK? Set your retry logic there.
• Direct RESTful call to Lambda? You control retries entirely.
• Ordering is up to the caller.
– Amazon S3 or SNS trigger your Lambda function, or you call Lambda asynchronously.
• 3 tries, total, then the event is discarded
• Unordered (“loosely ordered”)
– Lambda polls an Amazon Kinesis or Amazon DynamoDB update stream for you
• No limit on tries, ordering preserved
Aside: Shards and Ordering
Shard 1
• Record 1a
• Record 1b
Shard 2
• Record 2a
• Record 2b
Shard 3
• Record 3a
• Record 3b
Fine-grained pricing
• Buy compute time in
100 ms increments
• Low request charge
• No hourly, daily, or
monthly minimums
• No per-device fees
Never pay for idle.
Free Tier
1 million requests and 400,000 GBs of compute.
Every month, every customer.
Coming Soon: Function Versioning
• How it works:– Develop at HEAD—updates replace existing code
– Publish to create an immutable snapshot
– Every function has a default version (which can be HEAD)
– Callers can request
• The default version
• A specific version
• HEAD
• APIs support staging and versioning (now)
Follow AWS Lambda!aws.amazon.com/blogs/compute
aws.amazon.com/lambda
AWS Lambda Forum
Your Feedback is Important to AWSPlease complete the session evaluation and tell us what you think.
(I read every comment!)