Image Builder 문제 해결 - EC2 Image Builder

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

Image Builder 문제 해결

EC2 Image Builder는 모니터링 및 문제 해결을 AWS 서비스 위해와 통합되어 이미지 빌드 문제를 해결하는 데 도움이 됩니다. Image Builder는 이미지 빌드 프로세스의 각 단계에 대한 진행 상황을 추적하고 표시합니다. 또한 Image Builder는 사용자가 제공한 Amazon S3 위치로 로그를 내보낼 수 있습니다.

고급 문제 해결을 위해 AWS Systems Manager 명령 실행을 사용하여 사전 정의된 명령과 스크립트를 실행할 수 있습니다.

파이프라인 빌드 문제 해결

Image Builder 파이프라인 빌드가 실패하는 경우 Image Builder는 실패를 설명하는 오류 메시지를 반환합니다. 또한 Image Builder는 다음 예제 출력의 경우와 같이 실패 메시지에서 workflow execution ID(을)를 반환합니다.

Workflow Execution ID: wf-12345abc-6789-0123-abc4-567890123abc failed with reason: …

Image Builder는 표준 이미지 생성 프로세스의 런타임 단계에 대해 정의된 일련의 단계를 통해 이미지 빌드 작업을 정렬하고 지시합니다. 각 프로세스의 빌드 및 테스트 단계에는 관련 워크플로우가 있습니다. Image Builder는 워크플로우를 실행하여 새 이미지를 빌드하거나 테스트할 때 런타임 세부 정보를 추적하는 워크플로우 메타데이터 리소스를 생성합니다.

컨테이너 이미지에는 배포 중에 실행되는 추가 워크플로우가 있습니다.

워크플로우의 런타임 인스턴스 실패에 대한 세부 정보를 조사하십시오.

워크플로우의 런타임 실패 문제를 해결하려면 workflow execution ID(을)를 사용하여 GetWorkflowExecutionListWorkflowStepExecutions API 작업을 호출할 수 있습니다.

워크플로우 런타임 로그를 검토하세요.
  • Amazon CloudWatch Logs

    Image Builder는 상세한 워크플로우 실행 로그를 다음 Image Builder CloudWatch Logs 그룹 및 스트림에 게시합니다.

    LogGroup:

    /aws/imagebuilder/ImageName

    LogStream(x.x.x/x):

    ImageVersion/ImageBuildVersion

    CloudWatch Logs를 통해 필터 패턴으로 로그 데이터를 검색할 수 있습니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서필터 패턴을 사용하여 로그 데이터 검색을 참조하세요.

  • AWS CloudTrail

    또한, 계정에서 활성화된 경우 모든 빌드 활동은 CloudTrail에 기록됩니다. 소스 imagebuilder.amazonaws.com별로 CloudTrail 이벤트를 필터링할 수 있습니다. 또는 실행 로그에서 반환되는 Amazon EC2 인스턴스 ID를 검색하여 파이프라인 실행에 대한 자세한 내용을 확인할 수 있습니다.

  • Amazon Simple Storage Service(S3)

    인프라 구성에서 S3 버킷 이름과 키 접두사를 지정한 경우 워크플로우 단계 런타임 로그 경로는 다음 패턴을 따릅니다.

    S3://S3BucketName/KeyPrefix/ImageName/ImageVersion/ImageBuildVersion/WorkflowExecutionId/StepName

    S3 버킷으로 보내는 로그는 이미지 빌드 프로세스 중 EC2 인스턴스 활동에 대한 단계 및 오류 메시지를 보여줍니다. 로그에는 구성 요소 관리자의 로그 출력, 실행된 구성 요소의 정의, 인스턴스에서 수행한 모든 단계의 세부 출력(JSON)이 포함됩니다. 문제가 발생하면 먼저 application.log(을)를 시작으로 이러한 파일을 검토하여 인스턴스에서 문제의 원인을 진단해야 합니다.

기본적으로 Image Builder는 파이프라인에 장애가 발생하면 실행 중인 Amazon EC2 빌드 또는 테스트 인스턴스를 종료합니다. 파이프라인이 사용하는 인프라 구성 리소스의 인스턴스 설정을 변경하여 문제 해결을 위해 빌드 또는 테스트 인스턴스를 유지할 수 있습니다.

콘솔에서 인스턴스 설정을 변경하려면 인프라 구성 리소스의 설정 문제 해결 섹션에 있는 장애 시 인스턴스 종료 확인란의 선택을 취소해야 합니다.

AWS CLI의 update-infrastructure-configuration 명령을 사용하여 인스턴스 설정을 변경할 수도 있습니다. 명령이 --cli-input-json 파라미터와 함께 참조하는 JSON 파일에서 terminateInstanceOnFailure 값을 false(으)로 설정합니다. 자세한 내용은 인프라 구성 업데이트을 참조하세요.

문제 해결 시나리오

이 섹션에는 다음과 같은 세부 문제 해결 시나리오가 나열되어 있습니다.

시나리오의 세부 정보를 보려면 시나리오 제목을 선택하여 확장하십시오. 동시에 여러 타이틀을 확장할 수 있습니다.

설명

‘AccessDenied: 액세스 거부 상태 코드: 403’과 함께 파이프라인 빌드가 실패합니다.

원인

가능한 원인은 다음과 같습니다.

  • 인스턴스 프로파일에는 API 또는 구성 요소 리소스에 액세스하는 데 필요한 권한이 없습니다.

  • 인스턴스 프로파일 역할에 Amazon S3에 로깅하는 데 필요한 권한이 없습니다. 가장 일반적으로 이는 인스턴스 프로파일 역할에 S3 버킷에 대한 PutObject 권한이 없을 때 발생합니다.

Solution

원인에 따라 이 문제는 다음과 같이 해결될 수 있습니다.

  • 인스턴스 프로파일에 관리형 정책이 없습니다 — 누락된 정책을 인스턴스 프로파일 역할에 추가합니다. 그런 다음 파이프라인을 다시 실행하세요.

  • 인스턴스 프로파일에 S3 버킷에 대한 쓰기 권한이 없습니다 — S3 버킷에 쓸 수 있는 PutObject 권한을 부여하는 정책을 인스턴스 프로파일 역할에 추가합니다. 그런 다음 파이프라인을 다시 실행하세요.

설명

파이프라인 빌드가 ‘상태 = 'TimeOut’ 및 ‘실패 메시지 = '단계가 대상 인스턴스에서 Systems Manager Agent 가용성을 확인하는 동안 단계 제한 시간이 초과되었습니다'’와 함께 실패합니다.

원인

가능한 원인은 다음과 같습니다.

  • 빌드 작업을 수행하고 구성 요소를 실행하기 위해 시작된 인스턴스가 Systems Manager 엔드포인트에 액세스할 수 없었습니다.

  • 인스턴스 프로파일에 필요한 권한이 없습니다.

Solution

가능한 원인에 따라 이 문제는 다음과 같이 해결할 수 있습니다.

  • 액세스 문제, 프라이빗 서브넷 — 프라이빗 서브넷을 구축하는 경우 Systems Manager, Image Builder에 대해 PrivateLink 엔드포인트를 설정하고, 로깅을 원할 경우 Amazon S3/CloudWatch에 대해 PrivateLink 엔드포인트를 설정했는지 확인하십시오. PrivateLink 엔드포인트 설정에 대한 자세한 내용은 를 통한 AWS 서비스 액세스를 AWS PrivateLink 참조하세요.

  • 권한 누락 — Image Builder의 IAM 서비스 연결 역할에 다음과 같은 관리형 정책을 추가합니다.

    • EC2InstanceProfileForImageBuilder

    • EC2InstanceProfileForImageBuilderECRContainerBuilds

    • AmazonSSMManagedInstanceCore

    Image Builder 서비스 연결 역할에 대한 자세한 내용은 Image Builder의 IAM 서비스 연결 역할 사용 섹션을 참조하세요.

설명

Image Builder Windows AMI를 빌드하는 데 사용된 인스턴스 유형이 AMI에서 시작하는 데 사용되는 인스턴스 유형과 일치하지 않는 경우, 시작 시 루트가 아닌 볼륨이 오프라인 상태인 문제가 발생할 수 있습니다. 이는 주로 빌드 인스턴스가 시작 인스턴스보다 새로운 아키텍처를 사용할 때 발생합니다.

다음 예제는 Image Builder AMI를 EC2 Nitro 인스턴스 유형에 구축하여 EC2 Xen 인스턴스에서 시작할 때 발생하는 상황을 보여줍니다.

빌드 인스턴스 유형: m5.large(Nitro)

시작 인스턴스 유형: t2.medium(Xen)

PS C:\Users\Administrator> get-disk Number Friendly Name Serial Number Health Status Operational Status Total Size Partition Style ------ ------------- ------------- ------------- ------------------ ---------- --------------- 0 AWS PVDISK vol0abc12d34e567f8a9 Healthy Online 30 GB MBR 1 AWS PVDISK vol1bcd23e45f678a9b0 Healthy Offline 8 GB MBR

원인

Windows 기본 설정으로 인해 새로 검색된 디스크는 자동으로 온라인 상태로 전환되거나 포맷되지 않습니다. EC2에서 인스턴스 유형이 변경되면 Windows는 이를 새 디스크가 검색된 것으로 간주합니다. 이는 기본 드라이버 변경 때문입니다.

Solution

Windows AMI를 빌드할 때는 시작하려는 것과 동일한 인스턴스 유형 시스템을 사용하는 것이 좋습니다. 서로 다른 시스템에 구축된 인스턴스 유형을 인프라 구성에 포함시키지 마십시오. 지정한 인스턴스 유형 중 Nitro 시스템을 사용하는 경우 모두 Nitro 시스템을 사용해야 합니다.

Nitro 시스템에 구축된 인스턴스에 대한 자세한 내용은 Amazon EC2 사용 설명서Nitro 시스템에 구축된 인스턴스 섹션을 참조하세요.

설명

CIS 강화 기본 이미지를 사용하고 있는데 빌드가 실패합니다.

원인

/tmp 디렉토리가 noexec(으)로 분류되면 Image Builder가 실패할 수 있습니다.

Solution

이미지 레시피 workingDirectory 필드에서 작업 디렉토리로 사용할 다른 위치를 선택합니다. 자세한 내용은 Image Recider 데이터 유형 설명을 참조하세요.

설명

Systems Manager 자동화는 AssertInventoryCollection 자동화 단계에서 실패를 표시합니다.

원인

사용자 또는 조직에서 EC2 인스턴스의 인벤토리 정보를 수집하는 Systems Manager State Manager 연결을 생성했을 수 있습니다. Image Builder 파이프라인에 향상된 이미지 메타데이터 수집이 활성화된 경우 (기본값) Image Builder는 빌드 인스턴스에 대한 새 인벤토리 연결을 생성하려고 시도합니다. 하지만 Systems Manager는 관리형 인스턴스에 대한 다중 인벤토리 연결을 허용하지 않으며, 이미 존재하는 경우 새 연결을 금지합니다. 이로 인해 작업이 실패하고 파이프라인 빌드가 실패합니다.

Solution

이 문제를 해결하려면 다음 방법 중 하나를 사용하여 향상된 Image Builder를 끄세요.

  • 콘솔에서 이미지 파이프라인을 업데이트하여 향상된 메타데이터 수집 활성화 확인란의 선택을 취소하세요. 변경 내용 저장 및 파이프라 빌드 실행.

    EC2 Image Builder 콘솔을 사용한 AMI 이미지 파이프라인 업데이트에 대한 자세한 내용은 콘솔에서 AMI 이미지 파이프라인 업데이트(을)를 참조하세요. EC2 Image Builder 콘솔을 사용한 컨테이너 이미지 파이프라인 업데이트에 대한 자세한 내용은 콘솔에서 컨테이너 이미지 파이프라인 업데이트(을)를 참조하세요.

  • AWS CLI의 update-image-pipeline 명령을 사용하여 이미지 파이프라인을 업데이트할 수도 있습니다. 이렇게 하려면 false(으)로 설정된 EnhancedImageMetadataEnabled 속성을 JSON 파일에 포함시키십시오. 다음 예제에서는 false(으)로 설정된 속성을 보여줍니다.

    { "name": "MyWindows2019Pipeline", "description": "Builds Windows 2019 Images", "enhancedImageMetadataEnabled": false, "imageRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-recipe/2020.12.03", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration", "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration", "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 60 }, "schedule": { "scheduleExpression": "cron(0 0 * * SUN *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }

새 파이프라인에서 이런 일이 발생하지 않도록 하려면 EC2 Image Builder 콘솔을 사용하여 새 파이프라인을 생성할 때 향상된 메타데이터 수집 활성화 확인란의 선택을 취소하거나 AWS CLI(을)를 사용하여 파이프라인을 생성할 때 JSON 파일의 EnhancedImageMetadataEnabled 속성 값을 false(으)로 설정하십시오.