AWS Batch 문제 해결 - AWS Batch

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

AWS Batch 문제 해결

컴퓨팅 환경, 작업 대기열, 작업 정의 또는 작업과 관련된 문제를 해결해야 하는 경우도 있습니다. 이 장에서는 이러한 문제를 해결하고 복구하는 방법에 대해 설명합니다.AWS Batch환경.

INVALID컴퓨팅 환경

관리형 컴퓨팅 환경을 잘못 구성했을 수 있습니다. 이렇게 하면 컴퓨팅 환경이INVALID상태이며 배치 작업을 수락할 수 없습니다. 다음 섹션에서는 가능한 원인과 원인을 기반으로 문제를 해결하는 방법에 대해 설명합니다.

잘못된 역할 이름 또는 ARN

컴퓨팅 환경에 들어가는 가장 일반적인 원인INVALID상태는AWS Batch서비스 역할 또는 Amazon EC2 스팟 플릿 역할의 이름 또는 Amazon 리소스 이름 (ARN) 이 잘못되었습니다. 이는 다음을 사용하여 생성되는 컴퓨팅 환경에서 더 일반적입니다.AWS CLI또는AWSSDK. 에서 컴퓨팅 환경을 만들 때AWS Management Console,AWS Batch에서는 올바른 서비스 또는 스팟 집합 역할을 선택하는 데 도움이 됩니다. 그러나 이름 또는 ARN을 수동으로 입력하고 잘못 입력하는 경우 결과 계산 환경도INVALID.

그러나 IAM에 대한 이름 또는 ARN을 수동으로 입력하는 경우AWS CLI명령 또는 SDK 코드AWS Batch문자열의 유효성을 검사할 수 없습니다. 잘못된 값을 받아들이고 환경을 만들려고 시도해야 합니다.AWS Batch환경을 생성하지 못하게 되면 환경이INVALID를 선택하면 다음과 같은 오류가 표시됩니다.

잘못된 서비스 역할인 경우:

CLIENT_ERROR - Not authorized to perform sts:AssumeRole (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: dc0e2d28-2e99-11e7-b372-7fcc6fb65fe7)

잘못된 스팟 집합 역할인 경우:

CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID: 331205f0-5ae3-4cea-bac4-897769639f8d) Parameter: SpotFleetRequestConfig.IamFleetRole is invalid

이러한 문제의 공통적인 원인 한 가지는 IAM 역할의 이름만 지정하는 경우입니다.AWS CLI또는AWS전체 Amazon 리소스 이름 (ARN) 이 아닌 SDK 이는 역할을 생성한 방식에 따라 ARN에 가 포함될 수도 있기 때문입니다.aws-service-role경로 접두사. 예를 들어, 수동으로 만드는 경우AWS Batch의 절차를 사용하는 서비스 역할AWS Batch서비스 IAM 역할를 사용하여 서비스 역할 ARN 다음과 같을 수 있습니다.

arn:aws:iam::123456789012:role/AWSBatchServiceRole

하지만 오늘 콘솔 처음 실행 마법사의 일부로 서비스 역할을 생성한 경우에는 서비스 역할 ARN이 다음과 같습니다.

arn:aws:iam::123456789012:role/aws-service-role/AWSBatchServiceRole

를 사용할 때 IAM 역할의 이름만 지정하는 경우AWS CLI또는AWSSDKAWS BatchARN이 를 사용하지 않는다고 가정합니다.aws-service-role경로 접두사. 이러한 이유로 컴퓨팅 환경을 생성할 때는 IAM 역할에 대해 전체 ARN을 지정하는 것이 좋습니다.

이와 같이 잘못 구성된 컴퓨팅 환경을 복원하려면 섹션을 참조하십시오.복구INVALID컴퓨팅 환경.

복구INVALID컴퓨팅 환경

에 컴퓨팅 환경이 있는 경우INVALID상태에서 업데이트하여 잘못된 매개 변수를 복구합니다. For an 잘못된 역할 이름 또는 ARN를 사용하여 올바른 서비스 역할을 사용하여 컴퓨팅 환경을 업데이트합니다.

잘못 구성된 컴퓨팅 환경을 복원하려면

  1. 열기AWS Batch콘솔https://console.aws.amazon.com/batch/.

  2. 탐색 모음에서AWS 리전사용할 수 있습니다.

  3. 탐색 창에서 Compute environments(컴퓨팅 환경)를 선택합니다.

  4. Compute environments(컴퓨팅 환경) 페이지에서 편집할 컴퓨팅 환경 옆의 라디오 버튼을 선택한 다음 Edit(편집)를 선택합니다 .

  5. 컴퓨팅 환경 업데이트페이지,서비스 역할를 사용하여 컴퓨팅 환경에 사용할 IAM 역할을 선택합니다. AWS Batch 콘솔에는 컴퓨팅 환에 대해 올바른 신뢰 관계를 가지고 있는 역할만 표시됩니다.

  6. Save(저장)를 선택하여 컴퓨팅 환경을 업데이트합니다.

잡스가 갇혀RUNNABLE상태

컴퓨팅 환경에 컴퓨팅 리소스가 포함되어 있지만 작업이RUNNABLE상태. 그러면 실제로 컴퓨팅 리소스에 배치하지 못하는 원인이 있기 때문입니다. 이러한 문제가 발생하는 몇 가지 공통 원인은 다음과 같습니다.

awslogs컴퓨팅 리소스에 로그 드라이버가 구성되어 있지 않습니다

AWS Batch작업은 로그 정보를 에 전송합니다. CloudWatch 로그. 이를 위해서는 awslogs 로그 드라이버를 사용할 수 있도록 컴퓨팅 리소스를 구성해야 합니다. 컴퓨팅 리소스 AMI가 Amazon ECS 최적화 AMI (또는 Amazon Linux) 를 기반으로 하는 경우를 가정합니다. 그런 다음 이 드라이버는 기본적으로ecs-init패키지. 이제 다른 기본 AMI를 사용한다고 가정합니다. 그런 다음 다음을 확인해야 합니다.awslogs로그 드라이버는 를 사용하여 사용 가능한 로그 드라이버로 지정됩니다.ECS_AVAILABLE_LOGGING_DRIVERSAmazon ECS 컨테이너 에이전트가 시작될 때의 환경 변수입니다. 자세한 내용은 컴퓨팅 리소스 AMI 사양컴퓨팅 리소스 AMI 생성 섹션을 참조하세요.

리소스 부족

작업 정의에서 CPU 또는 메모리 리소스가 컴퓨팅 리소스가 할당할 수 있는 크기를 초과하여 지정되어 있으면 작업이 절대로 배치되지 않습니다. 예를 들어 작업에서 메모리를 4GiB로 지정하였지만 컴퓨팅 리소스의 메모리가 이보다 작다고 가정합니다. 그런 다음 작업을 이러한 컴퓨팅 리소스에 배치할 수 없는 경우입니다. 이러한 경우에는 작업 정의에서 지정한 메모리 크기를 줄이거나, 혹은 용량이 더욱 큰 컴퓨팅 리소스를 환경에 추가해야 합니다. 일부 메모리는 Amazon ECS 컨테이너 에이전트 및 기타 중요 시스템 프로세스용으로 예약되어 있습니다. 자세한 정보는 컴퓨팅 리소스메모리 관리을 참조하십시오.

컴퓨팅 리소스에 대한 인터넷 액세스 없음

컴퓨팅 리소스는 Amazon ECS 서비스 엔드포인트와 통신하기 위한 액세스 권한이 필요합니다. 이는 인터페이스 VPC 엔드포인트를 통하거나 퍼블릭 IP 주소가 있는 컴퓨팅 리소스를 통해 이루어질 수 있습니다.

인터페이스 VPC 엔드포인트에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서Amazon ECS 인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요.

인터페이스 VPC 엔드포인트가 구성되어 있지 않고 컴퓨팅 리소스에 퍼블릭 IP 주소가 없는 경우 NAT(Network Address Translation)를 사용하여 이 액세스 권한을 제공해야 합니다. 자세한 내용은 Amazon VPC 사용 설명서NAT 게이트웨이 섹션을 참조하세요. 자세한 내용은 VPC(가상 사설 클라우드) 생성 단원을 참조하세요.

Amazon EC2 인스턴스 제한

계정에서 시작할 수 있는 Amazon EC2 인스턴스의 수입니다.AWS 리전는 EC2 인스턴스 할당량에 따라 결정됩니다. 일부 인스턴스 유형은 인스턴스 유형마다 할당량도 있습니다. 계정의 Amazon EC2 인스턴스 할당량 (한도 증가를 요청하는 방법 포함) 에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2 서비스 한도Linux 인스턴스용 Amazon EC2 사용 설명서.

Amazon ECS 컨테이너 에이전트가 설치되지 않았습니다.

이를 위해 Amazon ECS 컨테이너 에이전트가 Amazon 머신 이미지 (AMI) 에 설치되어 있어야 합니다.AWS Batch작업을 실행합니다. Amazon ECS 컨테이너 에이전트는 Amazon ECS 최적화 AMI에 기본적으로 설치됩니다. Amazon ECS 컨테이너 에이전트에 대한 자세한 내용은 단원을 참조하십시오.Amazon ECS 컨테이너 에이전트Amazon Elastic Container Service.

자세한 내용은 단원을 참조하십시오.왜 를 사용해야 합니까?AWSBatch 작업이 RUNNABLE 상태로 멈췄습니까?AWS지식 센터.

생성 시 태그가 지정되지 않은 스팟 인스턴스

AWS Batch 컴퓨팅 리소스에 대한 스팟 인스턴스 태그 지정이 2017년 10월 25일자로 지원됩니다. 이전에는 권장되는 IAM 관리형 정책 (AmazonEC2SpotFleetRole) Amazon EC2 스팟 플릿 역할에 대해 시작 시 스팟 인스턴스에 태그를 지정할 권한이 없었습니다. 새로 권장되는 IAM 관리형 정책을 이라고 합니다.AmazonEC2SpotFleetTaggingRole. 시작 시 스팟 인스턴스 태그 지정을 지원합니다.

생성 시 스팟 인스턴스 태그 지정을 수정하려면 다음 절차에 따라 Amazon EC2 스팟 플릿 역할에 현재 권장되는 IAM 관리형 정책을 적용합니다. 이렇게 하면 해당 역할로 생성되는 future 스팟 인스턴스는 인스턴스 태그를 생성할 때 적용할 수 있는 권한을 갖습니다.

현재 IAM 관리형 정책을 Amazon EC2 스팟 플릿 역할에 적용하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 선택Roles를 선택한 후 Amazon EC2 스팟 플릿 역할을 선택합니다.

  3. 정책 연결(Attach policies)을 선택합니다.

  4. AmazonEC2SpotFleetTaggingRole을 선택하고 Attach policy(정책 연결)를 선택합니다.

  5. Amazon EC2 스팟 플릿 역할을 다시 선택하여 이전 정책을 제거합니다.

  6. 를 선택합니다.x의 오른쪽에Amazonec2스포트플릿롤정책 및 선택Detach.

스팟 인스턴스가 축소되지 않음

AWS Batch를 소개했습니다AWSServiceRoleForBatch2021년 3월 10일에 서비스 연결 역할 에 역할이 지정되지 않은 경우serviceRole컴퓨팅 환경의 매개 변수로, 이 서비스 연결 역할은 서비스 역할로 사용됩니다. 그러나 EC2 스팟 컴퓨팅 환경에서 서비스 연결 역할이 사용되지만 사용된 스팟 역할에AmazonEC2SpotFleetTaggingRole관리형 정책. 그런 다음 스팟 인스턴스가 축소되지 않습니다. 따라서 다음 메시지와 함께 오류가 표시됩니다. “이 작업을 수행할 수 있는 권한이 없습니다.” 다음 단계에 따라 에서 사용하는 스팟 집합 역할을 업데이트합니다.spotIamFleetRole파라미터. 자세한 내용은 단원을 참조하십시오.서비스 연결 역할 사용에 대한 권한을 위임할 역할 생성AWS서비스IAM 사용 설명서.

AttachAmazonEC2SpotFleetTaggingRole에서 스팟 플릿 역할에 대한 관리형 정책AWS Management Console

현재 IAM 관리형 정책을 Amazon EC2 스팟 플릿 역할에 적용하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 선택Roles를 선택한 후 Amazon EC2 스팟 플릿 역할을 선택합니다.

  3. 정책 연결(Attach policies)을 선택합니다.

  4. AmazonEC2SpotFleetTaggingRole을 선택하고 Attach policy(정책 연결)를 선택합니다.

  5. Amazon EC2 스팟 플릿 역할을 다시 선택하여 이전 정책을 제거합니다.

  6. 를 선택합니다.x오른쪽의Amazonec2스포트플릿롤정책 및 선택Detach.

AttachAmazonEC2SpotFleetTaggingRole를 사용하여 스팟 플릿 역할에 대한 관리형 정책AWS CLI

예제 명령에서는 Amazon EC2 스팟 집합 역할의 이름이 지정되었다고 가정합니다.Amazonec2스포트플릿롤. 역할에서 다른 이름을 사용하는 경우 일치하도록 명령을 조정합니다.

를 연결하려면AmazonEC2SpotFleetTaggingRole스팟 플릿 역할에 대한 관리형 정책

  1. 를 연결하려면AmazonEC2SpotFleetTaggingRole관리형 IAM 정책Amazonec2스포트플릿롤role 를 사용하여 다음 명령을 실행합니다.AWS CLI.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \ --role-name AmazonEC2SpotFleetRole
  2. 를 분리하려면Amazonec2스포트플릿롤에서 관리형 IAM 정책Amazonec2스포트플릿롤role 를 사용하여 다음 명령을 실행합니다.AWS CLI.

    aws iam detach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetRole \ --role-name AmazonEC2SpotFleetRole

Secrets Manager 암호를 검색할 수 없음

버전 1.16.0-1보다 이전 버전의 Amazon ECS 에이전트에서 AMI를 사용하는 경우 Amazon ECS 에이전트 구성 변수를 사용해야 합니다.ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true를 사용하여 이 기능을 사용합니다. 를 에 추가할 수 있습니다../etc/ecs/ecs.config해당 인스턴스를 생성할 때 파일을 새 컨테이너 인스턴스에 저장합니다. 또는 기존 인스턴스에 추가할 수도 있습니다. 기존 인스턴스에 추가하는 경우 ECS 에이전트를 추가한 후 다시 시작해야 합니다. 자세한 내용은 단원을 참조하십시오.Amazon ECS 컨테이너 에이전트 구성Amazon Elastic Container Service.

작업 정의 리소스 요구 사항을 무시할 수 없음

에 지정된 메모리 및 vCPU 재정의memoryvcpus의 구성원컨테이너 오버라이드구조, 전달SubmitJob에 지정된 메모리 및 vCPU 요구 사항을 재정의할 수 없습니다.리소스 요구 사항작업 정의에서 구조입니다.

이러한 리소스 요구사항을 무시하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

“이 값은 사용되지 않는 키로 제출되었으며 작업 정의의 리소스 요구 사항에 의해 제공된 값과 충돌할 수 있습니다.”

이 문제를 해결하려면 에서 메모리 및 vCPU 요구 사항을 지정합니다.리소스 요구 사항의 멤버컨테이너 오버라이드. 예를 들어 메모리 및 vCPU 재정의가 다음 줄에 지정된 경우

"containerOverrides": { "memory": 8192, "vcpus": 4 }

다음과 같이 변경하십시오.

"containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "8192" }, { "type": "VCPU", "value": "4" } ], }

에 지정된 메모리 및 vCPU 요구 사항을 동일하게 변경합니다.컨테이너 프로퍼티작업 정의에서 객체입니다. 예를 들어 메모리 및 vCPU 요구 사항이 다음 줄에 지정된 경우

{ "containerProperties": { "memory": 4096, "vcpus": 2, }

다음과 같이 변경하십시오.

"containerProperties": { "resourceRequirements": [ { "type": "MEMORY", "value": "4096" }, { "type": "VCPU", "value": "2" } ], }