aws-cloudformation - 使用 codepipeline 在 cloudFormation 中部署多堆栈的最佳实践

标签 aws-cloudformation aws-codepipeline aws-codebuild aws-codecommit

我在CodeCommit中有一个存储库,在这个存储库中,有3个分支dev、stage和prod,在这个存储库中有多个堆栈版本,例如:

根/

--任务1

----模板.yml

------源代码

--------index.js

--------package.json

--任务2

--任务3

--任务-....

--buildspec.yml

每个文件夹都包含不同的模板 yml 及其用于特定 Lamba 代码的 src 文件夹,buildspec.yml 包含要在每个任务文件夹中输入的命令并执行所需的命令来安装所需的节点包以及 sam 或 cloudformation用于创建或更新堆栈的命令。

当一个新的提交被推送到源时,这会触发管道并执行 buildspec.yml 的所有命令并创建/更新所有堆栈,即使代码中只更改了一个堆栈,这里的问题是是否有更好的方法在一个存储库和一个管道中处理多个堆栈的解决方案。

一种想法是为每个堆栈创建一个存储库和管道,这样每个堆栈都将独立于其他堆栈进行更新,但这样,如果有 20 个堆栈,则需要 20 个存储库和 20 个管道。

我想知道在同一存储库和一个管道中处理多个堆栈的最佳实践是什么,并避免在仅更新一个堆栈时部署所有堆栈,或仅更新在代码提交中更新的堆栈。

最佳答案

创建一个 Amazon EventBridge (Amazon CloudWatch Events) 规则,该规则调用 AWS Lambda 函数来评估对存储库的更改并运行适当的管道。

当提交发生时,可以使用 lambda 和事件桥来修复它,更多详细信息 https://aws.amazon.com/es/blogs/devops/adding-custom-logic-to-aws-codepipeline-with-aws-lambda-and-amazon-cloudwatch-events/

关于aws-cloudformation - 使用 codepipeline 在 cloudFormation 中部署多堆栈的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72357208/

相关文章:

amazon-web-services - 带有 CodeDeploy to ECS 的 AWS CodePipeline 找不到 appspec.yml

amazon-web-services - 如何使用 CodeBuild 将生成的文件夹内容上传到 S3?

amazon-web-services - 如何在CodePipeline中处理多个环境?

amazon-web-services - 有没有办法将现有的 EC2 实例移动到 cloudformation 堆栈

amazon-web-services - 如何通过cloudforms添加密码参数字段而不显示值?

amazon-web-services - 如何在 CloudFormation 模板中正确使用 Fn::Join 对象?

amazon-web-services - 如何使用 CodePipeline 删除 S3 中的文件

amazon-web-services - AWS CodePipeline 无法访问组织的存储库

bash - 无法在 AWS Codebuild 中运行 `source`

docker - AWS Fargate docker compose 而不是 docker run