【发布时间】:2020-02-14 00:09:42
【问题描述】:
好的,所以我有一个非常普通的 CodePipeline
CodeCommit -> Build Docker images -> CodeDeploy to ECS
在buildspec.yml 文件中,AWS requires outputting imagedefinitions.json 作为工件,CodePipeline 可以使用它来将容器名称映射到 ECR 图像 URL。
这是在您的buildspec.yml 中经常被引用的示例:
printf '[{"name":"MyService","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/myservice/app:latest > imagedefinitions.json
但这对我来说似乎完全多余。在 ECS 任务定义中,我们的containerDefinitions 下可以有以下内容:
"containerDefinitions": [
{
"name": "MyService",
"image": "123456789.dkr.ecr.us-east-1.amazonaws.com/myservice/app:latest"
},
...
]
为什么,为了使用 CodePipeline 对 ECS 任务进行 CodeDeploy,我们必须提供 ECS 任务定义中已经指定的信息?在这里消除对工件(以及用于存储所述工件的 S3 存储桶)的需求会更加清洁!
也许我不了解 CodeDeploy/ECS 的一些基础知识。
【问题讨论】:
标签: amazon-ecs aws-code-deploy aws-codepipeline