aws lambda: event-driven code in the cloud

47
©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

Upload: amazon-web-services

Post on 11-Aug-2015

696 views

Category:

Technology


2 download

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

Apps Without Servers

What’s the easiest server to manage?

The one somebody else takes care of!

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

A Scalable Mobile Backend

A Scalable Mobile Backend…

Without Coding the Mobile Backend

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!

Serverless Microservices

HTTP Endpoints

Let’s see it in action…

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

Extending Other Platforms

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

GitHub Event Responder

Events from

GitHub

Team

(repository users)

GitHub

Amazon SNS

Messages

Ricky RobinettDeveloper Evangelist

AWS Lambda Integration Partners

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

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

Amazon CloudWatch Alarm Responder

Amazon

CloudWatch

Alarms

SNS Messages

Real-Time Streaming Analysis

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

Aside: Shards and Ordering

Shard 1

• Record 1a

• Record 1b

Shard 2

• Record 2a

• Record 2b

Shard 3

• Record 3a

• Record 3b

Aside: Shards and Ordering

Shard 1 Shard 2 Shard 3

• Record 3a

• Record 3b

Practicalities

AWS Lambda Regions

AWS Lambda

Region

NEW: Tokyo

launched 6/29

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.

Build and Deploy Integration

Jenkins Grunt

AWS CloudFormation Amazon S3

Partners

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)

We’ve Been Busy.

Now, It’s Your Turn.

Go to the AWS Lambda console,

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

Congrats, you’re a Lambda

function expert! Add an event

source or an HTTP endpoint.

Build the world’s easiest mobile

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

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

NEW YORK