По сути, мне нужно настроить CI / CD с исходным кодом bitbucket для контейнеров ECS. Я хочу использовать CodePipline для развертывания нового образа ECR в ECS.
В настоящее время в AWS CodePipline нет возможности указать битовую корзину в качестве источника. Однако мне удалось настроить CodeBuild с помощью webhooks, чтобы он создавал файл Docker и отправлял его в ECR при каждом переходе push-to-release.
Я хочу настроить ECR в качестве этапа «источника» в CodePipline и развернуть его в существующем кластере / службе ECS, чтобы развертывание было автоматизировано.
- Я указал "Amazon ECR" в качестве поставщика действий с выходным артефактом "image_details" на этапе исходного кода.
- Я указал «Amazon ECS» (не «Amazon ECS (синий / зеленый)») в качестве поставщика действий для этапа развертывания с «image_details» в качестве входного артефакта
К сожалению, базовая конфигурация и цепочка артефактов приводят к появлению следующей ошибки на этапе развертывания:
Invalid action configuration
The image definition file imageDetail.json contains invalid JSON format
Хотя этап «Amazon ECR» предоставляет imageDetail.json в качестве выходного артефакта, он не ожидается для поставщика развертывания «Amazon ECS». Есть ли рациональный способ обойти эту проблему?
Я знаю, что можно настроить CI / CD с помощью bitbucket + API Gateway / Lambda + CodePipeline, я также рассматриваю возможность использования CodeCommit вместо bitbucket в качестве исходного репозитория - тем не менее, надеюсь, что существует элегантное решение для используйте bitbucket непосредственно с CodePipeline.
UPD:
Я закончил с довольно хорошей конфигурацией, описанной в этом блоге: общая идея состоит в том, чтобы позволить CodeBuild загружать исходный код из bitbucket в S3, а затем использовать CodePipeline с S3 в качестве источника для развертывания нового образа докера. ECR и опубликовать новую редакцию определения задачи в кластере ECS.
S3 все еще стоит над головой, и я ищу более элегантное решение для этой задачи.