

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

# 자습서: Amazon EC2 리소스의 다중 노드 병렬 작업 정의 생성
<a name="multi-node-job-def-ec2"></a>

Amazon Elastic Compute Cloud(Amazon EC2) 리소스에서 다중 노드 병렬 작업 정의를 생성합니다.

**참고**  
단일 노드 작업 정의를 생성하려면 [Amazon EC2 리소스에 단일 노드 작업 정의 생성](create-job-definition-EC2.md) 섹션을 참조하세요.**

**Amazon EC2 리소스의 다중 노드 병렬 작업 정의를 생성하려면**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 모음에서 사용할 AWS 리전 를 선택합니다.

1. 탐색 창에서 **작업 정의**를 선택합니다.

1. **생성**을 선택합니다.

1. **오케스트레이션 유형**으로 **Amazon Elastic Compute Cloud(Amazon EC2)**를 선택합니다.

1. **다중 노드 병렬 활성화**에서 다중 노드 병렬을 켭니다.

1. **이름(Name)**에 고유한 작업 정의 이름을 입력합니다. 이름은 최대 128자까지 포함할 수 있으며, 대문자와 소문자, 숫자, 하이픈(-), 밑줄(\$1)을 포함할 수 있습니다.

1. (선택 사항) **실행 제한 시간**에서 작업 시도의 실행을 허용할 최대 시간(초)을 지정합니다. 시도가 제한 시간을 초과하면 중지되고 상태가 `FAILED`(으)로 변경됩니다. 자세한 내용은 [작업 제한 시간](job_timeouts.md) 단원을 참조하십시오.

1. (선택 사항) **예약 우선 순위**를 켭니다. 0에서 100 사이의 예약 우선 순위 값을 입력합니다. 값이 높을수록 낮은 값보다 우선 순위가 높습니다.

1. (선택 사항) **작업 시도**의 경우 작업을 `RUNNABLE` 상태로 이동하려는 AWS Batch 시도 횟수를 입력합니다. 1\$110 사이의 숫자를 입력합니다.

1. (선택 사항) **재시도 전략 조건**의 경우 **종료 시 평가 추가**를 선택합니다. 파라미터 값을 하나 이상 입력한 다음 **작업**을 선택합니다. 각 조건 세트에 대해 **작업**을 **재시도** 또는 **종료**로 설정해야 합니다. 이러한 작업은 다음을 의미합니다.
   + **재시도** - 지정한 작업 시도 횟수에 도달할 때까지 AWS Batch 재시도합니다.
   + **종료** - 작업 재시도를 AWS Batch 중지합니다.
**중요**  
**종료 시 평가 추가**를 선택한 경우 하나 이상의 파라미터를 구성하고 **작업**을 선택하거나 **종료 시 평가 제거**를 선택해야 합니다.

1. (선택 사항) **태그**를 확장한 다음 **태그 추가**를 선택하여 리소스에 태그를 추가합니다. **태그 추가**를 선택하고 키 및 값(선택 사항)을 입력합니다. 또한 작업 및 작업 정의에서 Amazon ECS 태스크로 태그를 전파하려면 **태그 전파 시작**을 켭니다.

1. **다음 페이지**를 선택합니다.

1. **노드 수**에 작업에 사용할 총 노드 수를 입력합니다.

1. **기본 노드**에 메인 노드에 사용할 노드 인덱스를 입력합니다. 기본 노드 인덱스는 `0`입니다.

1. **인스턴스 유형**에서 인스턴스 유형을 선택합니다.
**참고**  
선택한 인스턴스 유형이 모든 노드에 적용됩니다.

1. **파라미터**의 경우 **파라미터 추가**를 선택하여 파라미터 대체 플레이스홀더를 **키** 및 **값**(선택 사항) 페어로 추가합니다.

1. **노드 범위** 섹션에서:

   1. **노드 범위 추가**를 선택합니다. 그러면 **노드 범위** 섹션이 생성됩니다.

   1. **대상 노드**에서 `range_start:range_end` 표기법을 사용하여 노드 그룹의 범위를 지정합니다.

      작업에 지정한 노드 수에 대해 최대 다섯 개의 노드 범위를 생성할 수 있습니다. 노드 범위는 노드의 인덱스 값을 사용하며 노드 인덱스는 0에서 시작됩니다. 최종 노드 그룹의 범위 끝 인덱스 값이 지정한 노드 수보다 하나 작아야 합니다. 예를 들어, 10개의 노드를 지정하고 단일 노드 그룹을 사용하려고 한다고 가정해 보겠습니다. 그러면 최종 범위는 9입니다.

   1. **이미지**에서 작업에 사용할 Docker 이미지를 선택합니다. 기본적으로 Docker Hub 레지스트리 내 이미지는 사용 가능합니다. 또한 `repository-url/image:tag`(을)를 사용하여 다른 리포지토리를 지정할 수도 있습니다. 이름은 최대 225자입니다. 여기에는 대문자와 소문자, 숫자, 하이픈(-), 밑줄(\$1), 콜론(:), 슬래시(/) 및 숫자 기호(\$1)를 사용할 수 있습니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Image`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)의 `IMAGE` 파라미터로 매핑됩니다.
**참고**  
도커 이미지 아키텍처는 예정된 컴퓨팅 리소스의 프로세서 아키텍처와 일치해야 합니다. 예를 들어 ARM 기반 Docker 이미지는 ARM 기반 컴퓨팅 리소스에서만 실행할 수 있습니다.
      + Amazon ECR Public 리포지토리에 있는 이미지는 전체 `registry/repository[:tag]` 또는 `registry/repository[@digest]` 명명 규칙을 사용합니다(예: `public.ecr.aws/registry_alias/my-web-app:latest`).
      + Amazon ECR 리포지토리에 있는 이미지는 전체 `registry/repository[:tag]` 명명 규칙을 사용합니다. 예: `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`
      + Docker Hub의 공식 리포지토리 안의 이미지는 단일 이름을 사용합니다(예: `ubuntu` 또는 `mongo`).
      + Docker Hub 다른 리포지토리에 저장된 이미지는 조직 이름으로 한정됩니다(예: `amazon/amazon-ecs-agent`).
      + 다른 온라인 리포지토리 안의 이미지는 도메인 이름을 사용하여 추가로 한정됩니다(예: `quay.io/assemblyline/ubuntu`).

   1. **명령**에서 필드에 명령을 **JSON** 문자열 배열 형식으로 입력합니다.

      이 파라미터는 [도커 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Cmd`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)의 `COMMAND` 파라미터로 매핑됩니다. Docker `CMD` 파라미터에 대한 자세한 정보는 [https://docs.docker.com/engine/reference/builder/\$1cmd](https://docs.docker.com/engine/reference/builder/#cmd)를 참조하세요.
**참고**  
사용자는 명령에 파라미터 대체 및 자리 표시자 기본값을 사용할 수 있습니다. 자세한 내용은 [Parameters](job_definition_parameters.md#parameters) 단원을 참조하십시오.

   1. **vCPU(vCPUs)**에서 컨테이너에 예약할 vCPU 수를 지정합니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `CpuShares`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--cpu-shares` 옵션에 매핑됩니다. 각 vCPU는 1,024개의 CPU 공유와 동일합니다. vCPU를 최소 하나 이상 지정해야 합니다.

   1. **메모리**에서 작업 컨테이너에 제공할 메모리의 하드 제한(MiB)을 지정합니다. 컨테이너가 여기에 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Memory`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--memory` 옵션에 매핑됩니다. 한 작업에 대해 메모리를 최소한 4MiB 지정해야 합니다.
**참고**  
리소스 사용률을 최대화하기 위해 특정 인스턴스 유형에 대해 작업에 최대한 많은 메모리를 제공할 수 있습니다. 자세한 내용은 [컴퓨팅 리소스 메모리 관리](memory-management.md) 단원을 참조하십시오.

   1. (선택 사항)**GPU 수**에서 작업에서 사용할 GPU 수를 지정합니다. 작업은 컨테이너에서 해당 컨테이너에 고정된 특정 GPU 수로 실행됩니다.

   1. (선택 사항) **작업 역할**에서 작업의 컨테이너에 AWS APIs. 이 기능은 태스크 기능에 Amazon ECS IAM 역할을 사용합니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*에서 [작업에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) 섹션을 참조하세요.
**참고**  
Fargate 리소스에서 실행되는 작업의 경우, 작업 역할이 필요합니다.
**참고**  
**Amazon Elastic Container Service 태스크 역할** 신뢰 관계를 보유한 역할만 여기 표시됩니다. AWS Batch 작업에 대한 IAM 역할 생성에 대한 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [작업에 대한 IAM 역할 및 정책 생성을 참조하세요](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role).

   1. (선택 사항) **실행 역할**에서 Amazon ECS 컨테이너 에이전트에게 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 부여하는 IAM 역할을 지정합니다. 이 기능은 작업 기능에 Amazon ECS IAM 역할을 사용합니다. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [Amazon ECS 작업 실행 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) 섹션을 참조하세요.

1. (선택 사항) **추가 구성**을 확장합니다.

   1. **환경 변수**에서 **환경 변수 추가**를 선택하여 환경 변수를 이름-값 쌍으로 추가합니다. 이러한 변수는 컨테이너로 전달됩니다.

   1. **작업 역할 구성**의 경우 작업의 컨테이너에 AWS APIs. 이 기능은 태스크 기능에 Amazon ECS IAM 역할을 사용합니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*에서 [작업에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) 섹션을 참조하세요.
**참고**  
Fargate 리소스에서 실행되는 작업의 경우, 작업 역할이 필요합니다.
**참고**  
**Amazon Elastic Container Service 태스크 역할** 신뢰 관계를 보유한 역할만 여기 표시됩니다. AWS Batch 작업에 대한 IAM 역할을 생성하는 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*에서 [작업에 대한 IAM 역할 및 정책 생성](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) 섹션을 참조하세요.

   1. **실행 역할**에서 Amazon ECS 컨테이너 에이전트에게 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 부여하는 IAM 역할을 지정합니다. 이 기능은 작업 기능에 Amazon ECS IAM 역할을 사용합니다. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [Amazon ECS 작업 실행 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) 섹션을 참조하세요.

1. **보안 구성** 섹션에서:

   1. (선택 사항)작업 컨테이너에 호스트 인스턴스에 대한 승격된 권한(`root` 사용자와 비슷함)을 부여하려면 **권한이 있음(Privileged)**을 선택합니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Privileged`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--privileged` 옵션에 매핑됩니다.

   1. (선택 사항)**사용자**에서 컨테이너 내부에서 사용할 사용자 이름을 입력합니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `User`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--user` 옵션에 매핑됩니다.

   1. (선택 사항) **암호**의 경우 **암호 추가**를 선택하여 암호를 이름-값 쌍으로 추가합니다. 이러한 보안 암호는 컨테이너에 노출됩니다. 자세한 내용은 [LogConfiguration:secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)를 참조하세요.

1. **Linux 구성** 섹션에서:

   1. **읽기 전용 파일 시스템 활성화**를 켜서 볼륨에 대한 쓰기 권한을 제거합니다.

   1. (선택 사항)컨테이너 내에서 `init` 프로세스를 실행하려면 **init 프로세스 활성화**를 켭니다. 이 프로세스는 신호를 전달하고 결과를 받아들입니다.

   1. **공유 메모리 크기**에 `/dev/shm` 볼륨의 크기(MiB)를 입력합니다.

   1. **최대 스왑 크기**에는 컨테이너가 사용할 수있는 총 스왑 메모리 양(MiB)을 입력합니다.

   1. **스왑 활용도**의 경우 컨테이너의 스왑 동작을 나타내는 값을 0에서 100 사이의 값으로 입력합니다. 값을 지정하지 않고 스왑을 활성화한 경우 기본적으로 60으로 설정됩니다. 자세한 내용은 [LinuxParameters:swappiness](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)를 참조하세요.

   1. (선택 사항) **디바이스**의 경우 **디바이스 추가**를 선택하여 장치를 추가합니다.

      1. **컨테이너 경로**에 호스트 인스턴스에 매핑된 디바이스를 노출할 컨테이너 인스턴스의 경로를 지정합니다. 이 필드를 비워두면 호스트 경로가 컨테이너에 사용됩니다.

      1. **호스트 경로**에 호스트 인스턴스의 디바이스 경로를 지정합니다.

      1. **권한**에서 디바이스에 적용할 권한을 하나 이상 선택합니다. 사용 가능한 권한은 **읽기**, **쓰기** 및 **MKNOD입니다**.

1. (선택 사항) **마운트 포인트**의 경우 **마운트 포인트 구성 추가**를 선택하여 데이터 볼륨의 마운트 포인트를 추가합니다. 소스 볼륨과 컨테이너 경로를 지정해야 합니다. 이러한 마운트 포인트는 컨테이너 인스턴스의 Docker 대몬(daemon)으로 전달됩니다. 볼륨을 **읽기 전용**으로 설정할 수도 있습니다.

1. (선택 사항) **Ulimits 구성**의 경우 **ulimit 추가**를 선택하여 컨테이너에 `ulimits` 값을 추가합니다. **이름**, **소프트 제한**, **하드 제한** 값을 입력한 다음 **ulimit 추가**를 선택합니다.

1. (선택 사항) **볼륨 구성**의 경우 **볼륨 추가**를 선택하여 컨테이너에 전달할 볼륨 목록을 생성합니다. 볼륨의 **이름** 및 **소스 경로**를 입력한 다음 **볼륨 추가**를 선택합니다. 또한 **EFS 활성화**를 켜도록 선택할 수도 있습니다.

1. (선택 사항) **Tmpfs**의 경우 **tmpfs 추가**를 선택하여 `tmpfs` 마운트를 추가합니다.

1. **태스크 속성** 섹션에서:

   1. **실행 역할 - 조건부**에서 Amazon ECS 에이전트가 사용자를 대신하여 AWS API를 호출할 수 있도록 허용하는 역할을 선택합니다. **실행 역할** 생성에 대한 자세한 내용은 [자습서: IAM 실행 역할 생성](create-execution-role.md) 섹션을 참조하세요.

   1. 
**중요**  
**ECS 실행 명령**을 사용하려면 컴퓨팅 환경이 [다중 노드 병렬 작업을 위한 컴퓨팅 환경 고려 사항](mnp-ce.md)을 충족해야 합니다.

      **ECS 실행 명령**을 선택하여 Amazon ECS 컨테이너 쉘에 대한 직접 액세스를 허용하고 호스트 OS를 우회합니다. **태스크 역할**을 선택해야 합니다.
**중요**  
**ECS 실행** 명령을 사용하려면 파일 시스템에 대한 쓰기 권한이 있어야 합니다.

   1. **작업 역할**에서 Amazon ECS Identity and Access Management(IAM) 역할을 선택하여 컨테이너가 사용자를 대신하여 AWS API를 호출하도록 허용합니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [Amazon ECS 태스크 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 참조하세요.

1. (선택 사항)**로깅 구성** 섹션에서:

   1. **로그 드라이버**에서 사용할 로그 드라이버를 선택합니다. 사용 가능한 로그 드라이버에 대한 자세한 내용은 [LogConfiguration:logDriver](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)를 참조하세요.
**참고**  
기본적으로 `awslogs` 로그 드라이버가 사용됩니다.

   1. **옵션**에서 **옵션 추가**를 선택하여 옵션을 추가합니다. 이름-값 쌍을 입력한 다음 **옵션 추가**를 선택합니다.

   1. **암호**에서 **암호 추가**를 선택합니다. 이름-값 페어를 입력한 다음 **암호 추가**를 선택하여 암호를 추가합니다.
**작은 정보**  
자세한 내용은 [LogConfiguration:secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)를 참조하세요.

1. **다음 페이지**를 선택합니다.

1. **작업 정의 검토**에서 구성 단계를 검토하세요. 변경해야 하는 경우 **편집**을 선택합니다 작업을 마쳤으면 **작업 정의 생성**을 선택합니다.