Top Banner
©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
47
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: AWS Lambda: Event-driven Code in the Cloud

©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

Page 2: AWS Lambda: Event-driven Code in the Cloud

Apps Without Servers

What’s the easiest server to manage?

The one somebody else takes care of!

Page 3: AWS Lambda: Event-driven Code in the Cloud

Five Sample Use Cases for AWS Lambda

Serverless

Microservices

Adding a

Feature to

Amazon S3

Extending

Platforms

Scalable

Mobile

Backends

Real-Time

Streaming

Analysis

Page 4: AWS Lambda: Event-driven Code in the Cloud

Requirements

• Effortless scaling / no provisioning

• Built-in rollout

• Highly available by default

• BYOC*

• Never pay for idle

*Bring Your Own Code

Page 5: AWS Lambda: Event-driven Code in the Cloud

A Scalable Mobile Backend

Page 6: AWS Lambda: Event-driven Code in the Cloud

A Scalable Mobile Backend…

Without Coding the Mobile Backend

Page 7: AWS Lambda: Event-driven Code in the Cloud

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…

Page 8: AWS Lambda: Event-driven Code in the Cloud

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

Page 9: AWS Lambda: Event-driven Code in the Cloud

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

Page 10: AWS Lambda: Event-driven Code in the Cloud

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!

Page 11: AWS Lambda: Event-driven Code in the Cloud

Serverless Microservices

Page 12: AWS Lambda: Event-driven Code in the Cloud

HTTP Endpoints

Let’s see it in action…

Page 13: AWS Lambda: Event-driven Code in the Cloud

SquirrelBin Architecture

Static web

content served

from

Amazon S3

“Codeless”

Backend +

Acorn

ExecutionAcorns Stored

in Amazon

DynamoDB

Page 14: AWS Lambda: Event-driven Code in the Cloud

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

Page 15: AWS Lambda: Event-driven Code in the Cloud

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

Page 16: AWS Lambda: Event-driven Code in the Cloud

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

Page 17: AWS Lambda: Event-driven Code in the Cloud

Extending Other Platforms

Page 18: AWS Lambda: Event-driven Code in the Cloud

Compute for Connected Devices

• Alexa Skills Kit—build

voice-enabled apps

• Uses AWS Lambda

as a connected

device/IoT platform

Page 19: AWS Lambda: Event-driven Code in the Cloud

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

Page 20: AWS Lambda: Event-driven Code in the Cloud

GitHub Event Responder

Events from

GitHub

Team

(repository users)

GitHub

Amazon SNS

Messages

Page 21: AWS Lambda: Event-driven Code in the Cloud

Ricky RobinettDeveloper Evangelist

Page 22: AWS Lambda: Event-driven Code in the Cloud

AWS Lambda Integration Partners

Page 23: AWS Lambda: Event-driven Code in the Cloud

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

Page 24: AWS Lambda: Event-driven Code in the Cloud

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

Page 25: AWS Lambda: Event-driven Code in the Cloud

Extending Amazon S3

Page 26: AWS Lambda: Event-driven Code in the Cloud

Extending Amazon S3 with Auto-Compress

Amazon S3 Bucket Events AWS Lambda

Original object Compressed object

1

2

3

Page 27: AWS Lambda: Event-driven Code in the Cloud

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…

Page 28: AWS Lambda: Event-driven Code in the Cloud

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

Page 29: AWS Lambda: Event-driven Code in the Cloud

AWS Services You Can Extend Today

Amazon

S3

Amazon

DynamoDB

AWS

CloudTrail

Amazon

CloudWatch

Logs

AWS

CloudFormation

Amazon

Kinesis

Amazon

Cognito

Amazon

SNS

Page 30: AWS Lambda: Event-driven Code in the Cloud

Amazon CloudWatch Alarm Responder

Amazon

CloudWatch

Alarms

SNS Messages

Page 31: AWS Lambda: Event-driven Code in the Cloud

Real-Time Streaming Analysis

Page 32: AWS Lambda: Event-driven Code in the Cloud

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

Page 33: AWS Lambda: Event-driven Code in the Cloud

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

Page 34: AWS Lambda: Event-driven Code in the Cloud

Aside: Shards and Ordering

Shard 1

• Record 1a

• Record 1b

Page 35: AWS Lambda: Event-driven Code in the Cloud

Aside: Shards and Ordering

Shard 1

• Record 1a

• Record 1b

Shard 2

• Record 2a

• Record 2b

Shard 3

• Record 3a

• Record 3b

Page 36: AWS Lambda: Event-driven Code in the Cloud

Aside: Shards and Ordering

Shard 1 Shard 2 Shard 3

• Record 3a

• Record 3b

Page 37: AWS Lambda: Event-driven Code in the Cloud

Practicalities

Page 38: AWS Lambda: Event-driven Code in the Cloud

AWS Lambda Regions

AWS Lambda

Region

NEW: Tokyo

launched 6/29

Page 39: AWS Lambda: Event-driven Code in the Cloud

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.

Page 40: AWS Lambda: Event-driven Code in the Cloud

Build and Deploy Integration

Jenkins Grunt

AWS CloudFormation Amazon S3

Partners

Page 41: AWS Lambda: Event-driven Code in the Cloud

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)

Page 42: AWS Lambda: Event-driven Code in the Cloud

We’ve Been Busy.

Now, It’s Your Turn.

Page 43: AWS Lambda: Event-driven Code in the Cloud

Go to the AWS Lambda console,

create a function, and run it.(The first million invokes are on us!)

Page 44: AWS Lambda: Event-driven Code in the Cloud

Congrats, you’re a Lambda

function expert! Add an event

source or an HTTP endpoint.

Page 45: AWS Lambda: Event-driven Code in the Cloud

Build the world’s easiest mobile

backend.(Hint: Start with the built-in CRUD sample!)

Page 46: AWS Lambda: Event-driven Code in the Cloud

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!)

Page 47: AWS Lambda: Event-driven Code in the Cloud

NEW YORK