

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# 예시: Amazon ECS 작업 정의 수정
<a name="render-ecs-action-example-workflow"></a>

다음은 빌드 및 배포 작업과 함께 **렌더링 Amazon ECS 작업 정의** 작업을 포함하는 전체 워크플로의 예입니다. 워크플로의 목적은 Amazon ECS 클러스터에 Docker 이미지를 빌드하고 배포하는 것입니다. 워크플로는 순차적으로 실행되는 다음 구성 요소로 구성됩니다.
+ **트리거** - 이 트리거는 소스 리포지토리에 변경 사항을 푸시할 때 워크플로 실행을 자동으로 시작합니다. 트리거에 대한 자세한 내용은 [트리거를 사용하여 워크플로 실행 자동 시작](workflows-add-trigger.md) 주제를 참조하세요.
+ **빌드** 작업(`BuildDocker`) - 트리거 시 작업은 Dockerfile을 사용하여 Docker 이미지를 빌드하고, 커밋 ID로 태그를 지정하고, 이미지를 Amazon ECR로 푸시합니다. 빌드 작업에 대한 자세한 내용은 [워크플로로 빌드하기](build-workflow-actions.md) 섹션을 참조하세요.
+ **렌더링 Amazon ECS 작업 정의** 작업(`RenderTaskDef`) - 빌드 작업이 완료되면 이 작업은 소스 리포지토리의 루트에 있는 기존 `taskdef.json`를 올바른 커밋 ID가 포함된 `image` 필드 값으로 업데이트합니다. 업데이트된 파일을 새 파일 이름(`task-definition-random-string.json`)으로 저장한 다음 이 파일이 포함된 출력 아티팩트를 생성합니다. 렌더링 작업은 `task-definition`라는 변수 역시 생성하며, 이를 새 작업 정의 파일의 이름으로 설정합니다. 아티팩트와 변수는 배포 작업, 즉 다음 작업을 사용합니다.
+ **Amazon ECS에 배포** 작업(`DeployToECS`) - **Amazon ECS에 배포 작업 정의** 작업이 완료되면, **Amazon ECS에 배포** 작업은 렌더링 작업(`TaskDefArtifact`)에서 생성된 출력 아티팩트를 찾고 그 안의 `task-definition-random-string.json`파일을 발견해 Amazon ECS 서비스에 등록합니다. 그런 다음 Amazon ECS 서비스는 `task-definition-random-string.json` 파일의 지침에 따라 Amazon ECS 클러스터 내에서 Amazon ECS 작업 및 연결된 Docker 이미지 컨테이너를 실행합니다.

```
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}
```