getting started with aws lambda and the serverless cloud

43
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Dr. Tim Wagner General Manager, AWS Lambda and Amazon API Gateway AWS Chicago Summit, April 19, 2016 Getting Started with AWS Lambda and the Serverless Cloud

Upload: amazon-web-services

Post on 06-Apr-2017

1.449 views

Category:

Technology


0 download

TRANSCRIPT

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Dr. Tim Wagner

General Manager, AWS Lambda and Amazon API Gateway

AWS Chicago Summit, April 19, 2016

Getting Started with AWS Lambda

and the Serverless Cloud

What is serverless computing?

• VMs

• Machine as the unit of scale

• Abstracts the hardware

• Containers

• Application as the unit of scale

• Abstracts the OS

• Serverless

• Functions as the unit of scale

• Abstracts the language runtime

ECS

EC2

AWS Lambda

How do I choose?

• VMs

• “I want to configure machines,

storage, networking, and my OS”

• Containers

• “I want to run servers, configure

applications, and control scaling”

• Serverless

• “Run my code when it’s needed”

ECS

EC2

AWS Lambda

Microservices and AWS Lambda

AWS Lambda + Amazon API Gateway is the

easiest way to create microservices

• Event handlers one function per event type

• Serverless backends one function per API / path

• Data processing one function per data type

Agenda

Overview

Use cases

Recent launches and best practices

Demo

Q & A

AWS Lambda: Serverless computing

Run code without servers. Pay only for the compute time you consume. Be happy.

Triggered by events or called from APIs:

• PUT to an Amazon S3 bucket

• Updates to Amazon DynamoDB table

• Call to an Amazon API Gateway endpoint

• Mobile app back-end call

• And many more…

Makes it easy to:

• Perform real-time data processing

• Build scalable back-end services

• Glue and choreograph systems

Continuous

scaling

No servers to

manage

Never pay for idle

– no cold servers

(only happy

accountants)

Benefits of AWS Lambda

Pay-per request

• Buy compute time in

100 ms increments for

21 microcents

• Request charge of 20

microcents

• 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

Using AWS Lambda

Bring your own code

• Node.js, Java, Python

• Bring your own libraries

(even native ones)

Simple resource model

• Select power rating from

128 MB to 1.5 GB

• CPU and network allocated

proportionately

• Reports actual usage

Flexible authorization

• Securely grant access to

resources, including VPCs

• Fine-grained control over

who can call your functions

Flexible use

• Call or send events

• Integrated with other AWS

services

• Build whole serverless

ecosystems

Using AWS Lambda

Programming model

• AWS SDK built in (Python

and Node.js)

• Eclipse plugin (Java)

• Lambda is the “webserver”

• Use processes, threads,

/tmp, sockets normally

Stateless

• Persist data using Amazon

DynamoDB, S3, or

ElastiCache

• No affinity to infrastructure

(can’t “log in to the box”)

Authoring functions

• Author directly using the

console WYSIWYG editor

• Package code as a .zip and

upload to Lambda or S3

• Plugins for Eclipse and

Visual Studio

• Command line tools

Monitoring and logging

• Built-in metrics for requests,

errors, latency, and throttles

• Built-in logs in Amazon

CloudWatch Logs

But what *is* AWS Lambda?

Linux containers as an implementation, not a programming

or deployment abstraction

• Process and network isolation, cgroups, seccomp, …

The world’s biggest bin-packing algorithm

• High speed, highly distributed work routing and placement

Predictive capacity management

• Purpose-built, massively scaled language runtime delivery

service

Swagger interpreter (API Gateway)

Amazon API Gateway: Serverless APIs

Internet

Mobile apps

Websites

Services

AWS Lambda

functions

AWS

API Gateway

cache

Endpoints on

Amazon EC2

Any other publicly

accessible endpointAmazon

CloudWatch

Amazon

CloudFrontAmazon

API Gateway

Benefits of Amazon API Gateway

Create a unified API

front end for

multiple

microservices

DDoS protection

and throttling for

back-end systems

Authenticate and

authorize requests

AWS Lambda, API Gateway, and AWS IoT regions

Available regions

Use cases

Lambda: Use cases

Serverless app

ecosystems

Data processing Back ends

Use case: Data processing

Example: Amazon S3 bucket triggers

Amazon S3 bucket events

Original objectCompressed object

1

2

3

AWS Lambda

Why functions are the right answer

Amazon

DynamoDB

Call Events

Customize

Use case: Automatically scalable back ends

1. AWS Mobile SDK + Amazon Cognito for mobile app

Or AWS IoT for devices

2. AWS Lambda runs the code

3. Amazon API Gateway (if you want your own endpoint)

4. Amazon DynamoDB holds the data

AWS LambdaAmazon

DynamoDB

Use case: Serverless web apps

1. Amazon S3 for serving static content

2. AWS Lambda for dynamic content

3. Amazon API Gateway for https access

4. Amazon DynamoDB for NoSQL data storage

Dynamic content

in AWS Lambda

Data stored in

Amazon

DynamoDB

API GatewayStatic content in

Amazon S3

Use case: New app ecosystems:

Alexa apps + Slack = serverless bots!

Alexa, tell Slack to

send, “I’m giving the

demo now.”

Message retrieval through scheduled

polling

Kevin says,

“Break a leg!”

Message upload

(via Slack API)

Team

(channel users)

Slack

Recent launches and

best practices

re:Invent 2015

• Python

• Scheduled functions

• Longer running times (5 min.)

• Versioning

Recent launches

Since re:Invent

• Higher code storage limits (from 5 GB

to 75 GB)

• Custom VPC

• 1-minute schedules

• Regional launch: Frankfurt

• Node.js 4.3.2

• 1-click CORs setup

• Stage variables

• Custom (Lambda) authorizers

• Builtin Swagger import/export

• AWS CloudFormation support for API

Gateway and versions

Function schedules: The how-to guide

How can I keep a function warm (no cold starts)?

Schedule it!

How can I poll a queue (like SQS)?

Schedule a function to read the queue.

How can I get more timers?

Have one scheduled function async invoke other functions.

How can I get granularity finer than 1 minute?

Run a background timer in your scheduled function.

Function versioning: The how-to guide

How can I get mutable configuration info?

Read it (e.g. from DynamoDB) during function initialization.

Wrap your config in a function and call it from your published code.

How do I “roll back” in AWS Lambda?

Using aliases, just switch what the alias points to.

(As a collection, add API Gateway and/or CloudFormation.)

How do I do blue/green deployments?

AWS Lambda handles fleet deployments, but if you want to shape

traffic, put a second “traffic cop” function in front.

How can I lock a client/device onto an old version?

Point them directly to that version’s ARN.

AWS Lambda VPC basics

All Lambda functions run in a VPC, all the time

You never need to “turn on” security – it’s always on

You can also grant Lambda functions access to resources in your own VPC

How: Add VPC subnet IDs and security group IDs to the function config

Typical uses: RDB, ElastiCache, private EC2 endpoints

Allows access to peered VPCs, VPN endpoints, and private S3 endpoints

Functions configured for VPC access lose internet access…

unless you have managed NAT or a NAT instance in the VPC

…Even if you have “Auto-assign Public IP” enabled

…Even if you have an internet gateway set up in your VPC

…Even if your security group allows all outbound traffic

AWS Lambda VPC Best practices

VPC is optional – don’t turn in on unless you need it.

The ENIs used by Lambda’s VPC feature count against

your quota.

Ensure you have enough to match your peak concurrency levels

(we’ll consolidate where we can).

DO NOT delete or rename these ENIs!

Ensure your subnets have enough IPs for those ENIs.

Specify at least one subnet in each Availability Zone

Otherwise, Lambda will obey, but can’t be as fault-tolerant.

Demo

The serverless compute manifesto

Functions are the unit of deployment and scaling.

No machines, VMs, or containers visible in the programming model.

Permanent storage lives elsewhere.

Scales per request. Users cannot over- or under-provision capacity.

Never pay for idle (no cold servers/containers or their costs).

Implicitly fault-tolerant because functions can run anywhere.

BYOC – Bring your own code.

Metrics and logging are a universal right.

Join the serverless revolution!

Product manager or business

analyst? Check out

aws.amazon.com/lambda for

scenarios and customer stories.

Developer? 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 a mobile, voice, or IoT

back end with a few lines of

code.

Q & A

Follow AWS Lambda and Amazon API Gateway!

aws.amazon.com/blogs/computeaws.amazon.com/lambdaAWS Lambda forum

t: @timallenwagner

Remember to complete

your evaluations in the

Guidebook mobile app.

Follow AWS Lambda and Amazon API Gateway!

aws.amazon.com/blogs/computeaws.amazon.com/lambdaAWS Lambda forum

t: @timallenwagner

Appendix

Reference architecture: IoT back end using AWS Lambda and

Amazon Kinesis

https://s3.amazonaws.com/awslambda-reference-architectures/iot-backend/lambda-refarch-iotbackend.pdf

https://github.com/awslabs/lambda-refarch-iotbackend

Reference architecture: Mobile back end using AWS Lambda and

Amazon API Gateway

https://s3.amazonaws.com/awslambda-reference-architectures/mobile-backend/lambda-refarch-mobilebackend.pdf

https://github.com/awslabs/lambda-refarch-mobilebackend

Reference architecture: Web applications with AWS Lambda

https://s3.amazonaws.com/awslambda-reference-architectures/web-app/lambda-refarch-webapp.pdf

https://github.com/awslabs/lambda-refarch-webapp

Reference architecture: Real-time file processing using AWS

Lambda

https://s3.amazonaws.com/awslambda-reference-architectures/file-processing/lambda-refarch-fileprocessing.pdf

https://github.com/awslabs/lambda-refarch-fileprocessing

Reference architecture: Real-time stream processing using AWS

Lambda and Amazon Kinesis

https://s3.amazonaws.com/awslambda-reference-architectures/stream-processing/lambda-refarch-streamprocessing.pdf

https://github.com/awslabs/lambda-refarch-streamprocessing