Amazon web services <;AWS云形成>;如何在不更新docker镜像的情况下触发ECS蓝绿部署?

Amazon web services <;AWS云形成>;如何在不更新docker镜像的情况下触发ECS蓝绿部署?,amazon-web-services,amazon-cloudformation,amazon-ecs,aws-code-deploy,infrastructure-as-code,Amazon Web Services,Amazon Cloudformation,Amazon Ecs,Aws Code Deploy,Infrastructure As Code,我正在尝试通过CloudFormation创建一个ECS蓝/绿部署设置。我看到了这篇文档,其中提到云计算可以处理ECS蓝色/绿色部署,而无需显式创建CodeDeploy应用程序和部署组 参考资料: 它提到只有在需要重新创建以下资源之一时才会触发蓝色/绿色部署: AWS::ECS::TaskDefinition AWS::ECS::任务集 我的问题是,如果我的docker镜像没有改变(因为它总是有“最新”版本),任务定义假设不会改变,那么如何触发CloudFormation ECS蓝/绿部

我正在尝试通过CloudFormation创建一个ECS蓝/绿部署设置。我看到了这篇文档,其中提到云计算可以处理ECS蓝色/绿色部署,而无需显式创建CodeDeploy应用程序和部署组

参考资料:

它提到只有在需要重新创建以下资源之一时才会触发蓝色/绿色部署:

  • AWS::ECS::TaskDefinition
  • AWS::ECS::任务集

我的问题是,如果我的docker镜像没有改变(因为它总是有“最新”版本),任务定义假设不会改变,那么如何触发CloudFormation ECS蓝/绿部署?

CloudFormation的ECS蓝/绿部署设置目前无法实现所需的行为,因为我们无法在不更新docker image标记的情况下触发任务定义更改

另一种方法是使用显式CodeDeploy应用程序来处理ECS蓝色/绿色部署

在CodePipeline构建阶段,它可以选择性地更新docker图像标记,并创建一个指定图像URI的“imageDetail.json”。在部署阶段,CodeDeploy将使用图像URI更新taskdef.json,从而创建新的任务定义。这将使用更新的任务定义更新appspec.yaml。这将使用更新的任务定义和docker映像触发ECS蓝/绿部署

我已经将相关的示例CloudFormation模板放在GitHub上以供参考。除了CodeDeploy部署组的创建之外,大多数基础架构创建都可以通过CloudFormation进行优化。CloudFormation还不支持创建蓝色/绿色部署组,因此我们必须使用CLI创建它

创建ECS集群、任务定义和服务,在应用负载均衡器后公开ECS集群

创建代码部署应用程序

创建CodeDeploy部署组

为ECS蓝/绿部署创建3阶段代码管道

我认为你做不到这一点。如果仅使用最新版本,则必须在aws ecs cli中使用
——强制新部署
。@Marcin谢谢。我已经通过使用显式CodeDeploy应用程序来处理ECS蓝/绿部署,实现了所需的行为。在CodePipeline构建阶段,它可以选择性地更新docker图像标记,并创建一个指定图像URI的“imageDetail.json”。在部署阶段。CodeDeploy将使用图像URI更新taskdef.json,从而创建新的任务定义。这将使用更新的任务定义更新appspec.yaml。这将使用更新的任务定义和docker映像触发ECS蓝/绿部署。谢谢您告诉我。你可以用这些细节回答你自己的问题,以备将来参考。你也可以自己接受。