ОК, поэтому у меня есть CodePipeline, которая делает очень ванильный
CodeCommit -> Build Docker images -> CodeDeploy to ECS
В файле buildspec.yml
AWS требует вывода imagedefinitions.json
какартефакт, который CodePipeline может использовать для сопоставления имени контейнера с URL-адресом изображения ECR.
Вот часто цитируемый пример того, как сделать это в вашем 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 для CodeDeploy задачи ECS, мы должны предоставить информацию, уже указанную в ECSопределение задачи? Было бы намного чище избавиться от необходимости артефакта (и корзины S3 для хранения указанного артефакта) здесь!
Возможно, есть некоторые основы CodeDeploy / ECS, которые я не понимаю.