Top Banner
使 AWS Lambda 開發 Rest Services 馮彥永 Zaoo
26

Lambda local - A local server for developing AWS Lambda function in Java

Apr 16, 2017

Download

Software

Yenwen Feng
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: Lambda local - A local server for developing AWS Lambda function in Java

使⽤用 AWS Lambda

開發 Rest Services

馮彥永

Zaoo

Page 2: Lambda local - A local server for developing AWS Lambda function in Java

馮彥永 Tempo

• 2012. Cubie

• 2008. Gamelet

• 2004. Willmobile

• http://fb.me/tempofeng, http://tempo.tw

•產品開發週報 http://fb.me/pdwtaiwan

Page 3: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda

• Launched on 2014

• Run code without provisioning or managing servers -

Serverless

• Supported Node.js, Java, C#, Python

• Why?

• Billed by 100ms (and by memory usage)

• Easier

Page 4: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda - Applications

Page 5: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda - Applications

Page 6: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda - Applications

Page 7: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - HTTP

Page 8: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - Packaging

Page 9: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - Deployment

Page 10: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - Testing

Page 11: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - Pojo

Page 12: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - API Gateway

Page 13: Lambda local - A local server for developing AWS Lambda function in Java

Hello World! - API Gateway

Page 14: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda Proxy Integration

• Wiring between API Gateway and Lambda is hard!

• Lambda Proxy integration

• Remember to Deploy API!

• http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-

up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-input-format

Page 15: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda Proxy Integration

Page 16: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda - Details

• AWS Lambda Log4j Appender

• http://docs.aws.amazon.com/lambda/latest/dg/java-logging.html

• Server Logs

• AWS CloudWatch logs for Humans™

• https://github.com/jorgebastida/awslogs

Page 17: Lambda local - A local server for developing AWS Lambda function in Java

AWS Lambda - Details

• Object Serialization

• Plain Objects

• Lambda Proxy Integration is better!

• Api Gateway is hard: Returning HTML, Response Headers, Content-Type, …

• Lambda Proxy Integration is better!

• Local testing

• Unit tests only 😢

Page 18: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local

• https://github.com/tempofeng/lambda-local

• Runs AWS Lambda on your local machine

• Uses syntax like Spring MVC (or Retrofit) to

build Rest Services

• Using Jackson for JSON ⇆ Java

• Migrates AWS Lambda Functions back to

Beanstalk or other Application Servers

Page 19: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - Hello World

Page 20: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - Running on Local Machine

Page 21: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - Object Mapping

Page 22: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - Path Parameters

Page 23: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - CrossOrigin

Page 24: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-Local - Running on Lambda

Page 25: Lambda local - A local server for developing AWS Lambda function in Java

Thoughts on AWS Lambda

• Dagger vs Spring Framework (IoC Container)

• Start up time

• 5sec

• Using sentry.io to collect exceptions

• Cloudwatch

• Running new services without any cost

• Beanstalk → AWS Lambda

Page 26: Lambda local - A local server for developing AWS Lambda function in Java

Lambda-local

• Lambda-Local

• https://github.com/tempofeng/lambda-local

• Examples today

• https://github.com/tempofeng/lambda-local-talk

• Suggestions

• email: [email protected]

• Facebook: fb.me/tempofeng