gpt4 book ai didi

aws-cloudformation - 如何在创建 CodePipeline 之前在 CloudFormation 中创建 ECS 任务

转载 作者:行者123 更新时间:2023-12-03 07:11:32 26 4
gpt4 key购买 nike

我正在尝试在 Cloudformation 中定义我的 ECS 堆栈,包括 CI/CD 管道和 ECR 存储库。然而,您遇到了一些难题:

  1. 要创建 ECS 任务定义 (AWS::ECS::TaskDefinition),您必须首先创建已填充的 ECR 存储库 (AWS::ECR::Repository)以便您可以指定 Image 属性。
  2. 要填充此存储库,您必须首先创建 CodePipeline (AWS::CodePipeline::Pipeline),它将在创建时自动运行。
  3. 要创建管道,您必须首先创建 ECS 任务定义/集群,因为管道需要部署到其上(返回步骤 1)。

我能看到的解决方案是:

  • 不要在 Cloudformation 中创建 ECR 存储库并将其作为参数传递给堆栈。
  • 在任务定义中定义一个虚拟镜像以进行首次部署,然后创建管道,该管道将创建真实的 ECR 存储库并部署真实镜像。
  • 在单独的堆栈中创建 CodeBuild 项目和 ECR 存储库,使用 lambda 函数触发 CodeBuild 项目(我认为它不会像管道那样在创建时自动运行),创建 ECS 集群,然后创建管道。这似乎比应有的更复杂。

有没有更好的方法来解决这个问题?

最佳答案

我的做法是首先使用 ECR 存储库,但仍然使用 CloudFormation。所以我有两个模板。一个用于 ECR 存储库。剩下的就是第二个。 ECR 存储库作为参数传递给第二个模板。但您也可以在第二步中导出其Uri为ImportValue。 Uri 创建如下:

  Uri:
Value: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${MyECR}"

您还需要存储库中的一些初始图像来进行任务定义。您可以通过为此初始构建单独的 CodeBuild 项目(不需要 CodePipeline)来实现自动化。

关于aws-cloudformation - 如何在创建 CodePipeline 之前在 CloudFormation 中创建 ECS 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66224208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com