AWS Batch
사용 설명서

작업 정의 파라미터

작업 정의는 작업 정의 이름, 작업 정의 유형, 파라미터 대입 자리 표시자 기본값, 작업의 컨테이너 속성이라는 네 가지 기본 요소로 분류됩니다.

작업 정의 이름

jobDefinitionName

작업 정의를 등록할 때 이름을 지정합니다. 최대 128개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다. 이 이름으로 등록된 첫 번째 작업 정의에는 버전 번호 1이 부여됩니다. 그런 다음 같은 이름으로 등록되는 작업 정의는 버전 번호가 하나씩 증가하여 부여됩니다.

유형: 문자열

필수 항목 여부: 예

Type

type

작업 정의를 등록할 때 작업 유형을 지정합니다. 다중 노드 병렬 작업에 대한 자세한 내용은 다중 노드 병렬 작업 정의 생성를 참조하십시오.

형식: 문자열

유효한 값: container | multinode

필수 항목 여부: 예

파라미터

parameters

작업을 제출할 때 자리 표시자를 교체하거나 기본 작업 정의 파라미터를 재정의해야 하는 파라미터를 지정할 수 있습니다. 작업 제출 요청의 파라미터는 작업 정의의 기본값보다 우선합니다. 따라서, 동일한 형식을 사용하는 여러 작업에 동일한 작업 정의를 사용하여 제출 시의 값을 프로그래밍 방식으로 변경할 수 있습니다.

유형: 문자열 간 맵

필수 항목 여부: 아니요

작업 정의를 등록할 때 작업 컨테이너 속성의 command 필드에 파라미터 대입 자리 표시자를 사용할 수 있습니다. 다음 예를 참조하십시오.

"command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ]

위의 예에서는 명령에 Ref::inputfile, Ref::codec, Ref::outputfile 파라미터 대입 자리 표시자가 있습니다. 작업 정의의 parameters 객체를 사용하여 이러한 자리 표시자의 기본값을 설정할 수 있습니다. 예를 들어, Ref::codec 자리 표시자의 기본값을 설정하려면 작업 정의에 다음을 지정합니다.

"parameters" : {"codec" : "mp4"}

이 작업 정의를 실행하기 위해 제출하면 컨테이너 명령의 Ref::codec 인수가 기본값인 mp4로 대체됩니다.

컨테이너 속성

작업 정의를 등록할 때, 작업 배치 시 컨테이너 인스턴스의 Docker 데몬으로 전달되는 컨테이너 속성 목록을 지정해야 합니다. 다음과 같은 컨테이너 속성을 작업 정의에 사용할 수 있습니다. 단일 노드 작업의 경우 이러한 컨테이너 속성은 작업 정의 수준에서 설정됩니다. 다중 노드 병렬 작업의 경우 컨테이너 속성은 각 노드 그룹에 대해 노드 속성 수준에서 설정됩니다.

command

컨테이너로 전달되는 명령입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Cmddocker runCOMMAND 파라미터에 매핑됩니다. 도커 CMD 파라미터에 대한 자세한 내용은 https://docs.docker.com/engine/reference/builder/#cmd를 참조하십시오.

"command": ["string", ...]

유형: 문자열 배열

필수 항목 여부: 아니요

environment

컨테이너로 전달할 환경 변수입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Envdocker run--env 옵션에 매핑됩니다.

중요

자격 증명 데이터와 같은 민감한 정보에 대해서는 일반 텍스트 환경 변수를 사용하지 않는 것이 좋습니다.

유형: 키-값 쌍 배열

필수 항목 여부: 아니요

name

환경 변수의 이름입니다.

형식: 문자열

필수 항목 여부: environment 사용 시, 예

value

환경 변수의 값입니다.

형식: 문자열

필수 항목 여부: environment 사용 시, 예

"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
image

컨테이너를 시작하는 데 사용되는 이미지입니다. 이 문자열은 도커 데몬으로 직접 전달됩니다. Docker Hub 레지스트리 내 이미지는 기본적으로 사용 가능합니다. 또한 repository-url/image:tag를 사용하여 다른 리포지토리를 지정할 수도 있습니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈, 밑줄, 콜론, 마침표, 슬래시 및 부호가 허용됩니다.이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Imagedocker runIMAGE 파라미터에 매핑됩니다.

참고

도커 이미지 아키텍처는 예정된 컴퓨팅 리소스의 프로세서 아키텍처와 일치해야 합니다. 예를 들어, ARM 기반 도커 이미지는 ARM 기반 컴퓨팅 리소스에서만 실행될 수 있습니다.

  • 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).

  • Docker Hub 상의 다른 리포지토리 안의 이미지는 도메인 이름을 사용하여 추가로 한정됩니다(예: quay.io/assemblyline/ubuntu).

형식: 문자열

필수 항목 여부: 예

jobRoleArn

작업 정의를 등록할 때 IAM 역할을 지정할 수 있습니다. 역할은 해당 정책에 지정된 API 작업을 호출할 수 있는 권한을 작업 컨테이너에 제공합니다. 자세한 내용은 의 작업에 대한 역할을 참조하십시오.

형식: 문자열

필수 항목 여부: 아니요

memory

컨테이너에 표시할 메모리의 하드 제한(MiB)입니다. 컨테이너가 여기서 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Memorydocker run--memory 옵션에 매핑됩니다. 한 작업에 대해 메모리를 최소한 4MiB 지정해야 합니다.

참고

특정 인스턴스 유형에 대해 작업에 가능한 한 많은 메모리를 제공하여 리소스 사용률을 최대화하려는 경우 메모리 관리 단원을 참조하십시오.

유형: 정수

필수 항목 여부: 예

mountPoints

컨테이너에서 데이터 볼륨의 탑재 지점입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Volumesdocker run--volume 옵션에 매핑됩니다.

"mountPoints": [ { "sourceVolume": "string", "containerPath": "string", "readOnly": true|false } ]

유형: 객체 배열

필수 항목 여부: 아니요

sourceVolume

탑재할 볼륨의 이름입니다.

형식: 문자열

필수 항목 여부: mountPoints 사용 시, 예

containerPath

호스트 볼륨을 마운트할 컨테이너의 경로입니다.

형식: 문자열

필수 항목 여부: mountPoints 사용 시, 예

readOnly

이 값이 true일 경우 컨테이너에는 볼륨에 대한 읽기 전용 액세스가 부여됩니다. 이 값이 false일 경우 컨테이너는 볼륨에 쓸 수 있습니다. 기본값은 false입니다.

유형: 부울

필수 항목 여부: 아니요

privileged

이 파라미터가 true일 경우 컨테이너에는 호스트 컨테이너 인스턴스에 대한 승격된 권한을 부여받습니다(root 사용자와 비슷함). 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Privilegeddocker run--privileged 옵션에 매핑됩니다.

"privileged": true|false

유형: 부울

필수 항목 여부: 아니요

readonlyRootFilesystem

이 파라미터가 true일 경우 컨테이너에는 루트 파일 시스템에 대한 읽기 전용 액세스가 부여됩니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 ReadonlyRootfsdocker run--read-only 옵션에 매핑됩니다.

"readonlyRootFilesystem": true|false

유형: 부울

필수 항목 여부: 아니요

ulimits

컨테이너에 설정할 ulimits 값의 목록입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Ulimitsdocker run--ulimit 옵션에 매핑됩니다.

"ulimits": [ { "name": string, "softLimit": integer, "hardLimit": integer } ... ]

유형: 객체 배열

필수 항목 여부: 아니요

name

ulimittype입니다.

형식: 문자열

필수 항목 여부: ulimits 사용 시, 예

hardLimit

ulimit 유형의 하드 제한입니다.

유형: 정수

필수 항목 여부: ulimits 사용 시, 예

softLimit

ulimit 유형의 소프트 제한입니다.

유형: 정수

필수 항목 여부: ulimits 사용 시, 예

user

컨테이너 내부에서 사용할 사용자 이름입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Userdocker run--user 옵션에 매핑됩니다.

"user": "string"

형식: 문자열

필수 항목 여부: 아니요

resourceRequirements

컨테이너용으로 예약할 GPU 수를 나타냅니다.

"resourceRequirements" : [ { "type": "GPU", "value": "number" } ]

유형: 객체 배열

필수 항목 여부: 아니요

type

지원되는 유일한 값은 GPU입니다.

형식: 문자열

필수 항목 여부: resourceRequirements 사용 시, 예

value

각 컨테이너에 필요한 실제 GPU 수입니다.

형식: 문자열

필수 항목 여부: resourceRequirements 사용 시, 예

linuxParameters

컨테이너에 적용되는 Linux 수정(예: 디바이스 매핑에 대한 세부 정보)

"linuxParameters": { "devices": [ { "hostPath": "string", "containerPath": "string", "permissions": [ "READ", "WRITE", "MKNOD" ] } ] }

유형: LinuxParameters 객체

필수 여부: 아니요

devices

컨테이너에 매핑되는 디바이스 목록

유형: 디바이스 객체 배열

필수 여부: 아니요

hostPath

호스트에서 사용 가능한 디바이스의 경로

형식: 문자열

필수 항목 여부: 예

containerPath

디바이스가 컨테이너에 노출되는 경로 지정하지 않으면 호스트 경로와 동일한 경로에 노출됩니다.

형식: 문자열

필수 여부: 아니요

permissions

컨테이너의 디바이스에 대한 권한 지정하지 않으면 권한이 READ, WRITEMKNOD으로 설정됩니다.

유형: 문자열 배열

필수 여부: 아니요

유효한 값: READ | WRITE | MKNOD

vcpus

컨테이너에 예약된 vCPU 개수입니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 CpuSharesdocker run--cpu-shares 옵션에 매핑됩니다. 각 vCPU는 1,024개의 CPU 공유와 동일합니다. vCPU를 최소 하나 이상 지정해야 합니다.

유형: 정수

필수 항목 여부: 예

volumes

작업 정의를 등록할 때 컨테이너 인스턴스의 도커 데몬으로 전달되는 볼륨 목록을 지정할 수 있습니다. 컨테이너 속성에는 다음 파라미터를 사용할 수 있습니다.

[ { "name": "string", "host": { "sourcePath": "string" } } ]
name

볼륨의 이름입니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다. 이 이름은 컨테이너 정의 mountPointssourceVolume 파라미터에서 참조됩니다.

형식: 문자열

필수 항목 여부: 예

host

host 파라미터의 내용은 데이터 볼륨이 호스트 컨테이너 인스턴스에서 유지될지 여부와 저장 위치를 결정합니다. host 파라미터가 비어 있으면 도커 데몬이 데이터 볼륨의 호스트 경로를 할당합니다. 그러나 연결된 컨테이너의 실행이 중지된 후에는 데이터 유지가 보장되지 않습니다.

유형: 객체

필수 여부: 아니요

sourcePath

컨테이너에 제공되는 호스트 컨테이너 인스턴스의 경로입니다. 이 파라미터가 비어 있으면 도커 데몬이 사용자 대신 호스트 경로를 할당합니다.

host 파라미터에 sourcePath 파일 위치가 들어 있으며 사용자가 수동으로 삭제하기 전에는 데이터 볼륨이 호스트 컨테이너 인스턴스 상에 지정된 위치를 유지합니다. sourcePath 값이 호스트 컨테이너 인스턴스에 없을 경우 도커 데몬이 해당 경로를 생성합니다. 해당 위치가 있을 경우 소스 경로 폴더의 콘텐츠를 내보냅니다.

형식: 문자열

필수 여부: 아니요

노드 속성

nodeProperties

다중 노드 병렬 작업 정의를 등록할 때는 작업에서 사용할 노드 수, 기본 노드 인덱스, 사용할 다양한 노드 범위를 정의하는 노드 속성의 목록을 지정해야 합니다. 다음과 같은 노드 속성을 작업 정의에 사용할 수 있습니다. 자세한 내용은 다중 노드 병렬 작업 단원을 참조하십시오.

유형: NodeProperties 객체

필수 여부: 아니요

mainNode

다중 노드 병렬 작업의 기본 노드에 대한 노드 인덱스를 지정합니다.

유형: 정수

필수 항목 여부: 예

numNodes

다중 노드 병렬 작업과 연결된 노드 수입니다.

유형: 정수

필수 항목 여부: 예

nodeRangeProperties

노드 범위 및 다중 노드 병렬 작업과 연결된 해당 속성의 목록입니다.

유형: NodeRangeProperty 객체의 배열

필수 항목 여부: 예

targetNodes

노드 인덱스 값을 사용하는 노드의 범위입니다. 0:3의 범위는 인덱스 값이 0 ~ 3인 노드를 나타냅니다. 시작 범위 값이 생략되면(:n) 0이 범위를 시작하는 데 사용됩니다. 종료 범위 값이 생략되면(:n) 가능한 최고 노드 인덱스가 범위를 종료하는 데 사용됩니다. 누적 노드 범위는 모든 노드(0:n)를 고려해야 합니다. 노드 범위를 중첩할 수 있습니다. 예를 들면, 0:10 및 4:5와 같습니다. 이 경우 4:5 범위 속성이 0:10 속성을 재정의합니다.

형식: 문자열

필수 여부: 아니요

container

노드 범위에 대한 컨테이너 세부 정보입니다. 자세한 내용은 컨테이너 속성 단원을 참조하십시오.

유형: ContainerProperties 객체

필수 여부: 아니요

재시도 전략

retryStrategy

작업 정의를 등록할 때 해당 작업 정의로 제출하여 실패한 작업에 대해 재시도 전략을 지정할 수도 있습니다. 기본적으로 각 작업은 한 번 재시도됩니다. 한 번 이상 재시도하도록 지정하면 작업이 실패할 경우(예를 들어 0이 아닌 종료 코드를 반환하거나 컨테이너 인스턴스가 종료될 경우) 재시도됩니다. 자세한 내용은 작업 자동 재시도 단원을 참조하십시오.

유형: RetryStrategy 객체

필수 여부: 아니요

attempts

작업이 RUNNABLE 상태로 이동하는 횟수입니다. 1부터 10까지 재시도 횟수를 지정할 수 있습니다. attempts가 1보다 크면 작업이 실패할 경우 작업이 RUNNABLE 상태로 될 때까지 작업이 재시도됩니다.

"attempts": integer

유형: 정수

필수 여부: 아니요

제한 시간

timeout

작업이 더 오래 실행되면 AWS Batch가 작업을 종료하도록 작업의 제한 시간을 구성할 수 있습니다. 자세한 내용은 작업 제한 시간 단원을 참조하십시오. 시간 제한으로 인해 작업이 종료되면 재시도되지 않습니다. SubmitJob 작업 중에 지정된 모든 제한 시간 구성은 여기에 정의된 제한 시간 구성을 재정의합니다. 자세한 내용은 작업 제한 시간 단원을 참조하십시오.

유형: JobTimeout 객체

필수 여부: 아니요

attemptDurationSeconds

AWS Batch가 완료되지 않은 작업을 종료할 때까지의 기간(초)(작업 시도의 startedAt 타임스탬프에서 측정됨)입니다. 제한 시간의 최소 값은 60초입니다.

유형: 정수

필수 여부: 아니요