我们是一个由5名开发人员组成的团队,需要一些关于使用AWS Lambda,API Gateway,DynamoDB和Cognito在AWS上进行开发的最佳方式的指导。我们正在寻找最佳的开发实践。 5名开发人员如何在不踩对方脚趾的情况下发展?拥有个人帐户并使用可供每个开发人员使用的云形成模板更好吗?
或者使用无服务器框架并为每个开发人员使用不同的环境?看起来无服务器提供了部署到各种环境的能力,但我相信不同环境的意图是CI / CD,其中相同的代码可以通过各种SDLC移动或特定代码可以推送到特定环境。
答案 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是私有的。
对于发展指南,
强烈推荐它。非常有帮助保持一切正常运行,而无需编写大量的测试代码,以确保您不会产生可编译的错误。
如果您正在考虑制作Restful API,请结帐this