SlideShare a Scribd company logo
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Building	a	serverless	data	pipeline
Julien	Simon,	Principal	Technical	Evangelist,	AWS	
julsimon@amazon.fr		
@julsimon
Werner	Vogels,	CTO,	Amazon.com	
AWS	re:Invent	2015
AWS	Lambda	
•  Deploy	pure	funcJons	in	Java,	Python	and	Node.js	
•  Works	nicely	with	AWS	managed	services:		
Amazon	S3,	Amazon	DynamoDB,	etc.	
•  Build	event-driven	applicaJons	
•  Build	RESTful	APIs	in	conjuncJon	with	Amazon	API	Gateway	
	
•  Pay	as	you	go:	number	of	requests	+	execuJon	Jme	(100ms	slots)
Managed	services	
+		
AWS	Lambda	
=		
Serverless	architecture
Another	way	to	put	it…	
	
Tim	Wagner,		
General	Manager,		
AWS	Lambda	
	
	
Serverless	conference,	NYC,	May	2016
MOBILE
CHAT APP
AD DATA ANALYTICS
AND ROUTING
MOBILE APP
ANALYTICS
IMAGE CONTENT
FILTERING
REAL-TIME VIDEO
AD BIDDING
NEWS CONTENT
PROCESSING
GENE SEQUENCE
SEARCH
CLOUD
TELEPHONY
DATA
PROCESSING
WEB
APPLICATIONS WEB APPLICATIONS
THREAT INTELLIGENCE
AND ANALYTICS
NEWS CONTENT
PROCESSING
GAME METRICS ANALYTICS
Selected	serverless	customers	
PRODUCT
RECOMMANDATION
https://blog.instant.cm/a-serverless-architecture-with-zero-maintenance-and-infinite-scalability-b00c2ceb4c2b
http://highscalability.com/blog/2015/12/7/the-serverless-start-up-down-with-servers.html
Instant.cm:	100%	Serverless
https://read.acloud.guru/serverless-the-future-of-software-architecture-d4473ffed864
A	Cloud	Guru:	100%	Serverless
AWS Lambda ‘Hello World’ (Python)
1.  Write a simple Lambda function in Python
2.  Create a REST API with API Gateway (resource + POST method)
3.  Deploy the API
4.  Invoke the API with ‘curl’
A simple Lambda function in Python
def lambda_handler(event,context):
   result = event['value1'] + event['value2']
   return result
aws lambda create-function --function-name myFunc 
--handler myFunc.lambda_handler --runtime python2.7 
--zip-file fileb://myFunc.zip --memory-size 128 
--role arn:aws:iam::ACCOUNT_NUMBER:role/lambda_basic_execution
curl -H "Content-Type: application/json" 
-X POST -d "{"value1":5, "value2":7}" 
https://API_ENDPOINT/STAGE/RESOURCE
12
AWS Lambda in Java with Eclipse
https://java.awsblog.com/post/TxWZES6J1RSQ2Z/Testing-Lambda-functions-using-the-AWS-Toolkit-for-Eclipse
AWS Lambda ‘Hello World’ (Java)
1.  In Eclipse, write a simple Lambda function triggered by an S3 event
2.  Unit-test the function with Junit
3.  Using the AWS Eclipse plug-in, upload and run the function in AWS
4.  Run the function again in the AWS Console
AWS Lambda with the Serverless framework
http://github.com/serverless/serverless
•  Run/test AWS Lambda functions locally, or remotely
•  Auto-deploys & versions your Lambda functions
•  Auto-deploys your REST API to AWS API Gateway
•  Auto-deploys your Lambda events
•  Support for multiple stages
•  Support for multiple regions within stages
•  Manage & deploy AWS CloudFormation resources
Building	a	serverless	data	pipeline	
Lambda
DynamoDB
Kinesis
Firehose
API Gateway
HTTP POST 

/prod/logger writeTo
Kinesis
DynamoDB
ToFirehose
S3
eventTable
DynamoDB
streams
bucket
EMR,
Redshift,
…
firehoseToS3
Kinesis StreamsLambda Lambda
KinesisTo
DynamoDB
Web apps
Step 1: create DynamoDB table
aws dynamodb create-table 
--table-name eventTable 
--attribute-definitions 
AttributeName=userId,AttributeType=N 
AttributeName=timestamp,AttributeType=N 
--key-schema 
AttributeName=userId,KeyType=HASH 
AttributeName=timestamp,KeyType=RANGE 
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 
--stream-specification StreamEnabled=true,StreamViewType=NEW_IMAGE
eventTable
DynamoDB
Step 2: IAM role for Lambda function
aws iam create-role 
--role-name writeToDynamoDB_role 
--assume-role-policy-document file://lambda_trust_policy.json
aws iam create-policy 
--policy-name writeToDynamoDB_policy 
--policy-document file://writeToDynamoDB_policy.json
aws iam attach-role-policy 
--role-name writeToDynamoDB_role 
--policy-arn WRITETODYNAMODB_POLICY_ARN
Step 3: create Lambda function
S3
DynamoDB
eventTable
Web apps
dynamodb.
put_item()
Lambda
aws lambda create-function 
--function-name writeToDynamoDB 
--role WRITETODYNAMO_DB_ROLE 
--zip-file fileb://writeToDynamoDB.zip 
--handler writeToDynamoDB.lambda_handler 
--runtime python2.7 
--memory-size 128 
--description "Write events to DynamoDB”
Step 4: create Kinesis Stream
DynamoDB
S3
eventTable
Web apps
dynamodb.
put_item()
Lambda
aws kinesis create-stream --stream-name APItoDynamoDB --shard-count 1
Kinesis Streams
Step 5: IAM role for Lambda function
aws iam create-role 
--role-name writeToKinesis_role 
--assume-role-policy-document file://lambda_trust_policy.json
aws iam create-policy 
--policy-name writeToKinesis_policy 
--policy-document file://writeToKinesis_policy.json
aws iam attach-role-policy 
--role-name writeToKinesis_role 
--policy-arn WRITETOKINESIS_POLICY_ARN
Step 6: create Lambda function
DynamoDB
S3
eventTable
Web apps
DynamoDB
streams
dynamodb.
put_item()
Lambda
aws lambda create-function 
--function-name writeToKinesis
--role WRITETOKINESIS_ROLE 
--zip-file fileb://writeToKinesis.zip 
--handler writeToKinesis.lambda_handler 
--runtime python2.7 
--memory-size 128 
--description "Write events to Kinesis”
Kinesis StreamsLambda
KinesisTo
DynamoDB
writeTo
Kinesis
Step 7: create API
DynamoDB
S3
eventTable
Web apps
DynamoDB
streams
dynamodb.
put_item()
Lambda
Painful to do with the CLI: 9 aws apigateway calls :-/
à  Use the console
à  Use a Swagger File
http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api.html
à  Use the Serverless framework
Kinesis StreamsLambda
KinesisTo
DynamoDB
writeTo
Kinesis
API Gateway
Step 8: create IAM role
aws iam create-role 
--role-name DynamoDBToFirehose_role 
--assume-role-policy-document file://lambda_trust_policy.json
aws iam create-policy 
--policy-name DynamoDBToFirehose_policy 
--policy-document file://DynamoDBToFirehose_policy.json
aws iam attach-role-policy 
--role-name DynamoDBToFirehose_role 
--policy-arn DYNAMODBTOFIREHOSE_POLICY_ARN
Step	9:	create	Lambda	funcIon	and	DynamoDB	trigger	
aws lambda create-function 
--function-name DynamoDBToFirehose 
--role DYNAMODBTOFIREHOSE_ROLE_ARN 
--zip-file fileb://DynamoDBToFirehose.zip 
--handler DynamoDBToFirehose.lambda_handler 
--runtime python2.7 
--memory-size 128 
--description "Write DynamoDB stream to Kinesis Firehose"
aws lambda create-event-source-mapping 
--function-name DynamoDBToFirehose 
--event-source DYNAMODB_STREAM_ARN 
--batch-size 10 
--starting-position TRIM_HORIZON
Lambda
DynamoDB
ToFirehose
eventTable
DynamoDB
streams
DynamoDB
Step	10:	create	IAM	role	
aws iam create-role 
--role-name firehoseToS3_role 
--assume-role-policy-document file://firehose_trust_policy.json
aws iam create-policy 
--policy-name firehoseToS3_policy 
--policy-document file://firehoseToS3_policy.json
aws iam attach-role-policy 
--role-name firehoseToS3_role 
--policy-arn FIREHOSETOS3_POLICY_ARN
Step	11:	create	S3	bucket	
aws s3 mb s3://jsimon-public
Lambda
DynamoDB
ToFirehose
eventTable
DynamoDB
streams
DynamoDB
Step	12:	create	Kinesis	Firehose	stream	
aws firehose create-delivery-stream 
--delivery-stream-name firehoseToS3 
--s3-destination-configuration 
RoleARN=FIREHOSETOS3_ROLE_ARN, 
BucketARN="arn:aws:s3:::jsimon-public", 
Prefix="firehose", 
BufferingHints={SizeInMBs=1,IntervalInSeconds=60}, 
CompressionFormat="GZIP", 
EncryptionConfiguration={NoEncryptionConfig="NoEncryption"}
Kinesis
Firehose
firehoseToS3
Lambda
DynamoDB
ToFirehose
eventTable
DynamoDB
streams
DynamoDB
Building	a	serverless	data	pipeline	
Lambda
DynamoDB
Kinesis
Firehose
API Gateway
HTTP POST 

/prod/logger writeTo
Kinesis
DynamoDB
ToFirehose
S3
eventTable
DynamoDB
streams
bucket
EMR,
Redshift,
…
firehoseToS3
Kinesis StreamsLambda Lambda
KinesisTo
DynamoDB
Web apps
Lines of code: 16
Number of servers: zero
Performance & scalability: maximum
https://github.com/juliensimon/aws/tree/master/serverlessPipeline
Ready	for	some	tesIng?	
hRp://api.julien.org
Upcoming	book	on	AWS	Lambda	
Wri^en	by	AWS	Technical	
Evangelist	Danilo	Poccia	
	
Early	release	available	at:	
	
h^ps://www.manning.com/
books/aws-lambda-in-acJon
Going	further	
AWS re:Invent 2014 | (MBL202) NEW LAUNCH: Getting Started with AWS Lambda
https://www.youtube.com/watch?v=UFj27laTWQA
AWS re:Invent 2015 | (DEV203) Amazon API Gateway & AWS Lambda to Build Secure and Scalable APIs
https://www.youtube.com/watch?v=ZBxWZ9bgd44
AWS re:Invent 2015 | (DVO209) JAWS: The Monstrously Scalable Serverless Framework
https://www.youtube.com/watch?v=D_U6luQ6I90
https://github.com/serverless/serverless
AWS re:Invent 2015 | (ARC308) The Serverless Company Using AWS Lambda
https://www.youtube.com/watch?v=U8ODkSCJpJU
AWS re:Invent 2015 | (CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
https://www.youtube.com/watch?v=FhJxTIq81AU
Reference architectures
http://www.allthingsdistributed.com/2016/06/aws-lambda-serverless-reference-architectures.html
AWS User Groups
Lille
Paris
Rennes
Nantes
Bordeaux
Lyon
Montpellier
Toulouse
facebook.com/groups/AWSFrance/
@aws_actus
AWS Enterprise Summit – 27/10/2016, Paris
http://amzn.to/1X2yp0i
Merci !
	
Julien	Simon,	Principal	Technical	Evangelist,	AWS	
julsimon@amazon.fr	
@julsimon

More Related Content

PDF
Serverless Frameworks on AWS
PDF
Developing and deploying serverless applications (February 2017)
PDF
Building serverless apps with Node.js
PDF
AWS CloudFormation (February 2016)
PPTX
Moving Viadeo to AWS (2015)
PDF
Serverless architecture with AWS Lambda (June 2016)
PDF
An introduction to serverless architectures (February 2017)
PDF
A 60-mn tour of AWS compute (March 2016)
Serverless Frameworks on AWS
Developing and deploying serverless applications (February 2017)
Building serverless apps with Node.js
AWS CloudFormation (February 2016)
Moving Viadeo to AWS (2015)
Serverless architecture with AWS Lambda (June 2016)
An introduction to serverless architectures (February 2017)
A 60-mn tour of AWS compute (March 2016)

What's hot (17)

PDF
Amazon ECS (December 2015)
PDF
A real-life account of moving 100% to a public cloud
PDF
Running Docker clusters on AWS (June 2016)
PDF
Write less (code) and build more with serverless
PDF
Using Amazon CloudWatch Events, AWS Lambda and Spark Streaming to Process EC...
PDF
Continuous Deployment with Amazon Web Services
PDF
Amazon ECS (March 2016)
PDF
Building a data warehouse with Amazon Redshift … and a quick look at Amazon ...
PDF
Docker Paris #28
PPTX
從劍宗到氣宗 - 談AWS ECS與Serverless最佳實踐
PDF
Meeyup aws-loadbalancing-28032015
PDF
Workshop AWS IoT @ SIDO
PDF
Infrastructure as code with Amazon Web Services
PDF
Building A Dynamic Website - 31st Jan 2015
PDF
Docker Paris #29
PDF
CI&CD on AWS - Meetup Roma Oct 2016
PDF
Scaling your web app horizontally and vertically (ahmedabad amazon aws cloud...
Amazon ECS (December 2015)
A real-life account of moving 100% to a public cloud
Running Docker clusters on AWS (June 2016)
Write less (code) and build more with serverless
Using Amazon CloudWatch Events, AWS Lambda and Spark Streaming to Process EC...
Continuous Deployment with Amazon Web Services
Amazon ECS (March 2016)
Building a data warehouse with Amazon Redshift … and a quick look at Amazon ...
Docker Paris #28
從劍宗到氣宗 - 談AWS ECS與Serverless最佳實踐
Meeyup aws-loadbalancing-28032015
Workshop AWS IoT @ SIDO
Infrastructure as code with Amazon Web Services
Building A Dynamic Website - 31st Jan 2015
Docker Paris #29
CI&CD on AWS - Meetup Roma Oct 2016
Scaling your web app horizontally and vertically (ahmedabad amazon aws cloud...
Ad

Similar to Building a Serverless Pipeline (9)

PPTX
Serverless Developer Experience I AWS Dev Day 2018
PDF
Voxxed Athens 2018 - Serverless by Design
PDF
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
PDF
Serverless use cases with AWS Lambda
PPTX
Serverless Applications with AWS SAM
PDF
Serverless computing with AWS Lambda
PDF
Serverless Design Patterns
PDF
Serveless design patterns (VoxxedDays Luxembourg)
PDF
Real world serverless - architecture, patterns and lessons learned
Serverless Developer Experience I AWS Dev Day 2018
Voxxed Athens 2018 - Serverless by Design
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
Serverless use cases with AWS Lambda
Serverless Applications with AWS SAM
Serverless computing with AWS Lambda
Serverless Design Patterns
Serveless design patterns (VoxxedDays Luxembourg)
Real world serverless - architecture, patterns and lessons learned
Ad

More from Julien SIMON (20)

PDF
Implementing high-quality and cost-effiient AI applications with small langua...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
PDF
Arcee AI - building and working with small language models (06/25)
PDF
deep_dive_multihead_latent_attention.pdf
PDF
Deep Dive: Model Distillation with DistillKit
PDF
Deep Dive: Parameter-Efficient Model Adaptation with LoRA and Spectrum
PDF
Building High-Quality Domain-Specific Models with Mergekit
PDF
Tailoring Small Language Models for Enterprise Use Cases
PDF
Tailoring Small Language Models for Enterprise Use Cases
PDF
Julien Simon - Deep Dive: Compiling Deep Learning Models
PDF
Tailoring Small Language Models for Enterprise Use Cases
PDF
Julien Simon - Deep Dive - Optimizing LLM Inference
PDF
Julien Simon - Deep Dive - Accelerating Models with Better Attention Layers
PDF
Julien Simon - Deep Dive - Quantizing LLMs
PDF
Julien Simon - Deep Dive - Model Merging
PDF
An introduction to computer vision with Hugging Face
PDF
Reinventing Deep Learning
 with Hugging Face Transformers
PDF
Building NLP applications with Transformers
PPTX
Building Machine Learning Models Automatically (June 2020)
Implementing high-quality and cost-effiient AI applications with small langua...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Trying to figure out MCP by actually building an app from scratch with open s...
Arcee AI - building and working with small language models (06/25)
deep_dive_multihead_latent_attention.pdf
Deep Dive: Model Distillation with DistillKit
Deep Dive: Parameter-Efficient Model Adaptation with LoRA and Spectrum
Building High-Quality Domain-Specific Models with Mergekit
Tailoring Small Language Models for Enterprise Use Cases
Tailoring Small Language Models for Enterprise Use Cases
Julien Simon - Deep Dive: Compiling Deep Learning Models
Tailoring Small Language Models for Enterprise Use Cases
Julien Simon - Deep Dive - Optimizing LLM Inference
Julien Simon - Deep Dive - Accelerating Models with Better Attention Layers
Julien Simon - Deep Dive - Quantizing LLMs
Julien Simon - Deep Dive - Model Merging
An introduction to computer vision with Hugging Face
Reinventing Deep Learning
 with Hugging Face Transformers
Building NLP applications with Transformers
Building Machine Learning Models Automatically (June 2020)

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
A Presentation on Artificial Intelligence
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Big Data Technologies - Introduction.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Approach and Philosophy of On baking technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
Per capita expenditure prediction using model stacking based on satellite ima...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
A Presentation on Artificial Intelligence
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Big Data Technologies - Introduction.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Approach and Philosophy of On baking technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
NewMind AI Monthly Chronicles - July 2025
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
KodekX | Application Modernization Development

Building a Serverless Pipeline

  • 1. ©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved Building a serverless data pipeline Julien Simon, Principal Technical Evangelist, AWS julsimon@amazon.fr @julsimon
  • 3. AWS Lambda •  Deploy pure funcJons in Java, Python and Node.js •  Works nicely with AWS managed services: Amazon S3, Amazon DynamoDB, etc. •  Build event-driven applicaJons •  Build RESTful APIs in conjuncJon with Amazon API Gateway •  Pay as you go: number of requests + execuJon Jme (100ms slots)
  • 6. MOBILE CHAT APP AD DATA ANALYTICS AND ROUTING MOBILE APP ANALYTICS IMAGE CONTENT FILTERING REAL-TIME VIDEO AD BIDDING NEWS CONTENT PROCESSING GENE SEQUENCE SEARCH CLOUD TELEPHONY DATA PROCESSING WEB APPLICATIONS WEB APPLICATIONS THREAT INTELLIGENCE AND ANALYTICS NEWS CONTENT PROCESSING GAME METRICS ANALYTICS Selected serverless customers PRODUCT RECOMMANDATION
  • 9. AWS Lambda ‘Hello World’ (Python) 1.  Write a simple Lambda function in Python 2.  Create a REST API with API Gateway (resource + POST method) 3.  Deploy the API 4.  Invoke the API with ‘curl’
  • 10. A simple Lambda function in Python def lambda_handler(event,context):    result = event['value1'] + event['value2']    return result aws lambda create-function --function-name myFunc --handler myFunc.lambda_handler --runtime python2.7 --zip-file fileb://myFunc.zip --memory-size 128 --role arn:aws:iam::ACCOUNT_NUMBER:role/lambda_basic_execution curl -H "Content-Type: application/json" -X POST -d "{"value1":5, "value2":7}" https://API_ENDPOINT/STAGE/RESOURCE 12
  • 11. AWS Lambda in Java with Eclipse https://java.awsblog.com/post/TxWZES6J1RSQ2Z/Testing-Lambda-functions-using-the-AWS-Toolkit-for-Eclipse
  • 12. AWS Lambda ‘Hello World’ (Java) 1.  In Eclipse, write a simple Lambda function triggered by an S3 event 2.  Unit-test the function with Junit 3.  Using the AWS Eclipse plug-in, upload and run the function in AWS 4.  Run the function again in the AWS Console
  • 13. AWS Lambda with the Serverless framework http://github.com/serverless/serverless •  Run/test AWS Lambda functions locally, or remotely •  Auto-deploys & versions your Lambda functions •  Auto-deploys your REST API to AWS API Gateway •  Auto-deploys your Lambda events •  Support for multiple stages •  Support for multiple regions within stages •  Manage & deploy AWS CloudFormation resources
  • 14. Building a serverless data pipeline Lambda DynamoDB Kinesis Firehose API Gateway HTTP POST 
 /prod/logger writeTo Kinesis DynamoDB ToFirehose S3 eventTable DynamoDB streams bucket EMR, Redshift, … firehoseToS3 Kinesis StreamsLambda Lambda KinesisTo DynamoDB Web apps
  • 15. Step 1: create DynamoDB table aws dynamodb create-table --table-name eventTable --attribute-definitions AttributeName=userId,AttributeType=N AttributeName=timestamp,AttributeType=N --key-schema AttributeName=userId,KeyType=HASH AttributeName=timestamp,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --stream-specification StreamEnabled=true,StreamViewType=NEW_IMAGE eventTable DynamoDB
  • 16. Step 2: IAM role for Lambda function aws iam create-role --role-name writeToDynamoDB_role --assume-role-policy-document file://lambda_trust_policy.json aws iam create-policy --policy-name writeToDynamoDB_policy --policy-document file://writeToDynamoDB_policy.json aws iam attach-role-policy --role-name writeToDynamoDB_role --policy-arn WRITETODYNAMODB_POLICY_ARN
  • 17. Step 3: create Lambda function S3 DynamoDB eventTable Web apps dynamodb. put_item() Lambda aws lambda create-function --function-name writeToDynamoDB --role WRITETODYNAMO_DB_ROLE --zip-file fileb://writeToDynamoDB.zip --handler writeToDynamoDB.lambda_handler --runtime python2.7 --memory-size 128 --description "Write events to DynamoDB”
  • 18. Step 4: create Kinesis Stream DynamoDB S3 eventTable Web apps dynamodb. put_item() Lambda aws kinesis create-stream --stream-name APItoDynamoDB --shard-count 1 Kinesis Streams
  • 19. Step 5: IAM role for Lambda function aws iam create-role --role-name writeToKinesis_role --assume-role-policy-document file://lambda_trust_policy.json aws iam create-policy --policy-name writeToKinesis_policy --policy-document file://writeToKinesis_policy.json aws iam attach-role-policy --role-name writeToKinesis_role --policy-arn WRITETOKINESIS_POLICY_ARN
  • 20. Step 6: create Lambda function DynamoDB S3 eventTable Web apps DynamoDB streams dynamodb. put_item() Lambda aws lambda create-function --function-name writeToKinesis --role WRITETOKINESIS_ROLE --zip-file fileb://writeToKinesis.zip --handler writeToKinesis.lambda_handler --runtime python2.7 --memory-size 128 --description "Write events to Kinesis” Kinesis StreamsLambda KinesisTo DynamoDB writeTo Kinesis
  • 21. Step 7: create API DynamoDB S3 eventTable Web apps DynamoDB streams dynamodb. put_item() Lambda Painful to do with the CLI: 9 aws apigateway calls :-/ à  Use the console à  Use a Swagger File http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api.html à  Use the Serverless framework Kinesis StreamsLambda KinesisTo DynamoDB writeTo Kinesis API Gateway
  • 22. Step 8: create IAM role aws iam create-role --role-name DynamoDBToFirehose_role --assume-role-policy-document file://lambda_trust_policy.json aws iam create-policy --policy-name DynamoDBToFirehose_policy --policy-document file://DynamoDBToFirehose_policy.json aws iam attach-role-policy --role-name DynamoDBToFirehose_role --policy-arn DYNAMODBTOFIREHOSE_POLICY_ARN
  • 23. Step 9: create Lambda funcIon and DynamoDB trigger aws lambda create-function --function-name DynamoDBToFirehose --role DYNAMODBTOFIREHOSE_ROLE_ARN --zip-file fileb://DynamoDBToFirehose.zip --handler DynamoDBToFirehose.lambda_handler --runtime python2.7 --memory-size 128 --description "Write DynamoDB stream to Kinesis Firehose" aws lambda create-event-source-mapping --function-name DynamoDBToFirehose --event-source DYNAMODB_STREAM_ARN --batch-size 10 --starting-position TRIM_HORIZON Lambda DynamoDB ToFirehose eventTable DynamoDB streams DynamoDB
  • 24. Step 10: create IAM role aws iam create-role --role-name firehoseToS3_role --assume-role-policy-document file://firehose_trust_policy.json aws iam create-policy --policy-name firehoseToS3_policy --policy-document file://firehoseToS3_policy.json aws iam attach-role-policy --role-name firehoseToS3_role --policy-arn FIREHOSETOS3_POLICY_ARN
  • 25. Step 11: create S3 bucket aws s3 mb s3://jsimon-public Lambda DynamoDB ToFirehose eventTable DynamoDB streams DynamoDB
  • 26. Step 12: create Kinesis Firehose stream aws firehose create-delivery-stream --delivery-stream-name firehoseToS3 --s3-destination-configuration RoleARN=FIREHOSETOS3_ROLE_ARN, BucketARN="arn:aws:s3:::jsimon-public", Prefix="firehose", BufferingHints={SizeInMBs=1,IntervalInSeconds=60}, CompressionFormat="GZIP", EncryptionConfiguration={NoEncryptionConfig="NoEncryption"} Kinesis Firehose firehoseToS3 Lambda DynamoDB ToFirehose eventTable DynamoDB streams DynamoDB
  • 27. Building a serverless data pipeline Lambda DynamoDB Kinesis Firehose API Gateway HTTP POST 
 /prod/logger writeTo Kinesis DynamoDB ToFirehose S3 eventTable DynamoDB streams bucket EMR, Redshift, … firehoseToS3 Kinesis StreamsLambda Lambda KinesisTo DynamoDB Web apps Lines of code: 16 Number of servers: zero Performance & scalability: maximum https://github.com/juliensimon/aws/tree/master/serverlessPipeline
  • 30. Going further AWS re:Invent 2014 | (MBL202) NEW LAUNCH: Getting Started with AWS Lambda https://www.youtube.com/watch?v=UFj27laTWQA AWS re:Invent 2015 | (DEV203) Amazon API Gateway & AWS Lambda to Build Secure and Scalable APIs https://www.youtube.com/watch?v=ZBxWZ9bgd44 AWS re:Invent 2015 | (DVO209) JAWS: The Monstrously Scalable Serverless Framework https://www.youtube.com/watch?v=D_U6luQ6I90 https://github.com/serverless/serverless AWS re:Invent 2015 | (ARC308) The Serverless Company Using AWS Lambda https://www.youtube.com/watch?v=U8ODkSCJpJU AWS re:Invent 2015 | (CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda https://www.youtube.com/watch?v=FhJxTIq81AU Reference architectures http://www.allthingsdistributed.com/2016/06/aws-lambda-serverless-reference-architectures.html
  • 32. AWS Enterprise Summit – 27/10/2016, Paris http://amzn.to/1X2yp0i