하나의 CodePipeline 프로젝트에서 여러 ECS 서비스 배포
개요
CodePipeline에서 하나의 프로젝트에서 여러 ECS 서비스를 배포하기 위한 설정 방법에 궁리가 필요했기 때문에 메모
포인트
imagedefinitions.json
생성 imagedefinitions.json
사용 buildspec.yml의 아티팩트에서 배포 할 서비스 수만큼 imagedefinitions.json을 생성합니다.
buildspec.yml
phases:
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker images...
- docker push $SERVICE1_REPOSITORY_URI:$IMAGE_TAG
- docker push $SERVICE2_REPOSITORY_URI:$IMAGE_TAG
- echo Writing image definitions file...
- printf '[{"name":"server","imageUri":"%s"}]' $SERVICE1_REPOSITORY_URI:$IMAGE_TAG > service1_imagedefinitions.json
- printf '[{"name":"runner","imageUri":"%s"}]' $SERVICE2_REPOSITORY_URI:$IMAGE_TAG > service2_imagedefinitions.json
artifacts:
files:
- service1_imagedefinitions.json
- service2_imagedefinitions.json
Deploy 스테이지의 여러 action을 생성하고 buildspec.yml에 따라 생성 된 아티팩트의 서비스 이름 _imagedefinitions.json을 사용합니다.
여기서 지정하는
サービス名_imagedefinitions.json
는, 정해지지 않기 때문에 좋아하는 이름으로 이름으로 좋다.빌드 단계에서 지정한
- printf '[{"name":"server","imageUri":"%s"}]' $SERVICE1_REPOSITORY_URI:$IMAGE_TAG > service1_imagedefinitions.json
- printf '[{"name":"runner","imageUri":"%s"}]' $SERVICE2_REPOSITORY_URI:$IMAGE_TAG > service2_imagedefinitions.json
service1_imagedefinitions.json
또는 service2_imagedefinitions.json
부분과 Deploy 스테이지의 action에서 지정하는 FileName이 일치하는 것이 중요합니다.Terraform
Terraform은 FileName 부분에
サービス名_imagedefinitions.json
와 같은 이미지 정의를 지정합니다. stage {
name = "Deploy"
dynamic "action" {
for_each = var.deploy_actions
content {
name = action.value.name
category = action.value.category
owner = action.value.owner
provider = action.value.provider
input_artifacts = action.value.input_artifacts
version = action.value.version
configuration = {
FileName = "service1_imagedefinitions.json"
ClusterName = var.cluster_name
ServiceName = var.service_name
}
}
}
AWS: aws_codepipeline - Terraform by HashiCorp
소감
AWSCode3 형제는 개념이 많이 출현하기 때문에 혼란스럽지만 빌드 → ECS 배포의 흐름은 매우 편리하다고 생각했습니다
Reference
이 문제에 관하여(하나의 CodePipeline 프로젝트에서 여러 ECS 서비스 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fuubit/items/fd8fbf7feafb362decb3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)