애플리케이션 상태 검사 문제 해결

애플리케이션 상태 검사 문제 해결 (Troubleshoot Amazon EC2 instance launch issues)

인스턴스를 시작할 때 발생하는 문제를 해결하는 데 도움이 되는 문제 해결 팁입니다.

시작 문제 (Launch Issues)

  • 잘못된 장치 이름 (Invalid device name)
  • 인스턴스 한도 초과 (Instance limit exceeded)
  • 온디맨드 인스턴스 용량 부족 (Insufficient instance capacity)
  • 요청된 구성이 현재 지원되지 않음
  • 인스턴스가 즉시 종료됨 (Instance terminates immediately)
  • 권한 부족 (Insufficient permissions)
  • Windows 시작 직후 CPU 사용량이 높음 (Windows 인스턴스만 해당)
  • IMDSv1 활성화 인스턴스 시작 실패

잘못된 장치 이름 (Invalid device name)

증상 (Description)

새 인스턴스를 시작하려고 할 때 Invalid device name 오류가 발생합니다.

원인 (Cause)

요청에서 하나 이상의 볼륨에 지정된 장치 이름이 잘못된 경우에 이 오류가 발생합니다. 가능한 원인은 다음과 같습니다.

  • 장치 이름이 선택한 AMI에서 이미 사용 중일 수 있습니다.
  • 장치 이름이 루트 볼륨용으로 예약되어 있을 수 있습니다.
  • 장치 이름이 요청의 다른 볼륨에 이미 사용되었을 수 있습니다.
  • 장치 이름이 운영 체제에 유효하지 않을 수 있습니다.

해결 방법 (Solution)

문제를 해결하려면 다음을 수행하세요.

  • 선택한 AMI에서 장치 이름이 사용되지 않았는지 확인합니다. 다음 명령을 실행해 AMI가 사용하는 장치 이름을 확인합니다.
aws ec2 describe-images --image-id ami-0abcdef1234567890 --query 'Images[*].BlockDeviceMappings[].DeviceName'
  • 루트 볼륨용으로 예약된 장치 이름을 사용하지 않는지 확인합니다. 자세한 내용은 사용 가능한 장치 이름(Available device names)을 참조하세요.
  • 요청에 지정된 각 볼륨의 장치 이름이 고유한지 확인합니다.
  • 지정한 장치 이름이 올바른 형식인지 확인합니다. 자세한 내용은 사용 가능한 장치 이름(Available device names)을 참조하세요.

인스턴스 한도 초과 (Instance limit exceeded)

증상 (Description)

새 인스턴스를 시작하거나 중지된 인스턴스를 다시 시작하려고 할 때 InstanceLimitExceeded 오류가 발생합니다.

원인 (Cause)

리전에서 시작할 수 있는 인스턴스 수 한도에 도달했기 때문입니다. AWS 계정을 만들면 리전별로 실행할 수 있는 인스턴스 수에 기본 한도가 설정됩니다.

해결 방법 (Solution)

리전별로 인스턴스 한도 증가를 요청할 수 있습니다. 자세한 내용은 Amazon EC2 서비스 할당량(service quotas)을 참조하세요.

온디맨드 인스턴스 용량 부족 (Insufficient instance capacity)

증상 (Description)

새 인스턴스를 시작하거나 중지된 인스턴스를 다시 시작하려고 할 때 InsufficientInstanceCapacity 오류가 발생합니다.

원인 (Cause)

AWS가 현재 요청을 처리할 충분한 온디맨드 용량을 보유하고 있지 않기 때문입니다.

해결 방법 (Solution)

다음을 시도해 보세요.

  • 몇 분 기다린 뒤 다시 요청합니다. 용량은 자주 변할 수 있습니다.
  • 인스턴스 수를 줄여 새 요청을 제출합니다. 예를 들어 15개 인스턴스를 하나의 요청으로 시작하는 대신, 5개씩 3개 요청 또는 1개씩 15개 요청으로 나누어 보세요.
  • 인스턴스를 시작하는 경우 가용 영역(Availability Zone)을 지정하지 않고 새 요청을 제출해 보세요.
  • 인스턴스를 시작하는 경우 다른 인스턴스 유형으로 새 요청을 제출해 보세요(나중에 크기를 조정할 수 있습니다). 자세한 내용은 인스턴스 유형 변경을 참조하세요.
  • 클러스터 배치 그룹으로 인스턴스를 시작하는 경우 용량 부족 오류가 발생할 수 있습니다.

요청된 구성이 현재 지원되지 않음

증상 (Description)

인스턴스 구성이 지원되지 않아 새 인스턴스를 시작하려고 할 때 Unsupported 오류가 발생합니다.

원인 (Cause)

오류 메시지에 추가 세부 정보가 제공됩니다. 예를 들어 인스턴스 유형이나 인스턴스 구매 옵션이 지정된 리전 또는 가용 영역에서 지원되지 않을 수 있습니다.

해결 방법 (Solution)

다른 인스턴스 구성을 시도해 보세요. 요구 사항을 충족하는 인스턴스 유형을 찾으려면 Find an Amazon EC2 instance type을 참조하세요.

인스턴스가 즉시 종료됨 (Instance terminates immediately)

증상 (Description)

인스턴스가 pending 상태에서 terminated 상태로 전환됩니다.

원인 (Cause)

인스턴스가 즉시 종료되는 몇 가지 이유는 다음과 같습니다.

  • EBS 볼륨 한도를 초과했습니다.
  • EBS 스냅샷이 손상되었습니다.
  • 루트 EBS 볼륨이 암호화되어 있고 해독용 KMS 키에 액세스할 권한이 없습니다.
  • AMI의 블록 디바이스 매핑에 지정된 스냅샷이 암호화되어 있고, 해독용 KMS 키에 액세스 권한이 없거나 복원된 볼륨을 암호화할 KMS 키에 액세스할 수 없습니다.
  • 인스턴스 시작에 사용한 Amazon S3 기반 AMI에 필수 부분(image.part.xx 파일)이 없습니다.

종료 이유에 대한 자세한 내용은 다음 방법 중 하나로 확인하세요.

EC2 콘솔로 종료 이유 확인하기:

  • Amazon EC2 콘솔을 엽니다.
  • 탐색 창에서 Instances를 선택하고 인스턴스를 선택합니다.
  • 첫 번째 탭에서 State transition reason 옆의 이유를 확인합니다.

AWS CLI로 종료 이유 확인하기:

  • describe-instances 명령을 사용하고 인스턴스 ID를 지정합니다.
aws ec2 describe-instances --instance-id i-1234567890abcdef0
  • 명령이 반환한 JSON 응답에서 StateReason 응답 요소의 값을 확인합니다. 다음 코드 블록은 StateReason 응답 요소의 예입니다.
"StateReason": {
  "Message": "Client.VolumeLimitExceeded: Volume limit exceeded", 
  "Code": "Server.InternalError"
},

AWS CloudTrail로 종료 이유 확인하기:

  • 자세한 내용은 AWS CloudTrail 사용자 가이드의 CloudTrail 이벤트 기록으로 이벤트 보기를 참조하세요.

해결 방법 (Solution)

종료 이유에 따라 다음 중 하나를 수행하세요.

  • Client.VolumeLimitExceeded: Volume limit exceeded — 사용하지 않는 볼륨을 삭제합니다. 볼륨 한도 증가를 요청할 수 있습니다.
  • Client.InternalError: Client error on launch — 볼륨을 해독/암호화하는 데 사용한 AWS KMS 키에 액세스할 권한이 있는지 확인합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS 키 정책 사용을 참조하세요.

권한 부족 (Insufficient permissions)

증상 (Description)

새 인스턴스를 시작하려고 할 때 "errorMessage": "You are not authorized to perform this operation." 오류가 발생하고 시작이 실패합니다.

원인 (Cause)

인스턴스를 시작하는 데 필요한 IAM 권한이 없기 때문입니다. 누락될 수 있는 권한은 다음과 같습니다.

  • ec2:RunInstances
  • iam:PassRole

다른 권한도 누락될 수 있습니다. 인스턴스를 시작하는 데 필요한 권한 목록은 아래 예제 IAM 정책을 참조하세요.

해결 방법 (Solution)

문제를 해결하려면 다음을 수행하세요.

  • IAM 사용자로 요청하는 경우 다음 권한이 있는지 확인합니다.
    • 와일드카드 리소스("*")를 사용하는 ec2:RunInstances
    • 역할 ARN(예: arn:aws:iam::999999999999:role/ExampleRoleName)과 일치하는 리소스가 있는 iam:PassRole
  • 위 권한이 없다면 IAM 역할 또는 사용자와 연결된 IAM 정책을 편집해 누락된 필수 권한을 추가합니다.

문제가 해결되지 않고 시작 실패 오류가 계속 발생하면 오류에 포함된 인증 실패 메시지를 디코딩해 IAM 정책에서 누락된 권한을 확인할 수 있습니다.

Windows 시작 직후 CPU 사용량이 높음 (Windows 인스턴스만 해당)

참고 이 문제 해결 팁은 Windows 인스턴스에만 적용됩니다.

Windows Update가 "업데이트 확인(다운로드 및 설치 여부는 직접 선택)"(기본 인스턴스 설정)으로 설정된 경우 이 검사는 인스턴스 CPU의 50~99%를 소모할 수 있습니다. 이 CPU 소모가 애플리케이션에 문제를 일으킨다면 제어판에서 Windows Update 설정을 직접 변경하거나 Amazon EC2 사용자 데이터 필드에서 다음 스크립트를 사용할 수 있습니다.

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 3 /f net stop wuauserv net start wuauserv

이 스크립트를 실행할 때 /d 값을 지정합니다. 기본값은 3이며 가능한 값은 다음과 같습니다.

  • 1: 업데이트 확인 안 함
  • 2: 업데이트 확인(다운로드 및 설치 여부 직접 선택)
  • 3: 업데이트 다운로드(설치 여부 직접 선택)
  • 4: 업데이트 자동 설치

인스턴스의 사용자 데이터를 수정한 뒤 실행할 수 있습니다.

IMDSv1 활성화 인스턴스 시작 실패

증상 (Description)

다음 메시지와 함께 UnsupportedOperation 예외가 발생합니다. "이 계정에서 httpTokensEnforced가 활성화되어 있기 때문에 IMDSv1로 인스턴스를 시작할 수 없습니다. httpTokens=required로 인스턴스를 시작하거나, ModifyInstanceMetadataDefaults API 또는 EC2 콘솔의 계정 설정을 사용해 계정 소유자에게 httpTokensEnforced를 비활성화하도록 요청하세요."

원인 (Cause)

이 오류는 EC2 계정 설정 또는 AWS Organization 선언적 정책이 IMDSv2 사용을 강제하는(httpTokensEnforced = enabled) 계정에서 IMDSv1 활성화(httpTokens = optional) 인스턴스를 시작하려고 할 때 발생합니다.

해결 방법 (Solution)

IMDSv2만 사용할 준비가 되었다면 IMDSv1을 비활성화(httpTokens = required)하고 인스턴스를 시작하세요. 새 인스턴스나 기존 인스턴스에서 여전히 IMDSv1 지원이 필요하다면 해당 리전의 계정에 대해 IMDSv2 강제 적용을 비활성화해야 합니다. 이를 위해 HttpTokensEnforced를 disabled로 설정합니다. 콘솔로 설정하려면 계정 수준에서 IMDSv2 강제 적용을 참조하세요.

더 알아보기 (Learn more)

출처: Troubleshoot Amazon EC2 instance launch issues

본문