

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

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

# Amazon ECS 작업 정의 수정
<a name="render-ecs-action"></a>

이 섹션에서는 CodeCatalyst 워크플로를 사용하여 Amazon Elastic Container Service(Amazon ECS) [작업 정의 파일](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)의 `image` 필드를 업데이트하는 방법을 설명합니다. 이렇게 하려면, 워크플로에 **Amazon ECS 작업 정의 렌더링** 작업을 추가해야 합니다. 이 작업은 런타임 시 워크플로에서 제공하는 Docker 이미지 이름으로 작업 정의 파일의 이미지 필드를 업데이트합니다.

**참고**  
이 작업을 사용하여 작업 정의의 `environment` 필드를 환경 변수로 업데이트할 수도 있습니다.

**Topics**
+ [이 작업을 사용해야 하는 경우](#render-ecs-action-when-to-use)
+ ['Amazon ECS 작업 정의 렌더링' 작업 작동 방식](#render-ecs-action-how-it-works)
+ ['Amazon ECS 작업 정의 렌더링' 작업에 사용되는 런타임 이미지](#render-ecs-action-runtime)
+ [예시: Amazon ECS 작업 정의 수정](render-ecs-action-example-workflow.md)
+ ['Amazon ECS 작업 정의 렌더링' 작업 추가](render-ecs-action-add.md)
+ [업데이트된 작업 정의 파일 보기](render-ecs-action-view.md)
+ ['Amazon ECS 작업 정의 렌더링' 변수](render-ecs-action-variables.md)
+ ['Amazon ECS 작업 정의 렌더링' 작업 YAML](render-ecs-action-ref.md)

## 이 작업을 사용해야 하는 경우
<a name="render-ecs-action-when-to-use"></a>

커밋 ID 또는 타임스탬프와 같은 동적 콘텐츠가 포함된 Docker 이미지를 빌드하고 태그를 지정하는 워크플로가 있는 경우 이 옵션을 사용합니다.

작업 정의 파일에 항상 동일하게 유지되는 이미지 값이 포함된 경우 이 작업을 사용하지 마세요. 이 경우 작업 정의 파일에 이미지 이름을 수동으로 입력할 수 있습니다.

## 'Amazon ECS 작업 정의 렌더링' 작업 작동 방식
<a name="render-ecs-action-how-it-works"></a>

워크플로의 **빌드** 및 **Amazon ECS에 배포** 작업과 함께 **Amazon ECS 작업 정의 렌더링** 작업을 사용해야 합니다. 이 작업들을 함께 사용하면 다음과 같이 작동합니다.

1. **빌드** 작업은 Docker 이미지를 빌드하고 이름, 커밋 ID, 타임스탬프 또는 기타 동적 콘텐츠로 태그를 지정합니다. 예를 들어 빌드 작업은 다음과 같습니다.

   ```
   MyECSWorkflow
     Actions:
       BuildAction:
         Identifier: aws/build@v1
         ...
         Configuration:
           Steps:
           # Build, tag, and push the Docker image...
             - Run: docker build -t MyDockerImage:${WorkflowSource.CommitId} .
             ...
   ```

   앞의 코드에서 `docker build -t` 지시문은 Docker 이미지를 빌드하고 작업 런타임 시 커밋 ID로 태그를 지정하도록 나타냅니다. 생성된 이미지 이름은 다음과 같을 수 있습니다.

   `MyDockerImage:a37bd7e`

1. **렌더링 Amazon ECS 작업 정의** 작업은 다음과 같이 동적으로 생성된 이미지 이름 `MyDockerImage:a37bd7e`를 작업 정의 파일에 추가합니다.

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role",
       "containerDefinitions": [
           {
               "name": "codecatalyst-ecs-container",
               "image":  MyDockerImage:a37bd7e, 
               "essential": true,
               ...
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
   ...
   }
   ```

   필요에 따라 **렌더링 Amazon ECS 작업 정의** 작업에서 다음과 같은 환경 변수를 작업 정의에 추가하도록 할 수도 있습니다.

   ```
   {
     "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role",
     "containerDefinitions": [
       {
         "name": "codecatalyst-ecs-container",
         "image":  MyDockerImage:a37bd7e,
         ...
         "environment": [
           {
             name": "ECS_LOGLEVEL",
             value": "info"
           }
         ]
       }
     ],
   ...
   }
   ```

   자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [환경 변수 지정](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html)을 참조하세요.

1. **Amazon ECS에 배포** 작업은 업데이트된 작업 정의 파일을 Amazon ECS에 등록합니다. 업데이트된 작업 정의 파일을 등록하면 새 이미지 `MyDockerImage:a37bd7e`가 Amazon ECS에 배포됩니다.

## 'Amazon ECS 작업 정의 렌더링' 작업에 사용되는 런타임 이미지
<a name="render-ecs-action-runtime"></a>

**Amazon ECS 작업 정의 렌더링** 작업은 [2022년 11월 이미지](build-images.md#build.previous-image)에서 실행됩니다. 자세한 내용은 [활성 이미지](build-images.md#build-curated-images) 단원을 참조하십시오.

# 예시: 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}
```

# 'Amazon ECS 작업 정의 렌더링' 작업 추가
<a name="render-ecs-action-add"></a>

 다음 지침을 사용하여 워크플로에 **Amazon ECS 작업 정의 렌더링** 작업을 추가합니다.

**사전 조건**  
시작하기 전에, Docker 이미지를 동적으로 생성하는 빌드 작업이 포함된 워크플로가 있는지 확인합니다. 자세한 내용은 앞의 [워크플로 예시](render-ecs-action-example-workflow.md)를 참조하세요.

------
#### [ Visual ]

**시각적 편집기를 사용하여 'Amazon ECS 작업 정의 렌더링' 작업을 추가하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트를 선택합니다.

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **비주얼**을 선택합니다.

1. 왼쪽 상단에서 **\$1 작업**을 선택하여 작업 카탈로그를 엽니다.

1. 드롭다운 목록에서 **Amazon CodeCatalyst**를 선택합니다.

1. **Amazon ECS 작업 정의 렌더링** 작업을 검색하고, 다음 중 하나를 수행합니다.
   + 더하기 기호(**\$1**)를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

     또는
   + **Amazon ECS 작업 정의 렌더링**을 선택합니다. 작업 세부 정보 대화 상자가 나타납니다. 이 대화 상자에서 다음을 수행합니다.
     + (선택 사항) **소스 보기**를 선택하여 [작업의 소스 코드를 봅니다](workflows-view-source.md#workflows-view-source.title).
     + **워크플로에 추가**를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

1. **입력** 및 **구성** 탭에서 필요에 따라 필드를 작성합니다. 각 필드의 설명은 ['Amazon ECS 작업 정의 렌더링' 작업 YAML](render-ecs-action-ref.md) 섹션을 참조하세요. 이 참조는 YAML 및 시각적 편집기 모두에 나타나는 각 필드(및 해당 YAML 속성 값)에 대한 자세한 정보를 제공합니다.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------
#### [ YAML ]

**YAML 편집기를 사용하여 'Amazon ECS 작업 정의 렌더링' 작업을 추가하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트를 선택합니다.

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **YAML**을 선택합니다.

1. 왼쪽 상단에서 **\$1 작업**을 선택하여 작업 카탈로그를 엽니다.

1. 드롭다운 목록에서 **Amazon CodeCatalyst**를 선택합니다.

1. **Amazon ECS 작업 정의 렌더링** 작업을 검색하고, 다음 중 하나를 수행합니다.
   + 더하기 기호(**\$1**)를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

     또는
   + **Amazon ECS 작업 정의 렌더링**을 선택합니다. 작업 세부 정보 대화 상자가 나타납니다. 이 대화 상자에서 다음을 수행합니다.
     + (선택 사항) **소스 보기**를 선택하여 [작업의 소스 코드를 봅니다](workflows-view-source.md#workflows-view-source.title).
     + **워크플로에 추가**를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

1. 필요에 따라 YAML 코드의 속성을 수정합니다. 사용 가능한 각 속성에 대한 설명은 ['Amazon ECS 작업 정의 렌더링' 작업 YAML](render-ecs-action-ref.md)에서 볼 수 있습니다.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------

**다음 단계**

렌더링 작업을 추가한 후, [워크플로를 사용하여 Amazon ECS에 배포](deploy-action-ecs.md)의 지침에 따라 **Amazon ECS에 배포** 작업을 워크플로에 추가합니다. 배포 작업을 추가하는 동안 다음을 수행합니다.

1. 배포 작업의 **입력** 탭의 **아티팩트 - 선택 사항**에서 렌더링 작업으로 생성된 아티팩트를 선택합니다. 여기에는 업데이트된 작업 정의 파일이 포함되어 있습니다.

   아티팩트에 대한 자세한 내용은 [작업 간 아티팩트 및 파일 공유](workflows-working-artifacts.md) 섹션을 참조하세요.

1. 배포 작업의 **구성** 탭의 **작업 정의** 필드에서 `RenderTaskDef`와 같이 *작업 이름*이 렌더링 작업의 이름인 `${action-name.task-definition}` 작업 변수를 지정합니다. 렌더링 작업은 이 변수를 태스크 정의 파일의 새 이름으로 설정합니다.

   변수에 대한 자세한 내용은 [워크플로에서 변수 사용](workflows-working-with-variables.md) 섹션을 참조하세요.

   배포 작업을 구성하는 방법에 대한 자세한 내용은 앞의 [워크플로 예시](render-ecs-action-example-workflow.md)를 참조하세요.

# 업데이트된 작업 정의 파일 보기
<a name="render-ecs-action-view"></a>

업데이트된 작업 정의 파일의 이름과 내용을 볼 수 있습니다.

****Amazon ECS 작업 정의 렌더링** 작업이 파일을 처리한 후에 업데이트된 작업 정의 파일의 이름을 볼 수 있습니다.**

1. 완료된 렌더링 작업이 포함된 실행을 찾습니다.

   1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

   1. 프로젝트를 선택합니다.

   1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

   1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

   1. 완료된 렌더링 작업이 포함된 실행을 선택합니다.

1. 워크플로 다이어그램에서 렌더링 작업을 선택합니다.

1. **출력**을 선택합니다.

1. **변수**를 선택합니다.

1. 작업 정의 파일 이름이 표시됩니다. 이 이름은 `task-definition--259-0a2r7gxlTF5X-.json`와 유사합니다.

**업데이트된 작업 정의 파일의 내용을 보려면**

1. 완료된 렌더링 작업이 포함된 실행을 찾습니다.

   1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

   1. 프로젝트를 선택합니다.

   1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

   1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

   1. 완료된 렌더링 작업이 포함된 실행을 선택합니다.

1. 워크플로 실행의 상단에서 **비주얼** 및 **YAML** 옆에 있는 **워크플로 출력**을 선택합니다.

1. **아티팩트** 섹션에서 업데이트된 작업 정의 파일이 포함된 아티팩트 옆에 있는 **다운로드**를 선택합니다. 이 아티팩트에는 렌더링 작업의 이름으로 설정된 **생성 기준** 열이 있습니다.

1. .zip 파일을 열어 작업 정의 .json 파일을 봅니다.

# 'Amazon ECS 작업 정의 렌더링' 변수
<a name="render-ecs-action-variables"></a>

**Amazon ECS 태스크 정의 렌더링** 작업은 런타임에 다음 변수를 생성하고 설정합니다. 이를 *사전 정의된 변수*라고 합니다.

워크플로에서 이러한 변수를 참조하는 방법에 대한 자세한 내용은 [사전 정의된 변수 사용](workflows-using-predefined-variables.md) 섹션을 참조하세요.


| Key(키) | 값 | 
| --- | --- | 
|  작업 정의  |  **렌더링 Amazon ECS 작업 정의** 작업에 의해 업데이트된 작업 정의 파일에 지정된 이름입니다. 이름은 `task-definition-random-string.json` 형식입니다. 예시: `task-definition--259-0a2r7gxlTF5Xr.json`  | 

# 'Amazon ECS 작업 정의 렌더링' 작업 YAML
<a name="render-ecs-action-ref"></a>

다음은 **렌더링 Amazon ECS 작업 정의** 작업의 YAML 정의입니다. 이러한 작업 사용 방법을 배우려면 [Amazon ECS 작업 정의 수정](render-ecs-action.md) 섹션을 참조하세요.

이 작업 정의는 더 광범위한 워크플로 정의 파일 내의 섹션으로 존재합니다. 이 파일에 대한 자세한 내용은 [워크플로 YAML 정의](workflow-reference.md)을 참조합니다.

**참고**  
이어지는 대부분의 YAML 속성에는 시각적 편집기에 해당 UI 요소가 있습니다. UI 요소를 찾으려면 **Ctrl\$1F**를 사용합니다. 요소가 연결된 YAML 속성과 함께 나열됩니다.

```
# The workflow definition starts here.
# See 최상위 속성 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  ECSRenderTaskDefinition\$1nn: 
    Identifier: aws/ecs-render-task-definition@v1
    DependsOn:
      - build-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - task-definition-artifact
      Variables:
        - Name: variable-name-1
          Value: variable-value-1
        - Name: variable-name-2
          Value: variable-value-2
    Configuration 
      task-definition: task-definition-path
      container-definition-name: container-definition-name
      image: docker-image-name
      environment-variables:
        - variable-name-1=variable-value-1
        - variable-name-2=variable-value-2
    Outputs:
      Artifacts:
        - Name: TaskDefArtifact
          Files: "task-definition*"
      Variables:
        - task-definition
```

## ECSRenderTaskDefinition
<a name="render.ecs.name"></a>

(필수)

작업 이름을 지정합니다. 워크플로 내의 모든 작업 이름은 고유해야 합니다. 작업 이름은 영숫자 문자(a-z, A-Z, 0-9), 하이픈(-) 및 밑줄(\$1)로 제한됩니다. 스페이스은 허용되지 않습니다. 작업 이름에서 특수 문자와 공백을 활성화하는 데 따옴표를 사용할 수 없습니다.

기본값: `ECSRenderTaskDefinition_nn`.

해당 UI: 구성 탭/**작업 이름**

## Identifier
<a name="render.ecs.identifier"></a>

(*ECSRenderTaskDefinition*/**Identifier**)

(필수)

작업을 식별합니다. 버전을 변경하려는 경우가 아니면 이 속성을 변경하지 마세요. 자세한 내용은 [사용할 작업 버전 지정](workflows-action-versions.md) 섹션을 참조하세요.

기본값: `aws/ecs-render-task-definition@v1`.

해당 UI: 워크플로 다이어그램/ECSRenderTaskDefinition\$1nn/**aws/ecs-render-task-definition@v1** 레이블

## DependsOn
<a name="render.ecs.dependson"></a>

(*ECSRenderTaskDefinition*/**DependsOn**)

(선택 사항)

이 작업을 실행하기 위해 성공적으로 실행해야 하는 작업, 작업 그룹 또는 게이트를 지정합니다.

'depends on' 함수에 대한 자세한 내용은 [작업 순서 지정](workflows-depends-on.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**의존 - 선택 사항**

## Compute
<a name="render.ecs.computename"></a>

(*ECSRenderTaskDefinition*/**Compute**)

(선택 사항)

워크플로 작업을 실행하는 데 사용되는 컴퓨팅 엔진입니다. 워크플로 수준 또는 작업 수준에서 컴퓨팅을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 워크플로 수준에서 지정하면 컴퓨팅 구성이 워크플로에 정의된 모든 작업에 적용됩니다. 워크플로 수준에서는 동일한 인스턴스에서 여러 작업을 실행할 수도 있습니다. 자세한 내용은 [작업 간에 컴퓨팅 공유](compute-sharing.md) 섹션을 참조하세요.

해당 UI: *없음*

## Type
<a name="render.ecs.computetype"></a>

(*ECSRenderTaskDefinition*/Compute/**Type**)

([Compute](#render.ecs.computename) 포함 시 필수)

컴퓨팅 엔진의 유형입니다. 다음 값 중 하나를 사용할 수 있습니다.
+ **EC2**(시각 편집기) 또는 `EC2`(YAML 편집기)

  작업 실행 중 유연성을 위해 최적화되었습니다.
+ **Lambda**(시각 편집기) 또는 `Lambda`(YAML 편집기)

  작업 시작 속도를 최적화했습니다.

컴퓨팅 유형에 대한 자세한 정보는 [컴퓨팅 유형](workflows-working-compute.md#compute.types)을 참고하세요.

해당 UI: 구성 탭/**컴퓨팅 유형**

## Fleet
<a name="render.ecs.computefleet"></a>

(*ECSRenderTaskDefinition*/Compute/**Fleet**)

(선택 사항)

워크플로 또는 워크플로 작업을 실행할 시스템 또는 플릿을 지정합니다. 온디맨드 플릿의 경우 작업이 시작되면 워크플로가 필요한 리소스를 프로비저닝하고 작업이 완료되면 시스템이 파괴됩니다. 온디맨드 플릿의 예시: `Linux.x86-64.Large`, `Linux.x86-64.XLarge`. 온디맨드 플릿에 대한 자세한 내용은 [온디맨드 플릿 속성](workflows-working-compute.md#compute.on-demand) 섹션을 참조하세요.

프로비저닝된 플릿을 사용하면 워크플로 작업을 실행하도록 전용 시스템 세트를 구성할 수 있습니다. 이러한 시스템은 유휴 상태로 유지되므로 작업을 즉시 처리할 수 있습니다. 프로비저닝된 플릿에 대한 자세한 내용은 [프로비저닝된 플릿 속성](workflows-working-compute.md#compute.provisioned-fleets) 섹션을 참조하세요.

`Fleet` 생략 시 기본값은 `Linux.x86-64.Large`입니다.

해당 UI: 구성 탭/**컴퓨팅 플릿**

## Timeout
<a name="render.ecs.timeout"></a>

(*ECSRenderTaskDefinition*/**Timeout**)

(선택 사항)

CodeCatalyst가 작업을 종료하기 전에 작업을 실행할 수 있는 시간을 분(YAML 편집기) 또는 시간 및 분(시각적 편집기) 단위로 지정합니다. 최소값은 5분이고 최대값은 [CodeCatalyst의 워크플로 할당량](workflows-quotas.md)에 설명되어 있습니다. 기본 제한 시간은 최대 제한 시간과 동일합니다.

해당 UI: 구성 탭/**제한 시간 - 선택 사항 **

## Inputs
<a name="render.ecs.inputs"></a>

(*ECSRenderTaskDefinition*/**Inputs**)

(선택 사항)

이 `Inputs` 섹션에서는 워크플로 실행 중에 `ECSRenderTaskDefinition`에 필요한 데이터를 정의합니다.

**참고**  
**렌더링 Amazon ECS 작업 정의** 작업당 하나의 입력(소스 또는 아티팩트)만 허용됩니다. 변수는 이 합계에 포함되지 않습니다.

해당 UI: **입력** 탭

## Sources
<a name="render.ecs.inputs.sources"></a>

(*ECSRenderTaskDefinition*/Inputs/**Sources**)

(작업 정의 파일이 소스 리포지토리에 저장된 경우 필수)

태스크 정의 파일이 소스 리포지토리에 저장되어 있는 경우 해당 소스 리포지토리의 레이블을 지정합니다. 현재, `WorkflowSource` 레이블만 지원됩니다.

태스크 정의 파일이 소스 리포지토리에 포함되어 있지 않은 경우, 다른 작업에서 생성된 아티팩트에 있어야 합니다.

소스에 대한 자세한 내용은 [워크플로에 소스 리포지토리 연결](workflows-sources.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**소스 - 선택 사항**

## Artifacts - input
<a name="render.ecs.inputs.artifacts"></a>

(*ECSRenderTaskDefinition*/Inputs/**Artifacts**)

(작업 정의 파일이 이전 작업의 [출력 아티팩트](workflows-working-artifacts-output.md)에 저장된 경우 필수)

배포하려는 작업 정의 파일이 이전 작업에서 생성된 아티팩트에 포함된 경우 여기에 해당 아티팩트를 지정합니다. 태스크 정의 파일이 아티팩트 내에 포함되어 있지 않은 경우 소스 리포지토리에 있어야 합니다.

예시를 포함해 아티팩트에 대한 자세한 내용은 [작업 간 아티팩트 및 파일 공유](workflows-working-artifacts.md) 섹션을 참조하세요.

해당 UI: 구성 탭/**아티팩트 - 선택 사항**

## Variables - input
<a name="render.ecs.inputs.variables"></a>

(*ECSRenderTaskDefinition*/Inputs/**Variables**)

(필수)

작업에 사용할 수 있도록 하려는 입력 변수를 정의하는 이름/값 페어의 시퀀스를 지정합니다. 변수 이름은 영숫자 문자(a-z, A-Z, 0-9), 하이픈(-) 및 밑줄(\$1)로 제한됩니다. 스페이스은 허용되지 않습니다. 변수 이름에서 특수 문자와 공백을 활성화하는 데 따옴표를 사용할 수 없습니다.

예시를 비롯한 변수에 대한 자세한 내용은 [워크플로에서 변수 사용](workflows-working-with-variables.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**변수 - 선택 사항**

## Configuration
<a name="render.ecs.configuration"></a>

(*ECSRenderTaskDefinition*/**Configuration**)

(필수)

작업의 구성 속성을 정의할 수 있는 섹션입니다.

해당 UI: **구성** 탭

## task-definition
<a name="render.ecs.task.definition"></a>

(*ECSRenderTaskDefinition*/Configuration/**task-definition**)

(필수)

기존 작업 정의 파일의 경로를 지정합니다. 파일이 소스 리포지토리에 있는 경우 경로는 소스 리포지토리 루트 폴더를 기준으로 합니다. 파일이 이전 워크플로 작업의 아티팩트에 있는 경우 경로는 아티팩트 루트 폴더를 기준으로 합니다. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [작업 정의](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)를 참조하세요.

해당 UI: 구성 탭/**작업 정의**

## container-definition-name
<a name="render.ecs.container.name"></a>

(*ECSRenderTaskDefinition*/Configuration/**container-definition-name**)

(필수)

Docker 이미지가 실행될 컨테이너의 이름을 지정합니다. 이 이름은 작업 정의 파일의 `containerDefinitions`, `name` 필드에서 찾을 수 있습니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [이름](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_name) 섹션을 참조하세요.

해당 UI: 구성 탭/**컨테이너 이름**

## image
<a name="render.ecs.image"></a>

(*ECSRenderTaskDefinition*/Configuration/**image**)

(필수)

**Render Amazon ECS 작업 정의** 작업을 작업 정의 파일에 추가할 Docker 이미지의 이름을 지정합니다. 이 작업은 작업 정의 파일의 `containerDefinitions`, `image` 필드에 이 이름을 추가합니다. `image` 필드에 값이 이미 있는 경우, 이 작업이 값을 덮어씁니다. 이미지 이름에 변수를 포함할 수 있습니다.

예시:

`MyDockerImage:${WorkflowSource.CommitId}` 를 지정하면 `MyDockerImage:commit-id` 작업이 작업 정의 파일에 추가되며, 여기서 *commit-id*는 워크플로에서 런타임에 생성된 커밋 ID입니다.

`my-ecr-repo/image-repo:$(date +%m-%d-%y-%H-%m-%s)`를 지정하면 작업이 태스크 정의 파일에 *my-ecr-repo */image-repo:*date \$1%m-%d-%y-%H-%m-%s*를 추가합니다. 여기서 *my-ecr-repo*는 Amazon Elastic Container Registry(ECR)의 URI이며, *date \$1%m-%d-%y-%H-%m-%s*는 워크플로에서 런타임에 생성된 `month-day-year-hour-minute-second` 형식의 타임스탬프입니다.

`image` 필드에 대한 자세한 내용을 알아보려면, *Amazon Elastic Container Service 개발자 안내서*의 [이미지](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_image)를 참조하세요. 변수에 대한 자세한 내용은 [워크플로에서 변수 사용](workflows-working-with-variables.md) 섹션을 참조하세요.

해당 UI: 구성 탭/**이미지 이름**

## environment-variables
<a name="render.ecs.environment.variables"></a>

(*ECSRenderTaskDefinition*/Configuration/**environment-variables**)

(필수)

**Amazon ECS 작업 정의 렌더링** 작업을 작업 정의 파일에 추가할 환경 변수를 지정합니다. 작업은 작업 정의 파일의 `containerDefinitions`, `environment` 필드에 변수를 추가합니다. 파일에 변수가 이미 있는 경우, 작업은 기존 변수의 값을 덮어쓰고 새 변수를 추가합니다. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [환경 변수 지정](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html)을 참조하세요.

해당 UI: 구성 탭/**환경 변수 - 선택 사항**

## Outputs
<a name="render.ecs.outputs"></a>

(*ECSRenderTaskDefinition*/**Outputs**)

(필수)

워크플로 실행 중에 작업에 의해 출력되는 데이터를 정의합니다.

해당 UI: **출력** 탭

## Artifacts
<a name="render.ecs.outputs.artifacts"></a>

(*ECSRenderTaskDefinition*/Outputs/**Artifacts**)

(필수)

작업에서 생성된 아티팩트를 지정합니다. 이러한 아티팩트를 다른 작업의 입력으로 참조할 수 있습니다.

예시를 포함해 아티팩트에 대한 자세한 내용은 [작업 간 아티팩트 및 파일 공유](workflows-working-artifacts.md) 섹션을 참조하세요.

해당 UI: 출력 탭/**아티팩트**

## Name
<a name="render.ecs.outputs.artifacts.name"></a>

(*ECSRenderTaskDefinition*/Outputs/Artifacts/**Name**)

(필수)

업데이트된 작업 정의 파일을 포함할 아티팩트의 이름을 지정합니다. 기본값은 `MyTaskDefinitionArtifact`입니다. 그런 다음 이 아티팩트를 **Amazon ECS에 배포** 작업에 대한 입력으로 지정해야 합니다. 이 아티팩트를 **Amazon ECS에 배포** 작업에 입력으로 추가하는 방법을 알아보려면 [예시: Amazon ECS 작업 정의 수정](render-ecs-action-example-workflow.md) 섹션을 참조하세요.

해당 UI: 출력 탭/아티팩트/**이름**

## Files
<a name="render.ecs.outputs.artifacts.files"></a>

(*ECSRenderTaskDefinition*/Outputs/Artifacts/**Files**)

(필수)

아티팩트에 포함할 파일을 지정합니다. `task-definition-`으로 시작하는 업데이트된 작업 정의 파일이 포함되도록 `task-definition-*`을 지정해야 합니다.

해당 UI: 출력 탭/아티팩트/**파일**

## Variables
<a name="render.ecs.outputs.variables"></a>

(*ECSRenderTaskDefinition*/Outputs/**Variables**)

(필수)

렌더링 작업에서 설정할 변수의 이름을 지정합니다. 렌더링 작업은 이 변수의 값을 업데이트된 작업 정의 파일 이름(예: `task-definition-random-string.json`)으로 설정합니다. 그런 다음 **Amazon ECS 작업에 배포** 작업의 **작업 정의**(시각 편집기) 또는 `task-definition`(yaml 편집기) 속성에서 이 변수를 지정해야 합니다. 이 변수를 **Amazon ECS에 배포** 작업에 추가하는 방법을 알아보려면 [예시: Amazon ECS 작업 정의 수정](render-ecs-action-example-workflow.md) 섹션을 참조하세요.

기본값: `task-definition`

해당 UI: 출력 탭/변수/**이름** 필드