AWS Batch
사용 설명서

AWS Batch 시작하기

AWS Batch 콘솔에서 작업 정의, 컴퓨팅 환경 및 작업 대기열을 생성하여 AWS Batch를 시작합니다.

AWS Batch를 처음 실행할 때 나타나는 마법사에서 컴퓨팅 환경과 작업 대기열을 생성하고 샘플 작업인 hello world 제출하는 옵션을 선택할 수 있습니다. 에서 시작하려는 도커 이미지가 이미 있는 경우 그 대신 해당 이미지로 작업 정의를 생성하여 대기열에 제출할 수 있습니다.

중요

시작하기 전에 먼저 AWS Batch를 통한 설정의 단계를 완료하고, AWS 사용자에게 필요한 권한이 있는지 확인해야 합니다. admin 사용자인 경우에는 권한 문제에 신경 쓸 필요가 없습니다. 자세한 내용은 IAM 사용 설명서첫 번째 IAM 관리자 및 그룹 생성을 참조하십시오.

1단계: 작업 정의

이 섹션에서는 작업 정의를 정의하거나, 작업 정의 없이 컴퓨팅 환경 및 작업 대기열을 생성하는 작업으로 진행하도록 선택할 수 있습니다.

작업 옵션을 구성하려면

  1. https://console.aws.amazon.com/batch/home#/wizard에서 AWS Batch 콘솔 처음 실행 마법사를 엽니다.

  2. AWS Batch 작업 정의, 컴퓨팅 환경 및 작업 대기열을 생성하여 작업을 제출하려면 Amazon EC2 사용을 선택합니다. 작업을 제출하지 않고 컴퓨팅 환경과 작업 대기열을 생성하려면 No job submission(작업 제출 없음)을 선택합니다.

  3. 작업 정의를 생성하도록 선택한 경우 처음 실행 마법사의 다음 네 개 섹션인 Job run-time(작업 런타임), Environment(환경), Parameters(파라미터), Environment variables(환경 변수)를 완료한 후 Next(다음)를 선택합니다. 작업 정의를 생성하지 않는 경우에는 Next(다음)를 선택하여 2단계: 컴퓨팅 환경 및 작업 대기열 구성로 이동합니다.

작업 실행 시간을 지정하려면

  1. 새 작업 정의를 생성하는 경우 Job definition name(작업 정의 이름)에서 작업 정의 이름을 지정합니다.

  2. (선택 사항) Job role(작업 역할)에서 작업의 컨테이너에 AWS API를 사용할 권한을 제공하는 IAM 역할을 지정할 수 있습니다. 이 기능은 작업 기능에 Amazon ECS IAM 역할을 사용합니다. 구성 사전 조건을 포함하여 이 기능에 대한 자세한 내용은 Amazon Elastic Container Service Developer Guide작업에 대한 IAM 역할을 참조하십시오.

    참고

    Amazon Elastic Container Service Task Role(Amazon Elastic Container Service 작업 역할) 신뢰 관계가 있는 역할만 여기에 표시됩니다. AWS Batch 작업에 대한 IAM 역할을 생성하는 방법에 대한 자세한 내용은 Amazon Elastic Container Service Developer Guide작업에 대한 IAM 역할 및 정책 생성을 참조하십시오.

  3. Container 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).

환경에 대한 리소스를 지정하려면

  1. Command(명령)에서 컨테이너에 전달할 명령을 지정합니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Cmddocker runCOMMAND 파라미터에 매핑됩니다. Docker CMD 파라미터에 대한 자세한 내용은 https://docs.docker.com/engine/reference/builder/#cmd를 참조하십시오.

    참고

    명령에 파라미터 대입 기본값과 자리 표시자를 사용할 수 있습니다. 자세한 내용은 파라미터 단원을 참조하십시오.

  2. vCPUs(vCPU)에서 컨테이너에 예약할 vCPU 수를 지정합니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 CpuSharesdocker run--cpu-shares 옵션에 매핑됩니다. 각 vCPU는 1,024개의 CPU 공유와 동일합니다.

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

  4. Job attempts(작업 시도)에서 작업이 실패할 경우 다시 시도할 최대 횟수를 지정합니다. 자세한 내용은 작업 자동 재시도 단원을 참조하십시오.

파라미터

필요할 경우, 명령에 파라미터 대입 기본값과 자리 표시자를 지정할 수 있습니다. 자세한 내용은 파라미터 단원을 참조하십시오.

  1. Key(키)에서 파라미터 키를 지정합니다.

  2. Value(값)에서 파라미터의 값을 지정합니다.

환경 변수를 지정하려면

필요할 경우, 작업의 컨테이너에 전달할 환경 변수를 지정할 수도 있습니다. 이 파라미터는 Docker Remote API컨테이너 만들기 섹션에 나오는 Envdocker run--env 옵션에 매핑됩니다.

중요

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

  1. Key(키)에서 환경 변수의 키를 지정합니다.

  2. Value(값)에서 환경 변수의 값을 지정합니다.

2단계: 컴퓨팅 환경 및 작업 대기열 구성

컴퓨팅 환경은 컴퓨팅 리소스(Amazon EC2 인스턴스)를 참조하는 방법입니다. 즉 인스턴스를 구성하고 자동으로 시작하는 방법을 AWS Batch에 알리는 설정 및 제약입니다. 스케줄러가 해당 컴퓨팅 환경 내의 컴퓨팅 리소스에서 작업을 실행할 때까지 작업을 저장하는 작업 대기열에 작업을 제출합니다.

참고

현재, 처음 실행 마법사에서는 관리형 컴퓨팅 환경만 생성할 수 있습니다. 관리되지 않는 컴퓨팅 환경을 생성하려면 컴퓨팅 환경 생성 섹션을 참조하십시오.

컴퓨팅 환경 유형을 구성하려면

  1. Compute environment name(컴퓨팅 환경 이름)에서 해당 컴퓨팅 환경에 고유한 이름을 지정합니다.

  2. Service role(서비스 역할)에서 새 역할을 생성하거나, AWS Batch 서비스에서 사용자 대신 필요한 AWS API를 호출할 수 있는 기존 역할을 사용합니다. 자세한 내용은 AWS Batch 서비스 IAM 역할 단원을 참조하십시오. 새 역할을 생성하도록 선택하면 필수 역할(AWSBatchServiceRole)이 생성됩니다.

  3. EC2 instance role(EC2 인스턴스 역할)에서 새 역할을 생성하거나 기존 역할을 사용하도록 선택합니다. 이러한 역할을 사용하여 컴퓨팅 환경에 생성된 Amazon ECS 컨테이너 인스턴스에서 사용자 대신 필요한 AWS API를 호출할 수 있습니다. 자세한 내용은 Amazon ECS 인스턴스 역할 단원을 참조하십시오. 새 역할을 생성하도록 선택하면 필수 역할(ecsInstanceRole)이 생성됩니다.

인스턴스를 구성하려면

  1. Provisioning model(프로비저닝 모델)에서 On-Demand(온디맨드)를 선택하여 Amazon EC2 온디맨드 인스턴스를 시작하거나, Spot(스팟)을 선택하여 Amazon EC2 스팟 인스턴스를 사용합니다.

  2. Amazon EC2 스팟 인스턴스를 사용하도록 선택한 경우:

    1. Maximum bid price(최고 입찰 가격)에서 인스턴스를 시작하기 전에 해당 인스턴스 유형에 대한 온디맨드 가격과 비교하여 스팟 인스턴스 가격에 대해 설정할 최대 비율(%)을 선택합니다. 예를 들어, 입찰 비율이 20%인 경우 스팟 가격은 현재 EC2 인스턴스에 대한 온디맨드 가격의 20% 이하여야 합니다. 항상 최저 (시장) 가격을 지불하고 최대 비율을 넘지 않도록 할 수 있습니다.

    2. Spot fleet role(스팟 플릿 역할)에서 스팟 컴퓨팅 환경에 적용할 새 역할을 생성하거나 기존 Amazon EC2 스팟 플릿 IAM 역할을 사용합니다. 새 역할을 생성하도록 선택하면 필수 역할(aws-ec2-spot-fleet-role)이 생성됩니다. 자세한 내용은 Amazon EC2 스팟 플릿 역할 단원을 참조하십시오.

  3. Allowed instance types(허용된 인스턴스 유형)에서 시작할 수 있는 Amazon EC2 인스턴스 유형을 선택합니다. 특정 인스턴스 패밀리 내의 인스턴스 유형을 시작하기 위해 인스턴스 패밀리를 지정하거나(예: c4 또는 p3), 패밀리 내 특정 크기를 지정할 수 있습니다(예: c4.8xlarge). 또한 optimal을 선택하여 그때그때 작업 대기열의 요구에 맞는 인스턴스 유형(C, M, R 인스턴스 패밀리 중)을 선택할 수도 있습니다.

    참고

    컴퓨팅 환경을 생성할 때 컴퓨팅 환경에 대해 선택한 인스턴스 유형은 동일한 아키텍처를 공유해야 합니다. 예를 들어, 동일한 컴퓨팅 환경에서 x86 및 ARM 인스턴스를 함께 사용할 수 없습니다.

  4. 최소 vCPU에서 작업 대기열 수요와 상관없이 컴퓨팅 환경에서 유지할 최소 EC2 vCPU 수를 선택합니다.

  5. Desired vCPUs(원하는 vCPU)에서 컴퓨팅 환경에서 시작할 EC2 vCPU 수를 선택합니다. 작업 대기열 요구가 증가하면 AWS Batch는 컴퓨팅 환경에서 원하는 vCPU 수를 vCPU 최대수까지 늘리고 EC2 인스턴스를 추가할 수 있습니다. 반면에 요구가 감소하면 AWS Batch는 컴퓨팅 환경에서 원하는 vCPU 수를 vCPU 최소수까지 줄이고 인스턴스를 제거할 수 있습니다.

  6. Maximum vCPUs(최대 vCPU)에서 작업 대기열 수요와 상관없이 컴퓨팅 환경에서 확장할 수 있는 최대 EC2 vCPU 수를 선택합니다.

네트워킹을 설정하려면

컴퓨팅 리소스는 여기에서 지정한 VPC와 서브넷에서 시작됩니다. 이렇게 하면 AWS Batch 컴퓨팅 리소스의 네트워크 격리를 제어할 수 있습니다.

중요

가 Amazon ECS 서비스 엔드포인트와 통신하려면 외부 네트워크 액세스가 필요하므로 에 퍼블릭 IP 주소가 없다면 네트워크 주소 변환(NAT)을 사용하여 이러한 액세스를 제공해야 합니다. 자세한 내용은 Amazon VPC 사용 설명서 NAT 게이트웨이 단원과 이 설명서의 단원을 참조하십시오. 자세한 내용은 자습서: 에 대해 퍼블릭 및 프라이빗 서브넷이 있는 VPC 생성 단원을 참조하십시오.

  1. VPC Id(VPC ID)에서 인스턴스를 시작할 VPC를 선택합니다.

  2. Subnets(서브넷)에서 해당 VPC에서 인스턴스를 호스팅할 서브넷을 선택합니다. 선택된 VPC의 모든 서브넷이 기본적으로 선택됩니다.

  3. Security groups(보안 그룹)에서 인스턴스에 연결할 보안 그룹을 선택합니다. 기본적으로 VPC의 기본 보안 그룹이 선택됩니다.

인스턴스에 태그를 지정하려면

필요할 경우 컴퓨팅 환경에서 시작된 인스턴스에 키-값 페어 태그를 적용할 수 있습니다. 예를 들어 "Name": "AWS Batch Instance - C4OnDemand"를 태그로 지정하여 해당 컴퓨팅 환경의 각 인스턴스가 이 이름을 갖도록 할 수 있습니다. 이렇게 하면 Amazon EC2 콘솔에서 해당 AWS Batch 인스턴스를 식별하는 데 도움이 됩니다. 기본적으로 인스턴스에 태그를 지정하는 데 컴퓨팅 환경 이름이 사용됩니다.

  1. Key(키)에서 태그에 대한 키를 지정합니다.

  2. Value(값)에서 태그의 값을 지정합니다.

작업 대기열을 설정하려면

AWS Batch 스케줄러가 해당 컴퓨팅 환경 내의 컴퓨팅 리소스에서 작업을 실행할 때까지 작업을 저장하는 작업 대기열에 작업을 제출합니다.

  • Job queue name(작업 대기열 이름)에서 고유한 작업 대기열 이름을 선택합니다.

검토 및 생성하려면

Connected compute environments for this job queue(이 작업 대기열에 연결된 컴퓨팅 환경) 섹션에서 새로운 컴퓨팅 환경이 새로운 작업 대기열과 순서에 따라 연결되어 있는 것을 볼 수 있습니다. 나중에 다른 컴퓨팅 환경을 작업 대기열에 연결할 수 있습니다. 작업 스케줄러는 컴퓨팅 환경 순서를 사용하여 주어진 작업을 실행할 컴퓨팅 환경을 결정합니다. 컴퓨팅 환경을 작업 대기열과 연결하려면 컴퓨터 환경이 VALID 상태여야 합니다. 한 개의 작업 대기열에 최대 3개의 컴퓨팅 환경을 연결할 수 있습니다.

  • 컴퓨팅 환경 및 작업 대기열 구성을 검토한 후 Create(생성)를 선택하여 컴퓨팅 환경을 생성합니다.