내용으로 건너뛰기

Image Builder에서 빌드 파이프라인 시간 초과 오류를 해결하려면 어떻게 해야 합니까?

5분 분량
0

EC2 Image Builder에서 받은 빌드 파이프라인 시간 초과 오류를 해결하려고 합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

빌드 파이프라인 시간 초과 오류를 해결하려면 시간 초과가 발생한 시점에 따라 다음 작업을 수행하십시오. 시간 초과를 모니터링하는 방법에 대한 자세한 내용은 Amazon CloudWatch Logs를 사용하여 이미지 빌더 로그 모니터링을 참조하십시오.

빌드에서 SSM Agent 가용성을 확인하면 시간 초과가 발생함

빌드에서 AWS Systems Manager Agent(SSM Agent)를 확인할 때 시간 초과가 발생하면 다음 오류 메시지 중 하나를 받을 수 있습니다.

"Workflow Execution ID: failed with reason: ExpectationNotMet. ssm:*CommandInvocations returned terminal state Failed in workflow step LaunchBuildInstance."

"Workflow Execution ID: failed with reason: An error occurred (InvalidInstanceId) when calling the SendCommand operation: Instances [[i-1a1b1c1d1e1f1g1h1]] not in a valid state for account in workflow step LaunchBuildInstance."

"Workflow Execution ID: failed with reason: ExpectationNotMet. ec2:DescribeInstanceStatus did not meet terminal states: [['passed']] after 100 attempts. Reason: Timeout. in workflow step LaunchBuildInstance."

오류를 해결하려면 다음 작업을 수행하십시오.

Amazon EC2 인스턴스에 필요한 IAM 권한이 있는지 확인

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 필요한 AWS Identity and Access Management(IAM) 권한이 있는지 확인하십시오. AmazonSSMManagedInstanceCore 관리형 정책을 Image Builder에 사용하는 IAM 역할에 연결합니다. Image Builder에 사용하는 역할을 식별하려면 인프라 구성 세부 정보를 확인하십시오. 또한 AWSServiceRoleForImageBuilder 역할이 이미지 레시피 차단 디바이스에 지정된 AWS Key Management Service(AWS KMS) 키를 사용할 수 있는지 확인하십시오.

SSM Agent가 엔드포인트에 도달할 수 있는지 확인

구성에 따라 다음 설정을 확인하십시오.

  • 인터넷 게이트웨이가 있는 퍼블릭 서브넷을 사용하는 경우 자동으로 퍼블릭 IPv4 주소를 할당하도록 서브넷을 구성합니다.
  • NAT 게이트웨이가 있는 프라이빗 서브넷을 사용하는 경우 퍼블릭 서브넷을 사용하도록 NAT 게이트웨이를 구성합니다.
  • Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트가 있는 프라이빗 서브넷을 사용하는 경우 AWS Systems Manager의 프라이빗 엔드포인트를 구성합니다.
  • 보안 그룹 및 네트워크 액세스 제어 목록(네트워크 ACL)이 임시 포트 1024-65535의 인바운드 연결과 포트 443의 아웃바운드 연결을 허용하는지 확인합니다.
  • AWS PrivateLink 엔드포인트가 있는 프라이빗 서브넷을 사용하는 경우 Amazon VPC 엔드포인트 보안 그룹이 포트 443의 인바운드 연결을 허용하는지 확인합니다.
    참고: 인바운드 연결을 허용하려면 서브넷 또는 Amazon VPC CIDR 주소를 사용하십시오.

추가 문제 해결 단계는 Image Builder에서 ‘Step timed out while step is verifying the Systems Manager Agent availability on the target instance(s)’라는 오류가 발생하면서 이미지 빌드 파이프라인이 실패하는 이유는 무엇입니까?를 참조하십시오.

빌드가 AWS CLI를 다운로드하면 시간 초과가 발생함

EC2 인스턴스의 Amazon Machine Image(AMI)에 AWS CLI가 없는 경우, 부트스트랩 스크립트는 인터넷을 통해 AWS CLI를 설치합니다. 그러나 인터넷 연결을 허용하지 않는 프라이빗 서브넷에서 빌드하는 경우 ApplyBuildComponents 단계에서 빌드 시간이 초과됩니다. 컨테이너 빌드의 경우 BootstrapBuildInstance 단계에서 시간 초과가 발생합니다.

이 시간 초과 문제를 해결하려면 NAT 게이트웨이 또는 인터넷 게이트웨이를 통해 서브넷의 인터넷 연결을 허용하십시오. 또는 AWS CLI를 설치할 사용자 지정 AMI를 만듭니다.

LaunchBuildInstance 단계에서 시간 초과가 발생함

빌드 인스턴스에서는 고유한 루트 디바이스 이름을 사용해야 합니다. 따라서 루트 디바이스의 이름을 /dev/xvda 또는 /dev/sda1로 지정하는 것은 모범 사례가 아닙니다. CreateImageRecipe API를 사용하는 경우 중복된 루트 디바이스 이름을 사용하면 다음과 같은 오류 메시지와 함께 시간 초과가 발생합니다.

"Workflow Execution ID: failed with reason: ExpectationNotMet. ec2:DescribeInstanceStatus did not meet terminal states: [['passed']] after 100 attempts. Reason: Timeout. in workflow step LaunchBuildInstance."

참고: AWS Nitro System을 기반으로 구축된 인스턴스 또는 Xen 인스턴스 유형인 인스턴스를 사용하는 경우 중복된 디바이스 이름을 사용할 수 있습니다.

소스 AMI의 디바이스 이름을 확인하려면 다음 describe-images AWS CLI 명령을 실행합니다.

aws ec2 describe-images \
    --region exampleregion \
    --image-ids exampleami

참고: exampleregion을 AWS 리전으로 바꾸고 exampleami를 소스 AMI ID로 바꿉니다.

출력에서 RootDeviceName 값을 확인합니다. Image Builder 레시피에서 동일한 디바이스 이름을 사용해야 합니다.

빌드에서 Image Builder 구성 요소를 가져오면 시간 초과가 발생함

프라이빗 서브넷에서 빌드하는데 Image Builder를 연결하여 구성 요소를 다운로드할 수 없는 경우 다음과 같은 오류 메시지를 받습니다.

"failed with reason: failed to download the EC2 Image Builder Component, operation error imagebuilder: GetComponent, exceeded maximum number of attempts, 3, dial tcp i/o timeout."

위 오류를 해결하려면 보안 그룹 및 DNS 확인이 필수 포트에서 통신을 허용하는지 확인하십시오. 또는 Image Builder 인프라 구성에 사용하는 것과 동일한 VPC 및 서브넷에 대한 인터페이스 Amazon VPC 엔드포인트를 만듭니다. 또한 구성이 Image Builder 요구 사항을 준수하는지 확인합니다.

빌드가 미러 목록을 검색하면 시간 초과가 발생함

Amazon Linux는 미러 목록을 Amazon Simple Storage Service(Amazon S3) 버킷에 저장합니다. Amazon S3에 액세스할 수 없는 프라이빗 서브넷에 구축하면 다음과 같은 시간 초과 오류 메시지를 받습니다.

"Could not retrieve mirrorlist; error was 12: Timeout was reached."

이 문제를 해결하려면 Amazon S3용 Amazon VPC 게이트웨이 엔드포인트를 만드십시오. 기본적으로 Amazon VPC는 엔드포인트를 만들 때 Amazon S3 접두사 목록을 라우팅 테이블에 추가합니다. 그러나 접두사 목록이 라우팅 테이블에 있는지 확인하는 것이 모범 사례입니다.

Amazon Linux가 아닌 AMI에서 빌드하는 경우 미러 목록은 Amazon S3에 저장되지 않습니다. 이 시나리오에서는 빌드가 리포지토리/미러 목록을 가져오면 빌드 시간 초과가 발생할 수 있습니다. 네트워크 방화벽이나 프록시에서 리포지토리 주소 또는 URL을 허용해야 합니다. 리포지토리/미러 목록에 인터넷이 필요한 경우 NAT 게이트웨이를 통해 서브넷에 대한 인터넷 연결을 허용하십시오.

ApplyBuildComponents 단계에서 시간 초과가 발생함

ApplyBuildComponents 단계에서 빌드 시간 초과가 발생하면 다음과 같은 오류 메시지를 받습니다.

"Workflow Execution ID: failed with reason: ExpectationNotMet. ssm:ListCommandInvocations did not meet terminal states: [['Success']] after 1440 attempts. Reason: Timeout. in workflow step ApplyBuildComponents."

이 문제를 해결하려면 Image Builder가 인프라의 Amazon S3 버킷으로 전송한 로그를 분석하십시오. 자세한 내용은 파이프라인 빌드 문제 해결의 워크플로 런타임 로그 검토를 참조하십시오.

또한 새 이미지를 빌드하거나 테스트하는 데 사용하는 인스턴스의 구성 요소 로그를 분석하십시오. 로그를 확인하기 전에 실패 시 인스턴스 종료를 비활성화합니다. 이 기능에 액세스하려면 다음 단계를 완료하십시오.

  1. Image Builder 콘솔을 엽니다.
  2. 인프라 편집을 선택합니다.
  3. 편집을 선택한 다음, 이미지 빌드 관련 문제를 해결하기 위한 설정 지정을 선택합니다.
  4. 인스턴스 설정을 선택한 다음, 실패 시 인스턴스 종료를 선택 취소합니다.

참고: detailedoutput.json 로그 파일에는 구성 요소가 실패했거나 시간이 초과된 이유가 설명되어 있습니다. application.log 파일은 디버그 수준의 문제 해결 정보를 제공합니다.

마지막으로 문서의 YAML 스키마에서 timeoutSeconds 파라미터 값을 확인하십시오. 기본값은 7200입니다. Image Builder 시간이 초과되기까지 걸리는 시간을 늘리려면 YAML 문서에서 값을 업데이트하십시오. -1의 값은 무한합니다.

AWS 공식업데이트됨 10달 전
댓글 없음

관련 콘텐츠