AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Amazon ECS 작업이 실패하는 원인인 ‘exec format’ 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Elastic Container Service(Amazon ECS) 작업이 실패하는 원인인 ‘exec format’ 오류를 해결하고 싶습니다.

간략한 설명

이 오류는 컨테이너 이미지에 대해 실행되는 작업이 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 다른 아키텍처에 맞게 빌드될 때 발생합니다. 예를 들어, ARM 기반 인스턴스에서 컨테이너 이미지를 빌드한 다음 x86 인스턴스에서 해당 작업을 실행하려고 합니다.

참고: 해당 작업에는 "작업의 필수 컨테이너가 종료되었습니다"라는 중지 이유와 종료 코드 1이 있습니다.

해결 방법

이 문제를 해결하려면 Amazon ECS 작업의 아키텍처를 변경하거나 올바른 아키텍처에 맞게 이미지를 다시 빌드하십시오.

ECS 작업의 아키텍처 변경

작업의 아키텍처는 작업 정의의 cpuArchitecture 파라미터에 의해 결정됩니다. 유효한 값은 x86_64 및 ARM64이며 기본값은 x86_64입니다.

작업을 시작하는 데 사용되는 아키텍처를 변경하려면 cpuArchitecture 파라미터를 원하는 값으로 설정하여 작업 정의의 새 버전을 생성합니다. 해당 작업이 서비스의 일부인 경우 개정된 아키텍처를 사용하여 서비스를 업데이트하고 배포를 수행하여 새로운 작업을 시작합니다.

Fargate 시작 유형의 경우 AWS는 작업을 실행하는 데 적합한 아키텍처로 인프라를 자동으로 프로비저닝합니다. 시작 유형으로 EC2 인스턴스 또는 외부 인스턴스를 사용하는 경우 구성에 대한 용량을 관리해야 합니다. 자세한 내용은 용량 관리를 참조하십시오.

올바른 아키텍처에 맞게 이미지 다시 빌드

작업 정의에 지정된 것과 동일한 아키텍처를 사용하여 컨테이너 이미지를 다시 빌드합니다.

참고: 대부분의 컨테이너 이미지 빌드 도구는 기본적으로 호스트 머신의 아키텍처를 따릅니다.

Docker 또는 Finch 사용

빌드 명령에 --platform 파라미터를 추가하여 대상 아키텍처를 설정합니다. 예를 들어, Docker build **--platform linux/arm64 [...]**는 ARM64용 이미지를 빌드합니다. Finch build **--plaform linux/amd64 [...]**는 x86/64 아키텍처용 이미지를 빌드합니다.

빌드 명령 예시:

docker build -t my-image --platform linux/arm64

명령줄 클라이언트 Finch에 대한 자세한 내용은 Finch 소개: 컨테이너 개발을 위한 오픈 소스 클라이언트를 참조하십시오.

Docker 이미지를 빌드하는 방법에 대한 자세한 내용은 Docker 웹사이트에서 다중 플랫폼 이미지 빌드를 참조하십시오.

AWS CDK

AWS Cloud Development Kit(AWS CDK) ecs.ContainerImage.fromAsset 이미지를 사용하여 소스 디렉터리에 있는 Docker 파일에서 이미지를 빌드하고 업로드합니다. 자세한 내용은 이미지를 참조하십시오.

CodeBuild

AWS CodeBuild를 Docker 이미지와 함께 사용하여 아키텍처를 구성할 수도 있습니다. 자세한 내용은 빌드 환경 컴퓨팅 모드 및 유형을 참조하세요.

AWS 공식
AWS 공식업데이트됨 7달 전