Aws lambda 什么&x2019;将多个lambda函数从一个github repo部署到AWS上的最佳方法是什么?

Aws lambda 什么&x2019;将多个lambda函数从一个github repo部署到AWS上的最佳方法是什么?,aws-lambda,aws-code-deploy,aws-codepipeline,aws-codebuild,aws-serverless,Aws Lambda,Aws Code Deploy,Aws Codepipeline,Aws Codebuild,Aws Serverless,我有一个单独的存储库,在github上托管lambda函数。我希望能够在将新逻辑推送到master时部署新版本 我做了很多研究,发现了一些不同的方法,但没有什么真正清楚的。我想知道其他人认为这是最好的方式,也许一些细节(如果可能的话)到如何设置管道 谢谢欢迎来到StackOverflow。你们可以通过阅读第页来改进你们的问题 您可以使用设置CI/CD管道(这是一项在线服务,因此您不需要维护任何东西,例如Jenkins服务器) 每次提交到存储库时,都会触发CircleCI构建。构建过程结束后,您可

我有一个单独的存储库,在github上托管lambda函数。我希望能够在将新逻辑推送到master时部署新版本

我做了很多研究,发现了一些不同的方法,但没有什么真正清楚的。我想知道其他人认为这是最好的方式,也许一些细节(如果可能的话)到如何设置管道


谢谢

欢迎来到StackOverflow。你们可以通过阅读第页来改进你们的问题

您可以使用设置CI/CD管道(这是一项在线服务,因此您不需要维护任何东西,例如Jenkins服务器)

每次提交到存储库时,都会触发CircleCI构建。构建过程结束后,您可以声明
sls deploy
sam deploy
,使用Terraform甚至创建脚本将.zip文件从GitHub repo上载到S3存储桶,然后在脚本中调用该命令。下面是一个如何使用CircleCI和

其他选项包括甚至维护您自己的CI/CD服务器。同样的逻辑也适用于所有这些工具:提交->构建->部署(使用您选择的工具之一)


编辑:在@Matt的回答之后,点击显示OP从未提及无服务器框架(不知何故,我认为他已经在使用它了,所以我将OP指向使用无服务器框架的教程)。然后,我决定用一些其他选项更新我的答案,用于无服务器部署

我知道这并不是你想要的,但我使用无服务器框架()进行部署,我喜欢它。当我推动回购时,我不会进行部署。相反,我会在部署后推进回购。我喜欢这个流程,因为部署可能会因为很多事情而失败,而推到GitHub失败的可能性要小得多。通过这种方式,我可以防止将部署失败的代码推送到我的主分支

我不知道您是否熟悉该框架,但它非常简单。该网站描述了创建和部署类似功能的简单步骤

1     # Step 1. Install serverless globally
2     $ npm install serverless -g
3
4     # Step 2. Create a serverless function
5     $ serverless create --template hello-world
6 
7     # Step 3. deploy to cloud provider
8     $ serverless deploy
9
10   # Your function is deployed!
11   $ http://xyz.amazonaws.com/hello-world
还有许多插件可以用来轻松地与APIGateway上的自定义域集成,修剪可能会填满您的限制的lambda函数的旧版本,等等


总的来说,我发现这是管理和部署lambda最简单的方法。希望有帮助我也有同样的问题。我想用一个git存储库管理12个Lambda。我通过介绍解决了这个问题。travis ci节省了时间,在很多方面都非常有用。我们可以随时查看日志,您可以通过共享URL将日志共享给任何人。所有步骤的示例文档可以找到。你可以浏览一下。在你发布你的答案后,我已经编辑了我的答案。我认为你值得一次投票,即使你从未提到如何将其与CI/CD管道集成(尽管如果人们可以从命令行部署某些东西,这应该是显而易见的),所以它在这里:)我正要编辑我的答案来反映你的lol。我们在同一个问题的两个方面进行工作。我不知道serverless,但现在合并它有助于简化和自动化这么多逻辑!谢谢!现在我会使用AWS CDK。没有terraform复杂,但比serverless Framewor功能更多k、 @Marc我不知道你说的“更多功能”是什么意思无服务器框架几乎可以部署您需要的任何东西。如果框架自己的配置中没有描述它,抽象出底层云信息,那么您实际上也可以使用原始云信息来部署您需要的内容。您的意思是,使用CodePipeline触发AWS Lambda,然后更新函数代码f或者所有其他Lambda?据我所知,不支持从CodePipeline更新函数代码/切换到新版本。CodePipeline让我们将发布过程建模为要执行的操作。没有直接操作来执行您所描述的操作,但您可以添加诸如CloudFormation、CodeBuild甚至Lambda函数之类的操作来更新Lambda function代码或版本并切换到新版本。与泰雷兹达成一致。对于仍在寻找使用CircleCI为无服务器monorepo应用程序构建CI/CD管道的任何人,以下是一篇逐步发布的帖子-