AWS Lambda + API网关开发最佳实践

时间:2017-05-28 02:28:15

标签: amazon-web-services aws-lambda serverless-framework

我们是一个由5名开发人员组成的团队,需要一些关于使用AWS Lambda,API Gateway,DynamoDB和Cognito在AWS上进行开发的最佳方式的指导。我们正在寻找最佳的开发实践。 5名开发人员如何在不踩对方脚趾的情况下发展?拥有个人帐户并使用可供每个开发人员使用的云形成模板更好吗?

或者使用无服务器框架并为每个开发人员使用不同的环境?看起来无服务器提供了部署到各种环境的能力,但我相信不同环境的意图是CI / CD,其中相同的代码可以通过各种SDLC移动或特定代码可以推送到特定环境。

2 个答案:

答案 0 :(得分:5)

我建议使用无服务器框架来提高开发人员的工作效率。我们遵循的做法很少

  • 保持无服务器框架生成的CloudFormation堆栈模板中的所有基础架构更改。

  • 为每个开发人员创建不同的API网关阶段。

  • 使用无服务器插件。例如,无服务器离线,无人干扰的DynamoDB Local&等

  • 如果您计划设置混合开发环境,请使用NodeJS代理,例如使用无服务器脱机插件模拟API网关和Lambda localy,S3与AWS中的Cognito。

  • 使用像Gulp这样的任务运行器来自动启动Web服务器,部署和扩展等

  • 使用环境变量来存储特定于环境的信息。

除此之外,最好使用分离的AWS账户进行生产。您可以配置AWS组织以简化多个帐户的管理。

答案 1 :(得分:1)

在我的公司,我们主要使用Lambda + API Gateway + DynamoDB构建了5~6个微服务器,并提出了一些指导原则和模板 https://github.com/balmbees/lambda-microservice-template

对于环境变量,
我建议这样做 provider: name: aws runtime: nodejs4.3 environment: ${file(./env/${opt:stage}.yml)} 在serverless.yml中只使用process.env,这意味着将环境变量放在git repo中(例如/env/production.yml)
你可以编写你的CI / CD脚本,只在部署时注入这些变量,但我们决定这样做,因为git repo是私有的。

对于发展指南,

使用Typescript。

强烈推荐它。非常有帮助保持一切正常运行,而无需编写大量的测试代码,以确保您不会产生可编译的错误。

如果您正在考虑制作Restful API,请结帐this