AWS ECS蓝色/绿色CodePipeline:尝试读取图像伪像时发生异常

问题描述 投票:0回答:1

我想创建一个CodePipeline,该代码可从CodeCommit源构建容器映像,然后以蓝色/绿色方式将新映像部署到我的ECS服务(EC2启动类型)。

  • 源代码阶段是CodeCommit,其中已经包含appspec.json以及taskdef.json
  • [构建阶段正在构建新容器并将其成功推送到ECR,文件imagedefinition.json是在此步骤中创建的BuildArtifact,包含容器及其最近创建的图像及其与CodeCommit提交ID对应的标签。
  • 部署阶段由操作“ Amazon ECS(蓝色/绿色)”构成SourceArtifact和BuildArtifact作为InputArtifacts,以来自SourceArtifact和图像的appspec和taskdefBuildArtifact中的描述,以最终部署新的蓝色/绿色容器。

问题在于BuildArtifact中的图像定义。管道在Deploy阶段失败,并显示以下错误:

“”无效的动作配置尝试从工件中读取图像工件文件时发生异常:BuildArtifact。“”

如何正确配置“ Amazon ECS(蓝色/绿色)”部署阶段,以便它可以使用最近创建的映像并进行部署....通过替换taskdef.json中的占位符IMAGE_NAME?

任何暗示,高度赞赏:D

amazon-ecs aws-code-deploy aws-codepipeline aws-codebuild blue-green-deployment
1个回答
0
投票

Amazon ECS蓝色/绿色(或CodeDeployToECS)CodePipeline操作需要TaskDefinitionTemplateArtifact参数(请参阅[1])。

除了以上文件外,ECS Blue / Green部署还需要imageDetail.json(不是'imagedefinition.json')。文件结构和详细信息在此处[2]。将此文件添加到部署工件/版本控件的根目录。如果您不想手动添加此文件,则可以将ECR源操作用于CodePipeline,并使用您在ECS service / taskdef.json中使用的映像对其进行配置。为了清楚起见,所有这些都在[2]中讨论。

要了解如何将它们整合在一起,您还可以按照此处[3]的ECS Blue / Green部署分步说明进行操作。

参考:

[1] https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements:CodePipeline管道结构参考-CodePipeline中的操作结构要求[2] https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#file-reference-ecs-bluegreen:图像定义文件参考-Amazon ECS蓝色/绿色部署操作的imageDetail.json文件[3] https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html:教程:使用Amazon ECR源和ECS到CodeDeploy部署创建管道

© www.soinside.com 2019 - 2024. All rights reserved.