AWS Lambda Dev工作流程

时间:2019-02-14 19:53:22

标签: node.js amazon-web-services version-control aws-lambda aws-api-gateway

我已经使用AWS一段时间了,但是想知道如何使用Lambda进行开发。我非常喜欢具有无服务器功能,让Amazon处理维护工作,并且已经使用了一段时间。我的问题:是否存在建议的版本控制和开发工作流程?

我知道可以在Lambda中发布新版本。而且,您可以指向调用它的服务中的特定版本,例如API Gateway。我看到API网关还具有一些很好的功能来划分谁调用哪个版本。即拥有测试API,并缓慢滚动更新以说占生产API调用的10%,然后缓慢扩展。

但是,对于实际的版本控制系统来说,这有点笨拙。也许功能是在本地编码并使用AWS CLI上载的,然后通过第三方版本控制系统(Github,Bitbucket等)来管理所有内容?我可以通过这种方式部署到该功能的新版本或现有版本吗?这样,我就可以保持测试功能和生产功能的分离。

通过Lambda中的编辑器,开发也感觉不那么好。更不用说使用自定义包需要反正上传。似乎本地开发是更好的解决方案。试图了解其他工作流程,以便改进我的工作。

根据您的经验,您如何处理此问题?

4 个答案:

答案 0 :(得分:0)

您可以使用aws CodeCommit在lambda上进行版本控制(比起使用外部git存储库系统要简单得多,尽管您可以执行任何一种操作)。这是用于为提交/构建/部署阶段设置CodePipeline的教程:https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-simple-codecommit.html

此示例部署了一个EC2实例,因此对于lambda的部署部分see here

如果设置管道,则可以有一个初始提交阶段,然后是一个运行单元测试并打包代码的构建阶段,然后是一个部署阶段(如果需要,可能还有更多阶段)。这是部署lambda更改的一种非常有条理的方法。

答案 1 :(得分:0)

我编写了大约十二个lambda函数,这些函数基于S3文件的写入事件或时间触发,并对HTTP请求一个HTTP请求以启动数据处理作业。

我认为没有任何黄金标准。根据我的研究,这里有各种方法和框架。我决定不想依赖诸如Serverless或Apex之类的任何框架,因为我不想在学习Lambda的基础上学习如何使用这些东西。相反,我在开发功能时会根据自己的需求有机地进行改进。

要回答您的问题,这是我的工作流程。

  1. 在本地开发和git commit更改。
  2. 模拟测试数据并使用mocha和chai在本地进行测试。
  3. 运行一个bash脚本,该脚本创建一个zip文件,压缩要部署到AWS lambda的文件。
  4. 将zip文件上传到AWS lambda。

答案 2 :(得分:0)

我建议您看看SAM。 SAM是一个命令行工具和框架,可帮助您开发无服务器应用程序。使用SAM,您可以在将应用程序上载到云之前对其进行本地测试。它也支持从github自动启动的蓝/绿部署和CI / CD工作流。

https://github.com/awslabs/aws-sam-cli

答案 3 :(得分:0)

我认为Serverless Framework +标准的Git工作流程是您最好的选择。每个Git分支都绑定到一个完全独立的环境(或阶段)。它们也可以是in different AWS accounts as well

您的团队在功能部门工作或使用基于PR的工作流,并且您的部署与Git提交相关联。这省去了处理Lambda版本的麻烦。

因此,您可能会在本地部署到一组特定的分支机构。对于登台和生产环境,您可能希望通过CI流程将它们连接起来。

我们在此处详细介绍了有关Git工作流程的内容-https://seed.run/blog/git-workflow-for-serverless-apps