인스턴스를 시작할 수 없으며 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 볼륨에 중복되거나 충돌하는 디바이스 이름이 있는 경우 인스턴스를 중지하거나 시작할 수 없습니다.

  1. Amazon EC2 콘솔을 열고 시작할 수 없는 인스턴스를 선택합니다.
  2. [설명] 탭에서 [블록] 디바이스에 나열된 디바이스 이름을 확인합니다. [블록] 디바이스 필드에는 연결된 볼륨의 모든 디바이스 이름이 표시됩니다.
  3. 루트 디바이스가 올바르게 연결되어 있고 서로 이름이 같거나 이름이 충돌하는 디바이스가 없는지 확인합니다.
  4. 디바이스 이름이 중복되거나 충돌하는 디바이스가 있는 경우 충돌하는 볼륨을 분리하고 이름을 바꿉니다. 그런 다음 업데이트된 디바이스 이름으로 볼륨을 다시 연결합니다.

연결된 EBS 볼륨이 오류 상태인 경우

Amazon EC2 콘솔을 열고 [볼륨]을 선택한 다음 볼륨 상태가 [오류]인지 확인합니다. 오류 상태의 볼륨이 루트 볼륨인지 보조 볼륨인지에 따라 옵션이 달라집니다.

오류 상태의 볼륨이 보조 볼륨인 경우 볼륨을 분리합니다. 이제 인스턴스를 시작할 수 있습니다.

오류 상태의 볼륨이 루트 볼륨이고 해당 볼륨의 기존 스냅샷이 있는 경우 다음과 같이 합니다.

  1. 볼륨을 분리합니다.
  2. 스냅샷에서 새 볼륨을 생성합니다.
  3. 원본 인스턴스의 디바이스 이름을 사용하여 새 볼륨을 인스턴스에 연결합니다. 인스턴스를 시작합니다.

참고: 오류 상태의 볼륨이 루트 볼륨이고 볼륨의 기존 스냅샷이 없는 경우 인스턴스를 다시 시작할 수 없습니다. 인스턴스를 다시 구축해야 합니다.

연결된 볼륨이 암호화되어 있는 경우

연결된 볼륨이 암호화되어 있는 경우 다음을 확인합니다.

참고: 볼륨이 암호화되어 있는지 확인하려면 Amazon EC2 콘솔을 연 다음 [볼륨]을 선택하십시오. 암호화된 볼륨은 [암호화] 열에 [암호화됨]으로 표시됩니다.