Почему CodePipeline требует `imagedefinitions.json`, когда определения задач ECS уже имеют это? - PullRequest
0 голосов
/ 17 октября 2019

ОК, поэтому у меня есть 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, которые я не понимаю.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

У вас есть хорошая точка зрения, однако использование «: последний» в производственных системах для идентификации / получения изображений, как правило, не очень хорошая идея, главным образом потому, что тег не является детерминированным и может привести к неожиданностям. В Интернете есть много статей, в которых обсуждается этот шаблон, например, [1].

Чтобы ответить на ваш вопрос, идея для imagedefinitions.json состоит в том, чтобы идентифицировать обновленное изображение для контейнера вопределение задачи. Он не предназначен для постоянного использования тега «: последний».

[1] https://vsupalov.com/docker-latest-tag/

0 голосов
/ 15 ноября 2019

printf '[{"name": "MyService", "imageUri": "% s"}]' что такое MyService в имени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...