【发布时间】:2021-02-16 21:00:09
【问题描述】:
我正在尝试在 Cloudformation 中定义我的 ECS 堆栈,包括 CI/CD 管道和 ECR 存储库。但是,您遇到了一个难题:
- 要创建 ECS 任务定义 (
AWS::ECS::TaskDefinition),您必须首先创建填充的 ECR 存储库 (AWS::ECR::Repository),以便您可以指定Image属性。 - 要填充此存储库,您必须首先创建将在创建时自动运行的 CodePipeline (
AWS::CodePipeline::Pipeline)。 - 要创建管道,您必须首先创建 ECS 任务定义/集群,因为管道需要在其上部署(返回第 1 步)。
我可以看到的解决方案是:
- 不要在 Cloudformation 中创建 ECR 存储库并将其作为参数传递给堆栈。
- 在任务定义中定义一个虚拟映像以进行首次部署,然后创建将创建真实 ECR 存储库并部署真实映像的管道。
- 在单独的堆栈中创建 CodeBuild 项目和 ECR 存储库,使用 lambda 函数触发 CodeBuild 项目(我认为它不会像管道那样在创建时自动运行),创建 ECS 集群,然后创建管道。这似乎比应有的复杂。
有没有更好的方法来解决这个问题?
【问题讨论】:
标签: amazon-cloudformation amazon-ecs aws-codepipeline aws-codebuild