AWS CodePipeline с развертыванием ECS Blue / Green завершается с ошибкой из-за внутренней ошибки - PullRequest
0 голосов
/ 29 апреля 2019

У меня установлена ​​CodePipeline, где изменения в коде строятся и толкают изображение в ECR.Я ищу для автоматизации обновления ECS с новым образом, как он построен.Я настроил действие ECS Blue / Green, но когда он запускается, он почти сразу завершается с сообщением о «Внутренней ошибке».В CodeDeploy не создано ни одного неудачного развертывания.

Я настроил CodePipeline с двумя входами:

  1. исходный код, использованный для создания образа
  2. zip в S3содержащий appspec.yaml и taskdef.json

Когда любой из входных данных изменяется, я перестраиваю контейнер и нажимаю на ECR с тегом «последний».Следующим шагом должно стать внедрение Blue / Green в ECS.Я настроил CodeDeploy, и задание работает, если оно запускается вручную.

При запуске через CodePipeline происходит сбой, и я получаю сообщение «Ошибка выполнения действия: InternalError. Код ссылки на ошибку:". Я подозреваю, что в IAM может быть какая-то основная проблема, но я не могу найти, с чего начать смотреть на этом этапе. В CodeDeploy не показано неудачное развертывание, поэтому я не вижу способа получить больше информации о том, чтоне удалось.

Моя политика для CodePipeline скопирована с описанной здесь: https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-custom-role.html#view-default-service-role-policy

Я прочитал здесь документы по устранению неполадок: https://docs.aws.amazon.com/codepipeline/latest/userguide/troubleshooting.html

Я считаю, что мояпроблема похожа на описанную здесь: https://forums.aws.amazon.com/thread.jspa?messageID=897822

1 Ответ

2 голосов
/ 30 апреля 2019

После небольшого прочтения подобных постов здесь, на serverfault.com и форумах AWS, я смог решить эту проблему.

В моем случае проблема заключалась в том, что мой файл taskdef.json был недействительным. Мне потребовалось несколько часов, чтобы пройти каждый шаг, чтобы понять, что, хотя это был действительный JSON, он включал только раздел определений контейнеров. Исправляя это, теперь он работает правильно.

В итоге у меня есть два связанных CodePipelines. Один для развертывания обновленных образов ECR в ECS (описан выше), а другой - для обновления инфраструктуры и создания архива, содержащего taskdef.json и appspec.yaml. Если этот zip изменяется, то мой контейнерный конвейер работает Аналогично, если источник изображения контейнера изменяется. Нужно больше тестировать, но сейчас все работает очень гладко.

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