Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Serverless api gateway + lambda

259 visualizaciones

Publicado el

Serverless api gateway + lambda
创建安全可扩展的无服务化api

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Serverless api gateway + lambda

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 李磊 Leon Li, Solutions Architect 创建安全&可扩展的无服务化API 使用Amazon API Gateway and AWS Lambda
  2. 2. 1. 一种全新的开发模式 2. 利用Amazon API Gateway定义API 3. 在AWS Lambda中处理应用程序逻辑 4. 结合AWS IAM和API Gateway的自定义认证 5. 结合SDK生成工具简化移动端开发 6. Streeet示例程序 7. 开源无服务框架和工具简介 议程
  3. 3. • 拥有一年以上开发经验,对编程语言和编程模型有一定了 解和实践的用户 • 对微服务有一定了解,并且了解Restful API定义的开发人 员 面向人员
  4. 4. Managed 全新的编程模型 InternetMobile apps AWS Lambda functions AWS API Gateway cache Endpoints on Amazon EC2 Any other publicly accessible endpoint Amazon CloudWatch Amazon CloudFront API Gateway API Gateway Other AWS services AWS Lambda functions
  5. 5. 要点 AWS Lambda + Amazon API Gateway代表没有基础架构 需要管理 – 我们将会自动伸缩 安全很重要,也很复杂 – 利用AWS Identity and Access Management解决这些问题 Swagger 和client SDK生成 – 我们已经解决了大部分的工 作
  6. 6. 我们将会用到的服务 Amazon API Gateway AWS Lambda AWS Lambda Amazon DynamoDB 定义REST API和API 路由 执行应用程序逻辑 自定义Authorizer NoSql数据存储
  7. 7. Streeet App架构 时尚达人街头分享应用
  8. 8. Unauthenticated API处理流程 Mobile apps AWS Lambda lambdaHandler Register Login API Gateway Authenticated Mobile apps AWS Lambda lambdaHandler ListPosts GetPosts API Gateway GetComments Invoke with caller credentials Authorized by IAM
  9. 9. 创新点? 应用程序将会自动扩张,在流量大的时候使用尽可 能多的服务器资源,但是我们却不需要管理其中的 任何一台 复杂的认证工作交付给AWS来完成, 我们只需要合 理的定义和分派IAM的资源 部署工作可以利用Swagger自动完成
  10. 10. API 定义和Swagger
  11. 11. Amazon API Gateway简介 管理部署以及多版本和多环 境 定义和托管API 利用Identity and Access Management控制访问云端 资源 利用AWS认证 DDoS 防御以及自动管控 流量代理到应用后端 管控网络流量
  12. 12. Method and integration
  13. 13. 控制资源和动作方法 • POST – 在DynamoDB table中增加 一条用户信息/register • POST – 接收用户名密码并认证用 户/login • POST – 生成一条新的评论信息 • GET – 获取评论列表 /comments • GET – 获取一条Post/post/{id} Unauthenticated Authenticated
  14. 14. Method Response Integration Request Method Request Method Swagger定义自动化api整合流程 /register: post: summary: Registers a new user consumes: - application/json produces: - application/json parameters: - name: NewUser in: body schema: $ref: '#/definitions/User’ x-amazon-apigateway-integration: type: aws uri: arn:aws:apigateway:us-east-1:lambda:path/2015-03-31... credentials: arn:aws:iam::964405213927:role/pet_store_lambda_invoke ... responses: 200: schema: $ref: '#/definitions/RegisterUserResponse'
  15. 15. 使用Swagger的好处 • API的定义将会透明保存在代码的Repository中 • API的定义可以用于结合其它工具生成文档便于和其它团 队协同工作 • API可以通过命令行工作导入并轻松部署到API Gateway 中托管并开始提供服务
  16. 16. 请求路由处理
  17. 17. 高性能的扩展性; 收费灵活高效没有基础架构需要管理 即用即付: Lambda 自动计费您的计 算资源. 以100ms为最低计费单元 Bring Your Own Code Lambda 函数: 无状态,事件驱动的代码模型 支持预设的代码运行环境,Node.js, Python和Java 专注于您的业务逻辑,没有基础架构需 要管理.只需要上传代码 AWS Lambda 将会处理剩下其它的事情 AWS Lambda简介
  18. 18. Lambda处理器 lambdaHandler Register action Login action Create comments action Get comments action Credentials generation Streeet database Amazon API Gateway
  19. 19. 强大的Mapping templates 更多介绍 http://amzn.to/1L1hSF5
  20. 20. AWS credentials
  21. 21. JWT – Json Web Token RFC 7519 / HMAC256 / HMAC512 etc…
  22. 22. The API definition • POST • 接收用户的username, password • 加密密码并在DynamoDB中创建用户资料 • 生成基于JWT的密匙 • 返回用户和密匙 /register • POST • 接收用户的username, password • 比对DynamoDB验证用户登录 • 成功后利用JWT加密并生成Token • 返回登录成功后的JWT Token /login
  23. 23. 自定义认证 - Lambda Client Lambda Auth function API Gateway OAuth token Policy is evaluated Policy is cached Endpoints on Amazon EC2 Any other publicly accessible endpoint AWS Lambda functions 403 AWS KMSJWT Provider
  24. 24. IAM Policy是所有AWS服务的权限工具 Mobile apps AWS Lambda lambdaHandler API Gateway Invoke with caller credentials Service calls are authorized using the IAM role 更多介绍 http://amzn.to/1YkxcjR DynamoDB
  25. 25. 认证后的API调用
  26. 26. 街拍和评论列表 •POST •在Dynamodb中插入一条新的评论 •GET •获取新的评论 /comments • GET • 获取街拍的详细信息 /Post/{id}
  27. 27. 利用IAM Role控制权限访问 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "lambda:InvokeFunction", "execute-api:invoke" ], "Resource": [ "arn:aws:dynamodb:us-east-1:xxxxxx:table/posts", "arn:aws:lambda:us-east-1:xxxxx:function:test”, "arn:aws:execute-api:us-east-1:xxxx:API_ID/*/POST/comments" ] } ] } The role allows calls to: • DynamoDB • API Gateway • Lambda 定义Role可以被访问的资源细 腻度
  28. 28. 使用IAM和AWS平台认证的益处 • 关注分离 – 我们的认证策略代理给了AWS平台,使得可 以更加专注于业务开发 • 利用IAM policies可以轻松的管理整个平台的权限策略 • Roles或者可以轻松的利用一个API请求管理
  29. 29. 客户端请求调用
  30. 30. 一键SDK生成
  31. 31. 客户端的sdk定义了骨架函数
  32. 32. 集成认证调用
  33. 33. 支持无服务架构的框架和开源工具
  34. 34. Apex by TJ
  35. 35. 总结 AWS Lambda + Amazon API Gateway没有服务器需要被管理 Streeet示例程序后台 https://github.com/legocode/Streeet 安全很总要,但也很复杂,利用IAM来完成大部分的工作 利用Swagger和SDK生成完成尽可能多的自动化工作
  36. 36. Q&A?
  37. 37. Thank You.

×