Node.js AWS Lambda开发工作流程

Node.js AWS Lambda开发工作流程,node.js,amazon-web-services,version-control,aws-lambda,aws-api-gateway,Node.js,Amazon Web Services,Version Control,Aws Lambda,Aws Api Gateway,我已经使用AWS有一段时间了,但我想知道如何使用Lambda进行开发。我非常喜欢使用无服务器功能,让Amazon负责维护,并且已经使用了一段时间。我的问题:是否有推荐的版本控制和开发工作流程 我知道有能力在Lambda中发布新版本。您可以指向调用它的服务中的特定版本,例如API网关。我看到API网关也有一些很好的功能来划分谁调用哪个版本。i、 e.拥有一个测试API,并且缓慢地滚动更新,比如10%的生产API调用,并缓慢地扩展 然而,对于实际的版本控制系统来说,这感觉有点笨拙。也许这些功能是本地

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

我知道有能力在Lambda中发布新版本。您可以指向调用它的服务中的特定版本,例如API网关。我看到API网关也有一些很好的功能来划分谁调用哪个版本。i、 e.拥有一个测试API,并且缓慢地滚动更新,比如10%的生产API调用,并缓慢地扩展

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

通过Lambda中的编辑器进行开发也感觉不太好。更不用说使用自定义软件包需要上传任何方式。看来本地开发是更好的解决方案。试图了解其他工作流程,以便改进我的工作流程


根据您的经验,您是如何处理这个问题的?

您可以使用aws CodeCommit对lambda进行版本控制(比使用外部git存储库系统简单得多,尽管您也可以这样做)。以下是为提交/构建/部署阶段设置代码管道的教程:

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


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

我编写了大约十几个lambda函数,这些函数根据S3文件写入事件或时间触发,并向API发出HTTP req以启动数据处理作业

我认为没有金本位。根据我的研究,有各种各样的方法和框架。我决定我不想依赖任何类型的框架,比如Serverless或Apex,因为我不想在学习Lambda的基础上学习如何使用这些东西。相反,在开发功能时,我根据自己的需要进行了有机的改进

为了回答你的问题,这里是我的工作流程

  • 本地开发和git提交更改
  • 模拟测试数据,并使用mocha和chai进行本地测试
  • 运行bash脚本,创建压缩要部署到AWS lambda的文件的zip文件
  • 将zip文件上载到AWS lambda

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


    一段时间过去了,您是否更新了您的工作流程?