자습서: Amazon EC2 오케스트레이션 시작하기 - AWS Batch

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

자습서: Amazon EC2 오케스트레이션 시작하기

Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 사전 투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다.

Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Amazon EC2에서는 스케일 업 또는 다운을 통해 요구 사항 변경 또는 사용량 급증을 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어듭니다.

컴퓨팅 환경 생성

Amazon EC2 오케스트레이션을 위한 컴퓨팅 환경을 만들려면

  1. AWS Batch 콘솔 최초 실행 마법사를 엽니다.

  2. 오케스트레이션 유형 선택에서 Amazon Elastic Compute Cloud(Amazon EC2)를 선택합니다.

  3. [Next]를 선택합니다.

  4. 이름 컴퓨팅 환경 구성에서 해당 컴퓨팅 환경의 고유한 이름을 지정합니다. 각 이름의 최대 길이는 128자입니다. 대문자 및 소문자, 숫자, 하이픈(-) 및 밑줄(_)을 포함할 수 있습니다.

  5. 인스턴스 역할에서 필요한 IAM 권한이 연결되어 있는 기존 인스턴스 프로파일을 선택합니다. 사용자 컴퓨팅 환경의 Amazon ECS 컨테이너 인스턴스는 이 인스턴스 프로파일을 사용하여 사용자 대신 필요한 AWS API를 호출할 수 있습니다. 자세한 내용은 Amazon ECS 인스턴스 역할 단원을 참조하십시오.

  6. (선택 사항) 태그는 리소스에 할당된 레이블입니다. 태그 또는 Amazon EC2 태그를 추가하려면 태그를 확장한 다음 태그 추가를 선택합니다. 키-값 페어를 입력한 다음 태그 추가를 다시 선택합니다.

    중요

    태그 추가를 선택하는 경우 키-값 페어를 입력하고 태그 추가를 다시 선택하거나 태그 제거를 선택해야 합니다.

  7. (선택 사항) Amazon EC2 스팟 인스턴스 사용인스턴스 구성 섹션에서 스팟 인스턴스 사용 활성화를 켭니다.

  8. (스팟 전용) 온디맨드 가격 최대 %에 스팟 리소스에 지불하려는 온디맨드 요금의 최대 비율을 입력합니다.

  9. (선택 사항) (스팟 전용) 스팟 플릿 역할에서 스팟 컴퓨팅 환경에 적용할 기존 Amazon EC2 스팟 플릿 IAM 역할을 선택합니다. 기존 Amazon EC2 스팟 플릿 IAM 역할이 없으면 먼저 역할을 생성해야 합니다. 자세한 내용은 Amazon EC2 스팟 플릿 역할 단원을 참조하십시오.

    중요

    스팟 인스턴스를 생성에 태그하려면 Amazon EC2 스팟 플릿 IAM 역할은 최신 AmazonEC2SpotFleetTaggingRole 관리형 정책을 사용해야 합니다. AmazonEC2SpotFleetRole 관리형 정책에는 스팟 인스턴스에 태그를 지정에 권한을 요구하지 않습니다. 자세한 내용은 생성 시 태그가 지정되지 않은 스팟 인스턴스리소스에 태그 지정 단원을 참조하세요.

  10. 최소 vCPUs에서는 작업 대기열 수요와 상관없이 사용자 컴퓨팅 환경에서 유지할 수 있는 최소 vCPU 수를 선택합니다.

  11. 바람직한 vCPU에서는 사용자 컴퓨팅 환경이 시작할 수 있는 vCPU 수를 선택합니다. 작업 대기열 수요가 증가하면 AWS Batch는 희망 vCPU 수를 늘리고 EC2 인스턴스를 추가합니다. vCPU 수는 최대 vCPU 수까지 증가할 수 있습니다. 수요가 감소하면 AWS Batch는 원하는 vCPU 수를 줄이고 인스턴스를 제거합니다. 최소 vCPU 수까지 줄어듭니다.

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

  13. 허용된 인스턴스 유형에서 시작할 수 있는 Amazon EC2 인스턴스 유형을 선택합니다. 사용자는 특정 인스턴스 패밀리 (예: c5, c5n, 혹은 p3) 내에서 모든 인스턴스 유형을 시작하기 위해 인스턴스 패밀리를 지정할 수 있습니다. 또는 제품군 내에서 특정 크기(예: c5.8xlarge)를 지정할 수 있습니다. 메탈 인스턴스 유형은 인스턴스 패밀리에 없습니다. 예를 들어, c5에는 c5.metal가 포함되어 있지 않습니다. 또한 optimal을 선택하여 작업 대기열의 수요에 맞는 인스턴스 유형(C4, M4, 그리고 R4 인스턴스 패밀리에서)을 선택할 수도 있습니다.

    참고

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

    참고

    AWS Batch는 작업 대기열에 필요한 양을 기준으로 GPU를 확장합니다. GPU 일정 설정을 사용하려면 컴퓨팅 환경은 p2, p3, p4, p5, g3, g3s, g4, 또는 g5 패밀리의 인스턴스 유형을 포함해야 합니다.

    참고

    현재 optimal은 C4, M4, 그리고 R4 인스턴스 패밀리의 인스턴스 유형을 사용합니다. 이러한 인스턴스 패밀리의 인스턴스 유형이 없는 AWS 리전에서는 C5, M5, 그리고 R5 인스턴스 패밀리의 인스턴스 유형을 사용합니다

  14. 추가 구성을 확장합니다.

  15. (선택 사항) 배치 그룹에는 컴퓨팅 환경의 리소스를 그룹화할 배치 그룹 이름을 입력합니다.

  16. (선택 사항) EC2 키 페어에서는 인스턴스에 연결할 때 퍼블릭 및 프라이빗 키 페어를 보안 자격 증명으로 선택합니다. Amazon EC2 키 페어에 대한 자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스를 참조하세요.

  17. 할당 전략의 경우 허용되는 인스턴스 유형 목록에서 인스턴스 유형을 선택할 때 사용할 할당 전략을 선택합니다. EC2 온디맨드 컴퓨팅 환경에는 일반적으로 BEST_FIT_PROGRESSIVE가 더 적합하고, EC2 스팟 컴퓨팅 환경에는 SPOT_CAPACITY_OPTIMIZED이 일반적으로 더 적합합니다. 자세한 내용은 AWS Batch에 대한 인스턴스 유형 할당 전략 단원을 참조하십시오.

  18. (선택 사항) EC2 구성에서 EC2 구성 추가를 선택합니다. 컴퓨팅 환경의 인스턴스에서 Amazon Machine Image(AMI)AWS Batch를 선택하는 데 필요한 정보를 제공하려면 이미지 유형이미지 ID 재정의 값을 선택합니다. 각 이미지 유형에 대한 이미지 ID 재정의가 지정되어 있지 않은 경우, AWS Batch는 최신 Amazon ECS 최적화 AMI를 선택합니다. 이미지 유형이 지정되어 있지 않은 경우 비 GPU, 비 AWS Graviton 인스턴스에 대한 기본값은 Amazon Linux 2입니다

    중요

    사용자 지정 AMI를 사용하려면 이미지 유형을 선택한 다음 이미지 ID 재정의 상자에 사용자 지정 AMI ID를 입력합니다.

    Amazon Linux 2

    모든 Graviton 기반 인스턴스 패밀리(예: C6g, M6g, R6g, 및 T4g)에 대한 기본값이며 모든 비 GPU 인스턴스 유형에 사용할 수 있습니다.

    Amazon Linux 2(GPU)

    모든 GPU 인스턴스 패밀리(예: P4G4)에 대한 기본이며 모든 비 AWS Graviton 기반 인스턴스 유형에 사용할 수 있습니다.

    Amazon Linux

    비 GPU, 비 AWS Graviton 인스턴스 패밀리 제품군에 사용할 수 있습니다. Amazon Linux AMI에 대한 표준 지원은 종료되었습니다. 자세한 내용은 Amazon Linux AMI를 참조하세요.

    참고

    컴퓨팅 환경에 대해 선택한 AMI는 해당 컴퓨팅 환경에 사용자가 사용할 인스턴스 유형의 아키텍처와 일치해야 합니다. 예를 들어, 컴퓨팅 환경에서 A1 인스턴스 유형을 사용하는 경우 선택한 컴퓨팅 리소스 AMI는 반드시 Arm 인스턴스를 지원해야 합니다. Amazon ECS는 Amazon ECS 최적화 Amazon 리눅스 2 AMI의 x86과 Arm 버전을 모두 제공합니다. 자세한 내용을 알아보려면 Amazon Elastic Container Service 개발자 안내서Amazon ECS 최적화 Amazon Linux 2 AMI를 참조하세요.

  19. (선택 사항) 시작 템플릿에서 기존 Amazon EC2 시작 템플릿을 선택하여 컴퓨팅 리소스를 구성합니다. 템플릿의 기본 버전이 자동으로 생성됩니다. 자세한 내용은 에서 Amazon EC2 시작 템플릿 사용 AWS Batch 단원을 참조하십시오.

    참고

    시작 템플릿에서 생성한 사용자 지정 AMI를 지정할 수 있습니다.

  20. (선택 사항) Launch template version(템플릿 버전 시작)$Default, $Latest 또는 사용할 특정 버전 번호를 입력합니다.

    중요

    컴퓨팅 환경이 생성된 후에는 시작 템플릿의 $Default 또는 $Latest 버전이 업데이트되더라도 사용한 시작 템플릿의 버전은 변경되지 않습니다. 새 시작 템플릿 버전을 사용하려면 먼저 새 컴퓨팅 환경을 생성하고 기존 작업 대기열에 새 컴퓨팅 환경을 추가합니다. 그런 다음 작업 대기열에서 이전 컴퓨팅 환경을 제거한 다음 이전 컴퓨팅 환경을 삭제합니다.

  21. 네트워크 구성 섹션에서:

    1. 가상 프라이빗 클라우드(VPC) ID에서 Amazon VPC를 선택합니다.

    2. 서브넷의 경우 AWS 계정 서브넷이 나열됩니다. 사용자 지정 서브넷 세트를 만들려면 서브넷 지우기를 선택한 다음 원하는 서브넷을 선택합니다.

      중요

      컴퓨팅 리소스는 VPC 엔드포인트 또는 여러 퍼블릭 IP 주소를 통해 Amazon ECS VPC 엔드포인트와 통신해야 합니다. 자세한 내용은 Amazon ECS 인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요. 인스턴스에 VPC 엔드포인트가 구성되어 있지 않거나 퍼블릭 IP 주소가 없는 경우 사용자는 Network Address Translation(NAT)를 사용할 수 있습니다. NAT에 대한 자세한 내용은 NAT 게이트웨이Virtual Private Cloud 생성 를 참조하십시오.

    3. 보안 그룹에서 인스턴스와 연결하려는 Amazon EC2 보안 그룹을 선택합니다. 사용자 지정 보안 그룹 세트를 생성하려면 보안 그룹 지우기를 선택합니다. 그런 다음 원하는 보안 그룹을 선택합니다.

  22. Next(다음)를 선택합니다.

작업 대기열 생성

작업 대기열은 AWS Batch 스케줄러가 해당 컴퓨팅 환경 내의 컴퓨팅 리소스에서 작업을 실행할 때까지 제출된 작업을 저장합니다. 자세한 내용은 작업 대기열 단원을 참조하세요.

Amazon EC2 오케스트레이션을 위한 작업 대기열을 만들려면

  1. 이름작업 대기열 구성에서 해당 컴퓨팅 환경의 고유한 이름을 지정합니다. 각 이름의 최대 길이는 128자입니다. 대문자 및 소문자, 숫자, 하이픈(-) 및 밑줄(_)을 포함할 수 있습니다.

  2. 우선 순위의 작업 대기열에 0에서 100 사이의 정수를 입력합니다.

    중요

    AWS Batch 스케줄러는 정수 값이 높을수록 우선 순위가 높습니다.

  3. Next(다음)를 선택합니다.

작업 정의 생성

AWS Batch 작업 정의는 작업이 어떻게 실행될지를 지정합니다. 각 작업은 작업 정의를 참조해야 하지만, 작업 정의에 지정된 대부분의 파라미터는 런타임에 재정의될 수 있습니다.

작업 정의를 생성하려면

  1. 일반 구성 섹션에서:

    1. 이름일반 구성 섹션에서 사용자 컴퓨팅 환경의 고유한 이름을 지정합니다. 각 이름의 최대 길이는 128자입니다. 이름은 대문자 및 소문자, 숫자, 하이픈(-) 및 밑줄(_)을 포함할 수 있습니다.

    2. (선택 사항) 실행 제한 시간에 완료되지 않은 작업이 종료되는 시간(초)을 입력합니다.

      중요

      최소 제한 시간은 60초입니다.

    3. (선택 사항) 태그는 리소스에 할당된 레이블입니다. 태그를 추가하려면 태그를 확장한 다음 태그 추가를 선택합니다. 키-값 페어를 입력한 다음 태그 추가를 다시 선택합니다.

      중요

      태그 추가를 선택하는 경우 키-값 페어를 입력하고 태그 추가를 다시 선택하거나 태그 제거를 선택해야 합니다.

    4. (선택 사항) Amazon Elastic Container Service 작업에 태그를 전파하려면 태그 전파를 켭니다.

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

    1. 이미지에서 컨테이너를 시작하는 데 사용된 이미지 이름을 입력합니다. 기본적으로Docker Hub 레지스트리 내 이미지는 사용 가능합니다. repository-url/image:tag 형식으로 다른 저장소를 지정할 수도 있습니다. 파라미터의 최대 길이는 255자입니다. 파라미터는 대문자와 소문자, 숫자, 하이픈(-), 밑줄(_), 콜론(:), 마침표(.), 슬래시(/) 및 숫자 기호(#)를 포함할 수 있습니다. 이 파라미터는 Docker 원격 API컨테이너 생성 섹션에 있는 Imagedocker runIMAGE 파라미터와 매핑됩니다.

      참고

      Docker 이미지 아키텍처는 예정된 컴퓨팅 리소스의 프로세서 아키텍처와 일치해야 합니다. 예를 들어, 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).

    2. 명령에서 컨테이너에 전달할 명령을 지정합니다. 이 파라미터는 도커 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 Cmd(와)과 docker runCOMMAND 파라미터로 매핑됩니다. 도커 CMD 파라미터에 대한 자세한 정보는 https://docs.docker.com/engine/reference/builder/#cmd를 참조하세요.

      참고

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

    3. (선택 사항) 실행 역할의 경우 사용자를 대신하여 AWS API 호출을 수행할 권한을 부여하는 Amazon ECS 컨테이너 에이전트를 지정하는 IAM 역할을 지정합니다. 이 기능은 Amazon ECS IAM 역할을 작업에 사용합니다. 자세한 내용을 알아보려면 Amazon Elastic Container Service 개발자 안내서Amazon ECS 작업 실행 IAM 역할 섹션을 참조하세요.

    4. (선택 사항) 작업 역할 구성의 경우 AWS API에 대한 권한이 있는 IAM 역할을 선택합니다. 이 기능은 Amazon ECS IAM 역할을 작업에 사용합니다. 자세한 내용은 Amazon Elastic Container Service 개발자 안내서태스크에 대한 IAM 역할을 참조하세요.

      참고

      Amazon Elastic Container Service 태스크 역할 신뢰 관계를 보유한 역할만 여기 표시됩니다. AWS Batch 작업에 대한 IAM 역할 생성에 관한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서에서 사용자 태스크용 IAM 역할 및 정책 생성을 참조하십시오.

    5. (선택 사항) 파라미터를 작업 정의에 키-값 매핑으로 추가하여 사용자는 작업 정의 기본값을 재정의할 수 있습니다. 파라미터를 추가하려면

      1. 파라미터에서 파라미터 추가를 선택합니다. 키-값 페어를 입력한 다음 파라미터 추가를 다시 선택합니다.

        중요

        파라미터 추가를 선택한 경우 하나 이상의 파라미터를 구성하거나 파라미터 제거를 선택해야 합니다.

    6. vCPUs환경 구성에서는 컨테이너에 예약할 vCPU 수를 지정합니다. 이 파라미터는 Docker 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 CpuShares(와)과 docker run에 대한 --cpu-shares 옵션에 매핑됩니다. 각 vCPU는 1,024개의 CPU 공유와 동일합니다.

    7. 메모리에서는 작업 컨테이너에 제공할 메모리의 하드 제한(MiB)을 지정합니다. 컨테이너가 여기에 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다. 이 파라미터는 Docker 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 Memory(와)과 docker run에 대한 --memory 옵션에 매핑됩니다.

    8. GPU 개수에서 컨테이너에 예약할 GPU의 개수를 선택합니다.

    9. (선택 사항) 환경 변수 구성의 경우 환경 변수 추가를 선택하여 컨테이너에 전달할 환경 변수를 추가합니다. 이 파라미터는 Docker 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 Env(와)과 docker run에 대한 --env 옵션에 매핑됩니다.

    10. (선택 사항) 암호의 경우 암호 추가를 선택하여 암호를 이름-값 쌍으로 추가합니다. 이러한 보안 암호는 컨테이너에 노출됩니다. 자세한 내용은 LogConfiguration:secretOptions를 참조하세요.

    11. (선택 사항) Linux 구성 섹션에서:

      1. User(사용자)에서 컨테이너 내부에서 사용할 사용자 이름을 입력합니다. 이 파라미터는 Docker 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 User(와)과 docker run에 대한 --user 옵션에 매핑됩니다.

      2. 호스트 인스턴스에 대한 상위 권한을 작업 컨테이너에 부여하려면 (root 사용자와 유사) 권한이 있음 슬라이더를 오른쪽으로 드래그합니다. 이 파라미터는 Docker 원격 API(Docker Remote API)컨테이너 생성(Create a container) 섹션에 있는 Privileged(와)과 docker run에 대한 --privileged 옵션에 매핑됩니다.

      3. 컨테이너 내에서 init 프로세스를 실행하려면 init 프로세스 활성화를 켭니다. 이 프로세스는 신호를 전달하고 결과를 받아들입니다.

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

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

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

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

      4. 스왑 활용도의 경우 컨테이너의 스왑 동작을 나타내는 값을 0에서 100 사이의 값으로 입력합니다. 값을 지정하지 않고 스와핑이 활성화된 경우 기본값 60이 사용됩니다. 자세한 내용은 LinuxParameters:swappiness를 참조하세요.

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

      6. Tmpfs의 경우 tmpfs 추가를 선택하여 tmpfs 마운트를 추가합니다.

      7. 디바이스의 경우 의 경우 를 선택하여 장치를 추가합니다.

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

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

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

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

  3. Next(다음)를 선택합니다.

작업 만들기

작업을 생성하려면 다음을 수행합니다.

  1. 이름작업 구성 섹션에서 작업의 고유한 이름을 지정합니다. 각 이름의 최대 길이는 128자입니다. 대문자 및 소문자, 숫자, 하이픈(-) 및 밑줄(_)을 포함할 수 있습니다.

  2. [Next]를 선택합니다.

검토 및 생성

검토 및 생성 페이지에서 구성 과정을 검토합니다. 변경해야 하는 경우 편집을 선택합니다 입력이 끝나면 리소스 생성을 선택합니다.