BLOG

AWS CloudFormation을 사용하여 AWS Batch 리소스 생성 및 관리하기
작성일: 2018-05-10

AWS CloudFormation을 사용하면 개발자와 시스템 관리자가 (CloudFormation 스택이라고 부르는)관련 AWS 리소스 모음을 순서대로 예측 가능한 방식으로 프로비저닝 및 업데이트하여 쉽게 만들고 관리할 수 있습니다. 이제 CloudFormation 사용자는 나머지 AWS 인프라를 관리하는 것과 동일한 방식으로 AWS Batch 리소스를 배포하고 관리할 수 있습니다.

 

이 게시물에서는 CloudFormation에서 지원되는 기본 리소스를 강조하여 표시하고 CloudFormation을 사용하여 AWS Batch 컴퓨팅 환경을 생성하는 방법을 보여 줍니다. 이 게시물과 관련된 리전별 템플릿, 모든 CloudFormation 샘플은 CloudFormation 샘플 템플릿 사이트에서 찾을 수 있습니다. 오하이오(use-east-2)지역은 이 게시물의 나머지 부분에 대한 예시 지역으로 사용됩니다.

 

 

AWS Batch 리소스

 

AWS Batch는 AWS Cloud에서 배치 컴퓨팅 워크 로드를 효율적으로 실행할 수 있도록 지원하는 관리형 서비스입니다. 사용자는 실행할 응용 프로그램과 해당 작업의 CPU 및 메모리 요구 사항을 지정하여 작업을 작업 대기 열에 제출합니다. AWS Batch는 작업을 실행하는 데 필요한 적절한 양과 유형의 인스턴스를 런칭하는 역할을 합니다.

 

AWS Batch를 사용하면 컴퓨팅 인프라를 구성하고 관리하는 데 있어 차별화되지 않은 부담이 제거되므로 애플리케이션과 사용자에게 집중할 수 있습니다. 이는 AWS Batch의 작동 방식 비디오에서 확인할 수 있습니다.

 

AWS Batch는 다음 리소스를 관리합니다.

 

  • 작업 정의
  • 작업 대기 열
  • 컴퓨팅 환경

 

작업 정의는 작업을 실행하는 방법(예: 작업에 사용할 Docker 이미지, vCPU의 수 및 필요한 메모리 수, 사용할 IAM 역할 등)을 지정합니다.

 

작업은 컴퓨팅 환경 내의 Amazon EC2 인스턴스에서 실행되도록 예약할 수 있을 때까지 작업이 상주하는 작업 대기 열에 제출됩니다. AWS 계정에는 각각 우선 순위가 다른 여러 작업 대기 열이 있을 수 있습니다. 이를 통해 컴퓨팅 리소스의 소비량을 조직의 요구 사항과 밀접하게 조정할 수 있습니다.

 

컴퓨팅 환경에서는 AWS Batch 작업을 실행하는 데 사용되는 EC2 인스턴스 및 기타 컴퓨팅 리소스를 프로비저닝하고 관리합니다. 작업 대기 열은 하나 이상의 컴퓨팅 환경에 매핑되며 지정된 환경을 하나 이상의 작업 대기 열에 매핑할 수도 있습니다. 이러한 다대다 관계는 컴퓨팅 환경 순서 및 작업 대기 열 우선 순위 속성에 의해 정의됩니다.

 

다음 다이어그램은 AWS Batch 리소스가 상호 작용하는 방법에 대한 일반적인 개요를 보여 줍니다.

 

 

CloudFormation 스택 생성 및 업데이트

 

스택이 생성되면 CloudFormation 템플릿을 사용하여 AWS Batch 작업 정의가 등록됩니다. 동일한 이름의 작업 정의가 이미 등록된 경우 새 리비전이 생성됩니다. 스택 업데이트에서 CloudFormation 템플릿의 작업 정의 사양을 변경하면 해당 작업 정의가 새로 리비전되고 이전 작업 정의 리비전이 등록 취소됩니다. AWS Batch는 작업 정의를 삭제하지 않으므로 스택 삭제는 작업 정의의 등록 취소만 초래합니다.

 

스택 생성 시 템플릿을 사용하여 작업 대기 열이 생성됩니다. 스택 내에서 작업 대기 열 속성을 변경하면 UpdateJobQueue API 작업이 호출됩니다. 마찬가지로 스택 삭제를 수행하면 AWS Batch 컴퓨팅 환경에서 작업 대기 열이 삭제됩니다.

 

CloudFormation은 템플릿에 지정된 속성을 사용하여 AWS Batch 컴퓨팅 환경을 생성합니다. 가능한 경우 업데이트 스택으로 인해 컴퓨팅 환경이 업데이트됩니다.

 

UpdateComputeEnvironment API작업에서 지원되지 않는 매개 변수를 변경해야 하는 경우 스택 업데이트로 인해 컴퓨팅 환경이 삭제되고 재생성됩니다. 스택을 삭제하면 컴퓨팅 환경이 비활성화된 다음 삭제됩니다.

 

특히 리소스를 재배치하는 경우에는 CloudFormation에서 지정한 모든 명명 규칙을 따라야 합니다. 그렇지 않으면 실패한 스택 변경의 위험이 있습니다. 예를 들어, 모든 AWS Batch 리소스 속성 이름은 대문자로 표시해야 하며 리소스를 교체할 때 리소스 이름을 변경해야 합니다. 이는 다른 CloudFormation 스택도 마찬가지입니다.

 

템플릿에서 ComputeEnvironmentName, JobQueueName, 또는 JobDefinitionName에 대한 값을 제공하지 않는 경우 CloudFormation에서 리소스에 제공한 논리적인 ID를 사용하여 임의의 이름이 생성됩니다.

 

 

“HelloWorld” 예제 스택 시작하기

 

다음은 AWS Batch 리소스가 있는 CloudFormation 스택의 익숙한 “HelloWorld” 예시입니다.

 

 

이 예에서는 간단한 작업 정의, 작업 제출을 수락할 수 있는 작업 대기 열 및 작업 실행에 사용된 컴퓨팅 리소스가 포함된 컴퓨팅 환경을 등록합니다. 스택 템플릿은 AWS Batch에 필요한 추가 AWS 리소스도 생성합니다.

 

  • 필요한 작업을 수행할 수 있는 AWS Batch 권한을 부여하는 IAM 서비스 역할
  • IAM ECS 인스턴스 역할
  • VPC
  • VPC 서브넷(일반 템플릿을 제공했지만 개인 서브넷이 권장됨)
  • 보안그룹

 

이 스택은 CloudFormation 콘솔에서 쉽게 배포할 수 있지만 스택 생성을 완료하는 CLI 명령을 제공합니다. 스택 시작 버튼을 사용하거나 다음 명령을 실행합니다.

 

 

 

aws –region us-east-2 cloudformation create-stack –stack-name hello-world-batch-stack –template-url https://s3-us-east-2.amazonaws.com/cloudformation-templates-us-east-2/Managed_EC2_Batch_Environment.template –capabilities CAPABILITY_IAM

 

이벤트 탭의 CloudFormation 콘솔에 있는 CloudFormation 스택에서 리소스 생성을 모니터링할 수 있습니다.

 

 

CREATE_COMPLETE 상태를 관찰하여 스택이 성공적으로 생성되었는지 확인합니다. 이 때 출력 탭에서 새 리소스 ARN도 볼 수 있습니다.

 

 

스택이 성공적으로 생성되면 “Hello-World” 작업을 제출하는 데 필요한 모든 작업이 완료됩니다.

 

정확한 작업 정의 이름과 리비전 번호를 사용해야 합니다. CloudFormation 스택 출력 탭에서 정확한 ARN (Amazon Resource Name)을 찾을 수 있습니다. AWS Batch 리소스에 대한 임의 리소스 이름이 생성됩니다. 기존 hello-World 작업 정의가 있는 경우 스택 출력에서 새 CloudFormation 스택에서 생성한 작업 정의 리비전을 사용하여 명령을 실행해야 합니다.

 

다음 명령을 실행하여 작업을 제출합니다.

 

aws –region us-east-2 batch submit-job –job-name hello-world-batch-job –job-queue job-queue-from-cfn-outputs –job-definition job-definition-from-cfn-outputs:1

 

작업 아래의 AWS Batch 콘솔에서 작업이 성공적으로 실행되는지 모니터링할 수 있습니다.

 

 

이 스택을 사용하고 리소스를 삭제하려면 다음 명령을 실행하십시오. CloudFormation는 작업 정의를 등록 취소하고 스택 템플릿의 작업 대기 열, 컴퓨팅 환경 및 나머지 리소스를 삭제합니다.

 

aws –region us-east-2 cloudformation delete-stack –stack-name hello-world-batch-stack

 

AWS Batch 리소스의 기본 사항에 대해 배웠으므로 다음과 같은 좀 더 복잡한 예를 들 수 있습니다.

 

 

온디맨드 및 스팟 컴퓨팅 환경에서 우선 순위가 높은/낮은 작업 대기 열

 

이 CloudFormation 스택은 우선 순위가 다른 두 개의 작업 대기 열과 두 개의 컴퓨팅 환경을 생성합니다. 하나의 온디맨드 컴퓨팅 환경과 하나의 스팟 컴퓨팅 환경(온디맨드의 40% 가격)을 갖추고 있습니다.

 

첫 번째 작업 대기 열은 우선 순위가 높으며 두 컴퓨팅 환경 모두에 작업을 제공하는 반면, 우선 순위가 낮은 작업 대기 열은 스팟 컴퓨팅 환경으로만 작업을 제출합니다.

 

 

우선 순위가 높은 작업 대기 열과 우선 순위가 낮은 작업 대기 열이라는 두 가지 작업 정의가 있습니다. 지정된 작업 정의를 사용하여 제출된 각 작업은 작업 대기 열에 제출됩니다. 예를 들어 중요한 응용 프로그램 작업 정의로 제출된 작업은 우선 순위가 높은 작업 대기 열에 제출되고 테스트 응용 프로그램 정의 작업에 제출된 작업은 우선 순위가 낮은 작업 대기 열에 제출됩니다.

 

이 예제에서는 작업 정의를 모두 등록하고 컴퓨팅 환경과 작업 대기 열을 생성합니다. 또한 AWS Batch에 대한 VPC, 서브넷, 보안 그룹, IAM 서비스 역할, ECS 인스턴스 역할 및 IAM Spot Fleet 역할도 생성합니다. 스택 시작 버튼을 사용하거나 다음 명령을 실행합니다.

 

 

 

aws –region us-east-2 cloudformation create-stack –stack-name high-low-priority-batch-stack –template-url https://s3-us-east-2.amazonaws.com/cloudformation-templates-us-east-2/Managed_EC2_and_Spot_Batch_Environment.template –capabilities CAPABILITY_IAM

 

이벤트 탭의 CloudFormation 콘솔에 있는 CloudFormation 스택에서 리소스 생성을 모니터링합니다.

 

다시 CloudFormation 스택의 출력에서 작업 정의 ARN을 찾습니다. 아래 명령에 일반 이름을 지정합니다.

 

스택 생성이 완료되면 다음 명령을 실행하여 각 작업 대기 열에 작업을 제출합니다.

 

aws –region us-east-2 batch submit-job –job-name high-priority-batch-job –job-queue HighPriorityJobQueue-from-cfn-outputs –job-definition ProdApplicationJob-from-cfn-outputs:1

aws –region us-east-2 batch submit-job –job-name low-priority-batch-job –job-queue LowPriorityJobQueue-from-cfn-outputs –job-definition TestApplicationJob-from-cfn-outputs:1

 

다른 모든 CloudFormation 스택과 마찬가지로 애플리케이션의 특정 요구 사항에 맞게 리소스를 업데이트할 수 있습니다. AWS CloudFormation Designer는 CloudFormation 템플릿을 생성, 보기 및 수정하기 위한 그래픽 도구입니다.

 

대체가 필요한 리소스 속성을 변경하면 이 변경 사항을 반영하는 새 리소스가 생성되고 사용되지 않는 리소스가 삭제됩니다. 변경할 수 없는 컴퓨팅 환경이나 작업 대기 열 속성을 변경하면 대체됩니다. 업데이트가 가능한 속성을 변경하면 기존 리소스가 업데이트됩니다. 작업 정의를 변경하면 기존 작업 정의의 새 리비전이 등록되고 그 이전에 있던 리비전은 등록 취소됩니다.

 

마지막으로 다음 명령을 실행하여 AWS Batch 리소스가 포함된 CloudFormation 스택을 삭제합니다.

 

aws –region us-east-2 cloudformation delete-stack –stack-name high-low-priority-batch-stack

 

결론

 

이 게시물에서는 다른 AWS 서비스 리소스가 포함된 CloudFormation 스택의 일부로 CloudFormation 템플릿을 사용하여 AWS Batch 리소스를 생성, 업데이트 및 삭제하는 단계를 자세히 설명합니다. 자세한 내용은 다음 항목을 참조하십시오.

 

AWS::Batch::ComputeEnvironment,

AWS::Batch::JobQueue,

AWS::Batch::JobDefinition

 

원문 URL: https://aws.amazon.com/ko/blogs/compute/using-aws-cloudformation-to-create-and-manage-aws-batch-resources/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.