예: Amazon ECS 태스크데프 수정 - 아마존 CodeCatalyst

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

예: Amazon ECS 태스크데프 수정

다음은 빌드 및 배포 작업과 함께 Render Amazon ECS 작업 정의 작업을 포함하는 전체 워크플로의 예입니다. 워크플로의 목적은 Docker 이미지를 구축하여 Amazon ECS 클러스터에 배포하는 것입니다. 워크플로는 순차적으로 실행되는 다음과 같은 구성 블록으로 구성됩니다.

  • 트리거 - 이 트리거는 소스 리포지토리에 변경 내용을 푸시할 때 워크플로가 자동으로 실행됩니다. 트리거에 대한 자세한 내용은 트리거를 사용하여 자동으로 워크플로 실행 시작 주제를 참조하십시오.

  • 빌드 작업 (BuildDocker) — 트리거 시 작업은 Dockerfile을 사용하여 Docker 이미지를 빌드하고, 커밋 ID로 태그를 지정하고, 이미지를 Amazon에 푸시합니다. ECR 빌드 작업에 대한 자세한 내용은 을 참조하십시오. 워크플로를 사용한 구축

  • Render Amazon ECS 작업 정의 작업 (RenderTaskDef) — 빌드 작업이 완료되면 이 작업은 소스 리포지토리의 루트에 taskdef.json 있는 기존 작업을 올바른 커밋 ID가 포함된 image 필드 값으로 업데이트합니다. 업데이트된 파일을 새 파일 이름 (task-definition-random-string.json) 으로 저장한 다음 이 파일이 포함된 출력 아티팩트를 생성합니다. 또한 렌더링 액션은 라는 task-definition 변수를 생성하여 새 작업 정의 파일의 이름으로 설정합니다. 아티팩트와 변수는 다음 단계인 배포 작업에 사용됩니다.

  • Amazon에 배포 ECS 작업 (DeployToECS) — Amazon ECS 작업 정의 렌더링 작업을 완료하면 ECSAmazon에 배포 작업은 렌더링 작업 (TaskDefArtifact) 에서 생성된 출력 아티팩트를 찾아 그 안에서 task-definition-random-string.json 파일을 찾아 Amazon ECS 서비스에 등록합니다. 그러면 Amazon ECS 서비스가 task-definition-random-string.json 파일의 지침에 따라 Amazon 클러스터 내에서 Amazon ECS 작업 및 관련 Docker 이미지 컨테이너를 실행합니다. ECS

Name: codecatalyst-ecs-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildDocker: Identifier: aws/build@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-build-role Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-2.amazonaws.com #build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG RenderTaskDef: DependsOn: - BuildDocker Identifier: aws/ecs-render-task-definition@v1 Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: task-definition: taskdef.json container-definition-name: codecatalyst-ecs-container image: $REPOSITORY_URI:$IMAGE_TAG # The output artifact contains the updated task definition file. # The new file is prefixed with 'task-definition'. # The output variable is set to the name of the updated task definition file. Outputs: Artifacts: - Name: TaskDefArtifact Files: - "task-definition*" Variables: - task-definition DeployToECS: Identifier: aws/ecs-deploy@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-deploy-role #Input artifact contains the updated task definition file. Inputs: Sources: [] Artifacts: - TaskDefArtifact Configuration: region: us-east-2 cluster: codecatalyst-ecs-cluster service: codecatalyst-ecs-service task-definition: ${RenderTaskDef.task-definition}