Amazon Elastic Container Service(Amazon ECS) 작업이 시작되지 않는 문제를 해결하고 싶습니다. Amazon Elastic File System(Amazon EFS) 파일 시스템 DNS 이름에 문제가 있어서 작업이 시작되지 않습니다.
간략한 설명
ECS 작업 정의에서 EFS 파일 시스템 및 컨테이너 탑재 지점을 참조하면 ECS가 컨테이너에 파일 시스템을 탑재합니다. EFS 볼륨 마운트와 ECS 작업 정의를 사용하여 ECS 작업을 실행하면 작업이 실패하고 다음 오류가 발생합니다.
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-<id>.efs.<region>.amazonaws.com" - check that your file system ID is correct, and ensure that the VPC has an EFS mount target for this file system ID. See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail. Attempting to lookup mount target ip address using botocore. Failed to import necessary dependency botocore, please install botocore first."
이 오류는 다음과 같은 이유로 발생합니다.
- AmazonProvidedDNS 대신 가상 프라이빗 클라우드(VPC)의 사용자 지정 도메인 이름 및 서버를 사용합니다.
- VPC DNS 호스트 이름이 비활성화되어 있습니다.
- EFS에 탑재 대상이 없거나 대상이 ECS 작업과 동일한 가용 영역에 있지 않습니다.
ECS는 DNS 이름으로 EFS 파일 시스템을 확인하지 못하면 efs-util 도구를 사용하여 botocore를 설치하고 탑재 대상 IP 주소를 검색합니다. botocore는 기본적으로 ECS 최적화 AMI에 설치되지 않으므로 작업이 실패합니다.
해결 방법
VPC에 사용자 지정 도메인 이름과 서버가 있는 경우
Amazon EC2에서 실행되는 작업의 경우
참고: 이러한 단계는 Amazon EC2 인스턴스에만 적용됩니다.
1. SSH를 사용하여 컨테이너 인스턴스에 연결합니다. botocore를 설치하려면 다음 명령을 실행합니다.
sudo pip3 install botocore --upgrade
컨테이너 인스턴스의 Auto Scaling 그룹에서 구성한 UserData의 일부로 인스턴스를 시작하는 동안 botocore를 설치합니다.
2. 컨테이너 인스턴스의 AWS Identity and Access Management(AWS IAM) 역할에 다음 권한을 추가합니다.
elasticfilesystem:DescribeMountTargets
ec2:DescribeAvailabilityZones
Fargate에서 실행되는 작업의 경우
사용자 지정 도메인 이름 서버에서 AWS 리소스를 확인할 수 있도록 하려면 조건부 DNS 전달을 구성합니다.
참고: AWS Fargate 인스턴스의 경우 인스턴스에 액세스하여 botocore를 설치할 수 없으므로 DNS 이름 확인을 사용해야 합니다.
VPC DNS 호스트 이름이 비활성화되어 있는 경우
DNS 속성을 검토하려면 DNS 속성의 단계를 완료하십시오. DNS 호스트 이름이 비활성화되어 있는 경우 활성화한 다음 ECS 작업이 실행 중인지 확인합니다.
EFS에 탑재 대상이 없거나 대상이 ECS 작업과 동일한 가용 영역에 있지 않는 경우
EFS 파일 시스템에 탑재 대상이 있어야 하며 대상은 ECS 작업과 동일한 가용 영역에 있어야 합니다. 자세한 내용은 탑재 대상과 보안 그룹 만들기 및 관리를 참조하십시오.
관련 정보:
GitHub 웹 사이트의 Using botocore to retrieve the mount target IP address when the DNS name cannot be resolved