인스턴스를 시작할 수 없으며 describe-instances 명령을 실행할 때 Client.InternalError가 발생합니다. 이 문제를 해결하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2020년 3월 30일
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하려고 하는데 인스턴스가 시작되지 않고 오류 메시지도 반환되지 않거나, 시작되지 않고 오류 메시지 "Client.InternalError"가 반환됩니다. 이 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
Client.InternalError 메시지가 표시되는 이유는 몇 가지가 있습니다.
- Elastic Block Store(Amazon EBS) 볼륨이 인스턴스에 올바르게 연결되지 않았습니다.
- 인스턴스에 연결된 EBS 볼륨이 오류 상태입니다.
- 인스턴스에 연결된 EBS 볼륨이 암호화되어 있습니다.
참고: 인스턴스가 시작되지 않고 오류 코드도 표시되지 않을 경우 describe-instances 명령을 실행하십시오. 그런 다음 인스턴스 ID를 지정하십시오. 다음 예제에서 MYINSTANCE를 시작하려는 인스턴스의 ID로 바꾸십시오.
aws ec2 describe-instances --instance-id MYINSTANCE --output json
명령을 실행하여 반환된 JSON 응답에서 StateReason 메시지를 확인합니다.
다음 예제에서 반환된 StateReason은 "Client.InternalError"입니다.
"StateReason": {
"Message": "Client.InternalError: Client error on launch",
"Code": "Client.InternalError"
},
해결 방법
EBS 볼륨이 인스턴스에 올바르게 연결되어 있지 않은 경우
EBS 루트 볼륨이 인스턴스에 /dev/sda1 또는 /dev/xvda로 연결되어 있지 않고 두 번째 EBS 볼륨에 중복되거나 충돌하는 디바이스 이름이 있는 경우 인스턴스를 중지하거나 시작할 수 없습니다.
- Amazon EC2 콘솔을 열고 시작할 수 없는 인스턴스를 선택합니다.
- [설명] 탭에서 [블록] 디바이스에 나열된 디바이스 이름을 확인합니다. [블록] 디바이스 필드에는 연결된 볼륨의 모든 디바이스 이름이 표시됩니다.
- 루트 디바이스가 올바르게 연결되어 있고 서로 이름이 같거나 이름이 충돌하는 디바이스가 없는지 확인합니다.
- 디바이스 이름이 중복되거나 충돌하는 디바이스가 있는 경우 충돌하는 볼륨을 분리하고 이름을 바꿉니다. 그런 다음 업데이트된 디바이스 이름으로 볼륨을 다시 연결합니다.
연결된 EBS 볼륨이 오류 상태인 경우
Amazon EC2 콘솔을 열고 [볼륨]을 선택한 다음 볼륨 상태가 [오류]인지 확인합니다. 오류 상태의 볼륨이 루트 볼륨인지 보조 볼륨인지에 따라 옵션이 달라집니다.
오류 상태의 볼륨이 보조 볼륨인 경우 볼륨을 분리합니다. 이제 인스턴스를 시작할 수 있습니다.
오류 상태의 볼륨이 루트 볼륨이고 해당 볼륨의 기존 스냅샷이 있는 경우 다음과 같이 합니다.
- 볼륨을 분리합니다.
- 스냅샷에서 새 볼륨을 생성합니다.
- 원본 인스턴스의 디바이스 이름을 사용하여 새 볼륨을 인스턴스에 연결합니다. 인스턴스를 시작합니다.
참고: 오류 상태의 볼륨이 루트 볼륨이고 볼륨의 기존 스냅샷이 없는 경우 인스턴스를 다시 시작할 수 없습니다. 인스턴스를 다시 구축해야 합니다.
연결된 볼륨이 암호화되어 있는 경우
연결된 볼륨이 암호화되어 있는 경우 다음을 확인합니다.
- 볼륨을 암호화하는 데 사용된 AWS Key Management Service(AWS KMS) 키가 활성화되어 있는지 확인합니다.
- 인스턴스를 시작하려는 사용자에게 올바른 IAM 권한이 있는지 확인합니다.
- 키에 올바른 키 정책이 있는지 확인합니다.
참고: 볼륨이 암호화되어 있는지 확인하려면 Amazon EC2 콘솔을 연 다음 [볼륨]을 선택하십시오. 암호화된 볼륨은 [암호화] 열에 [암호화됨]으로 표시됩니다.