Amazon Elastic Service 및 CodeDeploy 블루-그린 - AWS CodePipeline

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Elastic Service 및 CodeDeploy 블루-그린

에서 파이프라인을 구성할 수 있습니다.AWS CodePipeline블루/그린 배포를 사용하여 컨테이너 애플리케이션을 배포합니다. 블루/그린 배포에서는 이전 버전과 함께 새 버전의 애플리케이션을 시작하고 트래픽을 다시 라우팅하기 전에 새 버전을 테스트할 수 있습니다. 또한 배포 프로세스를 모니터링하고 문제가 발생할 경우 신속하게 롤백할 수 있습니다.

완성된 파이프라인은 이미지 또는 작업 정의 파일의 변경 사항을 감지하여 사용합니다. CodeDeploy 트래픽을 Amazon ECS 클러스터 및 로드 밸런서로 라우팅하고 배포합니다. CodeDeploy 로드 밸런서에 새 리스너를 생성합니다. 이 리스너는 특수 포트를 통해 새 작업을 대상으로 지정할 수 있습니다. 또한 소스 위치를 사용하도록 파이프라인을 구성할 수 있습니다. CodeCommit 리포지토리에는 Amazon ECS 작업 정의가 저장됩니다.

파이프라인을 생성하기 전에 Amazon ECS 리소스를 이미 생성했어야 합니다. CodeDeploy 리소스, 로드 밸런서 및 대상 그룹. 이미 이미지 저장소에 이미지에 태그를 지정하고 저장한 다음 작업 정의를 업로드해야 합니다. AppSpec 파일을 파일 리포지토리에 저장합니다.

참고

이 주제에서는 Amazon ECS에 대해 설명합니다. CodeDeploy 에 대한 블루/그린 배포 작업 CodePipeline. Amazon ECS 표준 배포 작업에 대한 참조 정보는 에서 확인할 수 있습니다. CodePipeline, 참조 사항Amazon Elastic Container Service.

작업 유형

  • 범주: Deploy

  • 소유자: AWS

  • 공급자: CodeDeployToECS

  • 버전: 1

구성 파라미터

ApplicationName

필수 사항: 예

에 있는 애플리케이션의 이름: CodeDeploy. 파이프라인을 생성하려면 에서 애플리케이션을 이미 생성해야 합니다. CodeDeploy.

DeploymentGroupName

필수 사항: 예

에 대해 생성한 Amazon ECS 작업 세트에 지정된 배포 그룹 CodeDeploy 애플리케이션을 배포합니다. 파이프라인을 생성하기 전에 배포 그룹이 이미 에 생성되어 있어야 합니다. CodeDeploy.

TaskDefinitionTemplateArtifact

필수 사항: 예

배포 작업에 작업 정의 파일을 제공하는 입력 아티팩트의 이름입니다. 일반적으로 소스 작업에서 출력 아티팩트의 이름입니다. 콘솔을 사용하는 경우 소스 작업 출력 아티팩트의 기본 이름은 다음과 같습니다.SourceArtifact.

AppSpecTemplateArtifact

필수 사항: 예

을 제공하는 입력 아티팩트의 이름입니다. AppSpec 파일을 배포 작업에 저장합니다. 일반적으로 소스 작업에서 출력 아티팩트의 이름입니다. 콘솔을 사용하는 경우 소스 작업 출력 아티팩트의 기본 이름은 다음과 같습니다.SourceArtifact.

AppSpecTemplatePath

필수 사항: 아니요

의 파일 이름: AppSpec 파이프라인 소스 파일 위치 (예: 파이프라인) 에 저장된 파일 CodeCommit 리포지토 기본적인 파일 이름은 appspec.yaml입니다. 만약 당신의 AppSpec 파일은 이름이 같고 파일 리포지토리의 루트 수준에 저장되므로 파일 이름을 제공할 필요가 없습니다. 기본 경로가 아닌 경우 경로 및 파일 이름을 입력합니다.

TaskDefinitionTemplatePath

필수 사항: 아니요

파이프라인 파일 소스 위치에 저장된 작업 정의의 파일 이름 (예: 파이프라인) CodeCommit 리포지토 기본적인 파일 이름은 taskdef.json입니다. 작업 정의 파일의 이름이 같고 파일 리포지토리의 루트 수준에 저장되어 있는 경우 파일 이름을 제공할 필요가 없습니다. 기본 경로가 아닌 경우 경로 및 파일 이름을 입력합니다.

이미지 <Number>ArtifactName

필수 사항: 아니요

배포 작업에 이미지를 제공하는 입력 아티팩트의 이름입니다. 이는 일반적으로 이미지 저장소의 출력 아티팩트 (예: Amazon ECR 소스 작업의 출력) 입니다.

사용 가능한 값:<Number>1에서 4까지입니다.

이미지 <Number>ContainerName

필수 사항: 아니요

이미지 리포지토리에서 사용할 수 있는 이미지 이름 (예: Amazon ECR 소스 리포지토리).

사용 가능한 값:<Number>1에서 4까지입니다.

입력 아티팩트

  • 아티팩트 수: 1 to 5

  • 설명:CodeDeployToECS액션은 먼저 작업 정의 파일을 찾고 AppSpec 소스 파일 저장소의 파일을 선택한 다음 이미지 저장소에서 이미지를 찾은 다음 작업 정의의 새 버전을 동적으로 생성하고 마지막으로 AppSpec 작업 세트 및 컨테이너를 클러스터에 배포하는 명령

    CodeDeployToECS액션은imageDetail.json이미지 에서 이미지 URI를 이미지에 매핑하는 파일입니다. Amazon ECR 이미지 리포지토리에 변경을 커밋하면 파이프라인 ECR 소스 작업이 다음을 생성합니다.imageDetail.json해당 커밋에 대한 파일. 를 수동으로 추가할 수도 있습니다.imageDetail.json작업이 자동화되지 않은 파이프라인용 파일입니다. imageDetail.json 파일에 대한 자세한 내용은 아마존 ECS 블루/그린 배포 작업을 위한 imageDetail.json 파일 단원을 참조하십시오.

    CodeDeployToECS작업은 작업 정의의 새 개정을 동적으로 생성합니다. 이 단계에서 이 작업은 작업 정의 파일의 자리 표시자를 ImageDetail.json 파일에서 검색된 이미지 URI로 바꿉니다. 예를 들면, 을 (를) 설정하는 경우이미지1_이름이미지 1으로ContainerName 매개 변수, 자리 표시자를 지정해야 합니다.<IMAGE1_NAME>작업 정의 파일의 이미지 필드 값으로 사용합니다. 이 경우, CodeDeployToECS 액션이 플레이스홀더를 대체합니다<IMAGE1_NAME>Image1로 지정한 아티팩트의 ImageDetail.json에서 검색된 실제 이미지 URI로ArtifactName.

    작업 정의 업데이트의 경우 CodeDeploy AppSpec.yaml파일에는 들어 있습니다.TaskDefinition재산.

    TaskDefinition: <TASK_DEFINITION>

    이 속성은 에 의해 업데이트됩니다.CodeDeployToECS새 작업 정의를 만든 후의 동작

    의 가치를 위해TaskDefinition필드, 자리 표시자 텍스트는 여야 합니다<TASK_DEFINITION>. 이CodeDeployToECSaction은 이 자리 표시자를 동적으로 생성된 작업 정의의 실제 ARN으로 바꿉니다.

출력 아티팩트

  • 아티팩트 수: 0

  • 설명: 출력 아티팩트는 이 작업 유형에는 적용되지 않습니다.

작업 선언

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.

  • 자습서: Amazon ECR 소스 및 ECS에서CodeDeploy 배포로 파이프라인 생성— 이 자습서는 을 (를) 생성하는 절차를 살펴봅니다. CodeDeploy 및 블루/그린 배포에 필요한 Amazon ECS 리소스. 자습서에서는 Docker 이미지를 Amazon ECR에 푸시하고 Docker 이미지 이름, 컨테이너 이름, Amazon ECS 서비스 이름 및 로드 밸런서 구성의 목록을 표시하는 Amazon ECS 작업 정의를 생성하는 방법을 보여 줍니다. 그런 다음 자습서에서는 생성 절차를 살펴봅니다. AppSpec 배포를 위한 파일 및 파이프라인.

    참고

    이 항목 및 자습서에서는 CodeDeploy/ECS 블루/그린 액션 대상 CodePipeline. ECS 표준 조치에 대한 자세한 내용은 CodePipeline, 참조 사항자습서: 를 사용한 지속적 배포 CodePipeline.

  • AWS CodeDeploy사용 설명서— 블루/그린 배포에서 로드 밸런서, 프로덕션 리스너, 대상 그룹 및 Amazon ECS 애플리케이션을 사용하는 방법에 대한 자세한 내용은 을 참조하십시오.자습서: Amazon ECS 서비스 배포. 이 참조 정보는AWS CodeDeploy사용 설명서Amazon ECS를 통한 블루/그린 배포에 대한 개요를 제공합니다.AWS CodeDeploy.

  • Amazon Elastic Container Service— Docker 이미지 및 컨테이너, ECS 서비스 및 클러스터, ECS 작업 세트를 사용한 작업에 대한 자세한 내용은 을 참조하십시오.Amazon EC2란 무엇입니까?