

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

# Amazon EC2 리소스에 단일 노드 작업 정의 생성
<a name="create-job-definition-EC2"></a>

Amazon Elastic Compute Cloud(Amazon EC2) 리소스에서 단일 노드 작업 정의를 생성하려면 다음 단계를 완료합니다.

**Amazon EC2 리소스에 새 작업 정의를 생성하려면**

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

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

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

1. **생성(Create)**을 선택합니다.

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

1. **EC2 플랫폼 구성**의 경우 **다중 노드 병렬 처리 활성화**를 끕니다.

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

1. (선택 사항) **실행 제한 시간**에 제한 시간 값(초)을 입력합니다. 실행 제한 시간은 완료되지 않은 작업이 종료되기까지의 시간입니다. 시도가 제한 시간을 초과하면 중지되고 상태가 `FAILED`(으)로 변경됩니다. 자세한 내용은 [작업 제한 시간](job_timeouts.md) 단원을 참조하십시오. 최솟값은 60초입니다.

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

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

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

1. (선택 사항) **태그**를 확장한 다음 **태그 추가**를 선택하여 리소스에 태그를 추가합니다. 키와 선택 값을 입력하고 **태그 추가**를 선택합니다.

1. (선택 사항) 작업 및 작업 정의에서 Amazon ECS 작업으로 태그를 전파하려면 **태그 전파**를 활성화합니다.

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

1. **컨테이너 구성** 섹션에서:

   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. (선택 사항) **실행 역할**에서 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. **작업 역할 구성**에서 AWS APIs에 대한 권한이 있는 IAM 역할을 선택합니다. 이 기능은 Amazon ECS IAM 역할을 작업에 사용합니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [태스크에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 참조하세요.
**참고**  
**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. **파라미터**의 경우 **파라미터 추가**를 선택하여 파라미터 대체 플레이스홀더를 **키** 및 **값**(선택 사항) 페어로 추가합니다.

1. **환경 구성** 섹션에서:

   1. **vCPU**에서 컨테이너에 예약할 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. **메모리**에는 컨테이너에 사용할 수 있는 메모리 한도를 입력합니다. 컨테이너가 여기서 지정된 메모리 용량을 초과하면 해당 컨테이너가 중지됩니다. 이 파라미터는 [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의 개수를 선택합니다.

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

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

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

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

   1. **User(사용자)**에서 컨테이너 내부에서 사용할 사용자 이름을 입력합니다. 이 파라미터는 [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. (선택 사항) 호스트 인스턴스에 대한 상위 권한을 작업 컨테이너에 부여하려면 (`root` 사용자와 유사) **권한이 있음** 슬라이더를 오른쪽으로 드래그합니다. 이 파라미터는 [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. (선택 사항) 컨테이너 내에서 `init` 프로세스를 실행하려면 **init 프로세스 활성화**를 켭니다. 이 프로세스는 신호를 전달하고 결과를 받아들입니다.

1. (선택 사항) **파일 시스템 구성** 섹션에서:

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

   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. (선택 사항) **Tmpfs**의 경우 **tmpfs 추가**를 선택하여 `tmpfs` 마운트를 추가합니다.

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

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

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

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

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

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

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

1. **작업 속성** 섹션에서:

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

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