отвечая на мой собственный вопрос здесь, надеюсь, это поможет другим, которые сталкиваются с такой же ситуацией.
- определение образа файла. json не подходит для действия развертывания «Amazon ECS Blue / Green». Для этого вам нужно создать файл imageDetail. json на этапе сборки и предоставить его как артефакт на этапе развертывания. Как ? Вот так выглядит нижняя часть моего buildspe c .yaml:
- printf '{"ImageURI":"%s"}' $REPOSITORY_URI:$IMAGE_TAG > imageDetail.json
artifacts:
files:
- 'image*.json'
- 'appspec.yaml'
- 'taskdef.json'
secondary-artifacts:
DefinitionArtifact:
files:
- appspec.yaml
- taskdef.json
ImageArtifact:
files:
- imageDetail.json
На этапе развертывания CodePipeline используйте DefinitionArtifact и ImageArtifact в качестве входных артефактов и настройте их в соответствующем разделе «
определение задачи Amazon ECS » и «
AWS CodeDeploy AppSpe c file.".
Убедитесь, что ваш apppe c .yaml содержит заполнитель для определения задачи. Вот мой apppe c .yaml:
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: <TASK_DEFINITION>
LoadBalancerInfo:
ContainerName: "my-test-container"
ContainerPort: 8000
Также убедитесь, что ваш taskdef. json содержит заполнитель для окончательного изображения, например
...
"image": <IMAGE1_NAME>,
...
используйте этот заполнитель в конфигурации codepipeline вашей сине-зеленой фазы развертывания в разделе «
Динамическое обновление образа определения задачи - необязательно », выбрав входной артефакт как «ImageArtifact» и заполнитель
<IMAGE1_NAME>