从单个 github 存储库将多个 lambda 函数部署到 AWS 上的最佳方式是什么?
What’s the best way to deploy multiple lambda functions from a single github repo onto AWS?
我有一个存储库,用于在 github 上托管我的 lambda 函数。我希望能够在新逻辑被推送到 master 时部署新版本。
我做了很多研究,发现了一些不同的方法,但没有一个真正清楚。想知道其他人认为什么是解决此问题的最佳方式,也许还有关于如何设置该管道的一些细节(如果可能)。
谢谢
欢迎来到 Whosebug。您可以通过阅读 this 页来改进您的问题。
您可以使用 CircleCI with its GitHub integration 设置 CI/CD 管道(这是一个在线服务,因此您不需要维护任何东西,例如 Jenkins 服务器)
每次提交到您的存储库时,都会触发 CircleCI 构建。构建过程结束后,您可以声明 sls deploy
、sam deploy
、使用 Terraform 甚至创建脚本将 .zip 文件从 GitHub 存储库上传到 S3 存储桶,然后,在您的脚本中,调用 create-function command. There's an example how to deploy Serverless applications using CircleCI along with the Serverless Framework here
其他选项包括 TravisCI, AWS Code Deploy 甚至维护您自己的 CI/CD 服务器。相同的逻辑适用于所有这些工具:提交 -> 构建 -> 部署(使用您选择的工具之一)。
编辑:在@Matt 的回答之后,它点击了 OP 从未提及无服务器框架(不知何故,我认为他已经在使用它,所以我将 OP 指向已经使用无服务器框架的教程)。然后我决定用一些其他无服务器部署选项更新我的答案
我知道这不是您想要的,但我使用无服务器框架 (https://serverless.com) 进行部署,我喜欢它。当我推送到我的回购协议时,我不进行部署。相反,我在部署后推送到我的回购协议。我喜欢这个流程,因为部署可能会因太多事情而失败,而推送到 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 的最简单方法。希望对您有所帮助!
鉴于您正在使用 AWS Lambda,您可能需要考虑使用 CodePipeline 来自动化您的发布过程。 [SAM(https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html) 可能也很有趣。
我也遇到了同样的问题。我想用 1 个 git 存储库管理 12 个 lambda。我通过引入travis-ci. travis-ci saved the time and really useful in many ways. We can check the logs whenever we want and you can share the logs to anyone by sharing the URL. The sample documentation of all steps can be found here解决了它。你可以通过它。
我有一个存储库,用于在 github 上托管我的 lambda 函数。我希望能够在新逻辑被推送到 master 时部署新版本。
我做了很多研究,发现了一些不同的方法,但没有一个真正清楚。想知道其他人认为什么是解决此问题的最佳方式,也许还有关于如何设置该管道的一些细节(如果可能)。
谢谢
欢迎来到 Whosebug。您可以通过阅读 this 页来改进您的问题。
您可以使用 CircleCI with its GitHub integration 设置 CI/CD 管道(这是一个在线服务,因此您不需要维护任何东西,例如 Jenkins 服务器)
每次提交到您的存储库时,都会触发 CircleCI 构建。构建过程结束后,您可以声明 sls deploy
、sam deploy
、使用 Terraform 甚至创建脚本将 .zip 文件从 GitHub 存储库上传到 S3 存储桶,然后,在您的脚本中,调用 create-function command. There's an example how to deploy Serverless applications using CircleCI along with the Serverless Framework here
其他选项包括 TravisCI, AWS Code Deploy 甚至维护您自己的 CI/CD 服务器。相同的逻辑适用于所有这些工具:提交 -> 构建 -> 部署(使用您选择的工具之一)。
编辑:在@Matt 的回答之后,它点击了 OP 从未提及无服务器框架(不知何故,我认为他已经在使用它,所以我将 OP 指向已经使用无服务器框架的教程)。然后我决定用一些其他无服务器部署选项更新我的答案
我知道这不是您想要的,但我使用无服务器框架 (https://serverless.com) 进行部署,我喜欢它。当我推送到我的回购协议时,我不进行部署。相反,我在部署后推送到我的回购协议。我喜欢这个流程,因为部署可能会因太多事情而失败,而推送到 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 的最简单方法。希望对您有所帮助!
鉴于您正在使用 AWS Lambda,您可能需要考虑使用 CodePipeline 来自动化您的发布过程。 [SAM(https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html) 可能也很有趣。
我也遇到了同样的问题。我想用 1 个 git 存储库管理 12 个 lambda。我通过引入travis-ci. travis-ci saved the time and really useful in many ways. We can check the logs whenever we want and you can share the logs to anyone by sharing the URL. The sample documentation of all steps can be found here解决了它。你可以通过它。