

# Amazon EC2 인스턴스 시작 문제 해결
<a name="troubleshooting-launch"></a>

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

**Topics**
+ [잘못된 디바이스 이름](#troubleshooting-launch-devicename)
+ [인스턴스 제한 초과됨](#troubleshooting-launch-limit)
+ [부족한 인스턴스 용량](#troubleshooting-launch-capacity)
+ [요청된 구성이 현재 지원되지 않습니다. 지원되는 구성은 설명서를 참조하세요.](#troubleshooting-instance-configuration)
+ [인스턴스 즉시 종료](#troubleshooting-launch-internal)
+ [권한 부족](#troubleshooting-launch-permissions)
+ [Windows 시작 직후 높은 CPU 사용량(Windows 인스턴스만 해당)](#high-cpu-issue)
+ [IMDSv1이 활성화된 인스턴스 시작 실패](#launching-an-imdsv1-enabled-instance-fails)

## 잘못된 디바이스 이름
<a name="troubleshooting-launch-devicename"></a>

### 설명
<a name="troubleshooting-launch-devicename-description"></a>

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

### 원인
<a name="troubleshooting-launch-devicename-cause"></a>

인스턴스를 시작하려고 할 때 이 오류가 발생하면 요청에서 하나 이상의 볼륨에 대해 지정된 디바이스 이름에 잘못된 디바이스 이름이 있는 것입니다. 가능한 원인은 다음과 같습니다.
+ 선택한 AMI에서 디바이스 이름을 사용 중일 수 있습니다.
+ 디바이스 이름이 루트 볼륨용으로 예약되어 있을 수 있습니다.
+ 요청에서 다른 볼륨에 디바이스 이름을 사용할 수 있습니다.
+ 디바이스 이름이 운영 체제에 유효하지 않을 수 있습니다.

### Solution
<a name="troubleshooting-launch-devicename-solution"></a>

문제 해결
+ 선택한 AMI에서 디바이스 이름이 사용되지 않았는지 확인합니다. 다음 명령을 실행하여 AMI에서 사용하는 디바이스 이름을 확인합니다.

  ```
  aws ec2 describe-images --image-id ami-0abcdef1234567890 --query 'Images[*].BlockDeviceMappings[].DeviceName'
  ```
+ 루트 볼륨용으로 예약된 디바이스 이름을 사용하고 있지 않은지 확인합니다. 자세한 내용은 [사용 가능한 디바이스 이름](device_naming.md#available-ec2-device-names) 섹션을 참조하세요.
+ 요청에 지정된 각 볼륨에 고유한 디바이스 이름이 있는지 확인합니다.
+ 지정한 디바이스 이름이 올바른 형식인지 확인하세요. 자세한 내용은 [사용 가능한 디바이스 이름](device_naming.md#available-ec2-device-names) 섹션을 참조하세요.

## 인스턴스 제한 초과됨
<a name="troubleshooting-launch-limit"></a>

### 설명
<a name="troubleshooting-launch-limit-description"></a>

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

### 원인
<a name="troubleshooting-launch-limit-cause"></a>

새 인스턴스를 시작하거나 중지된 인스턴스를 다시 시작하려 할 때 `InstanceLimitExceeded` 오류가 발생하면, 한 리전에서 시작할 수 있는 인스턴스 제한에 도달한 것입니다. AWS 계정을 생성할 때 지역별로 실행할 수 있는 인스턴스의 기본 제한이 설정됩니다.

### Solution
<a name="troubleshooting-launch-limit-solution"></a>

리전을 기준으로 인스턴스 한도 증가를 요청할 수 있습니다. 자세한 내용은 [Amazon EC2 서비스 할당량](ec2-resource-limits.md) 섹션을 참조하세요.

## 부족한 인스턴스 용량
<a name="troubleshooting-launch-capacity"></a>

### 설명
<a name="troubleshooting-launch-capacity-description"></a>

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

### 원인
<a name="troubleshooting-launch-capacity-description"></a>

인스턴스를 시작하거나 중지된 인스턴스를 다시 시작하려 할 때 이 오류가 발생하면 현재 AWS에 요청을 이행할 만큼 충분한 가용 온디맨드 용량이 없는 것입니다.

### Solution
<a name="troubleshooting-launch-capacity-description"></a>

다음에 따라 문제를 해결하세요.
+ 몇 분 정도 기다린 후 다시 요청을 제출합니다. 용량은 자주 변할 수 있습니다.
+ 인스턴스 수가 줄어든 새 요청을 제출하세요. 예를 들어 단일 요청을 통해 인스턴스 15개를 시작하는 경우 인스턴스 5개에 대해 요청 3개 또는 인스턴스 1개 대신 요청 15개를 시도합니다.
+ 인스턴스를 시작하고 있는 경우 가용 영역을 지정하지 않고 새 요청을 제출하세요.
+ 인스턴스를 시작하고 있는 경우 이후의 단계에서 크기를 조정할 수 있는 다른 인스턴스 유형을 사용하여 새 요청을 제출하세요. 자세한 내용은 [Amazon EC2 인스턴스 유형 변경](ec2-instance-resize.md) 섹션을 참조하세요.
+ 클러스터 배치 그룹으로 인스턴스를 시작한 경우 용량 부족 오류가 발생할 수 있습니다.

## 요청된 구성이 현재 지원되지 않습니다. 지원되는 구성은 설명서를 참조하세요.
<a name="troubleshooting-instance-configuration"></a>

### 설명
<a name="troubleshooting-instance-configuration-description"></a>

지원되지 않는 인스턴스 구성으로 새 인스턴스를 시작하려고 하면 `Unsupported` 오류가 발생합니다.

### 원인
<a name="troubleshooting-instance-configuration-cause"></a>

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

### Solution
<a name="troubleshooting-instance-configuration-solution"></a>

다른 인스턴스 구성을 시도합니다. 요구 사항에 맞는 인스턴스 유형을 검색하려면 [Amazon EC2 인스턴스 유형 찾기](instance-discovery.md) 섹션을 참조하세요.

## 인스턴스 즉시 종료
<a name="troubleshooting-launch-internal"></a>

### 설명
<a name="troubleshooting-launch-internal-description"></a>

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

### 원인
<a name="troubleshooting-launch-internal-cause"></a>

인스턴스가 즉시 종료되는 이유에는 다음과 같이 몇 가지가 있습니다.
+ EBS 볼륨 제한을 초과했습니다. 자세한 내용은 [Amazon EC2 인스턴스의 Amazon EBS 볼륨 한도](volume_limits.md) 섹션을 참조하세요.
+ EBS 스냅샷이 손상되었습니다.
+ 루트 EBS 볼륨이 암호화되었는데 사용자는 암호 해독을 위하여 KMS 키에 액세스할 권한이 없습니다.
+ AMI에 대한 블록 디바이스 매핑에 지정된 스냅샷이 암호화되었는데 사용자가 암호 해독을 위해 KMS 키에 액세스할 권한이 없거나 복원된 볼륨을 암호화하기 위해 KMS 키에 액세스할 수 없습니다.
+ 인스턴스를 시작할 때 사용한 Amazon S3 지원 AMI에 필수 부분(image.part.*xx* 파일)이 누락되었습니다.

자세한 내용을 알아보려면 다음 방법 중 하나를 사용하여 종료 이유를 확인하세요.

**Amazon EC2 콘솔을 사용해서 종료 이유를 파악하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택하고 인스턴스를 선택합니다.

1. 첫 번째 탭에서 **상태 전환 이유(State transition reason)** 옆에 나온 이유를 확인합니다.

**AWS CLI을 사용해서 종료 이유를 파악하는 방법**

1. [describe-instances ](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 명령을 사용하여 인스턴스 ID를 지정합니다.

   ```
   aws ec2 describe-instances --instance-id i-1234567890abcdef0
   ```

1. 명령으로 반환된 JSON 응답을 검토하고 `StateReason` 응답 요소의 값을 확인합니다.

   다음 코드 블록은 `StateReason` 응답 요소의 예를 보여 줍니다.

   ```
   "StateReason": {
     "Message": "Client.VolumeLimitExceeded: Volume limit exceeded", 
     "Code": "Server.InternalError"
   },
   ```

**AWS CloudTrail을 사용해서 종료 이유를 파악하는 방법**  
자세한 내용은 *AWS CloudTrail 사용 설명서*에서 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

### Solution
<a name="troubleshooting-launch-internal-solution"></a>

종료 이유에 따라 다음 작업 중 하나를 수행합니다.
+ **`Client.VolumeLimitExceeded: Volume limit exceeded`** — 사용되지 않는 볼륨을 삭제합니다. 볼륨 제한을 늘리도록 [요청을 제출](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ebs)할 수 있습니다.
+ **`Client.InternalError: Client error on launch`** - 볼륨 복호화 및 암호화에 사용되는 AWS KMS keys에 액세스하는 데 필요한 권한이 있는지 확인합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [AWS KMS의 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하세요.

## 권한 부족
<a name="troubleshooting-launch-permissions"></a>

### 설명
<a name="troubleshooting-launch-permissions-description"></a>

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

### 원인
<a name="troubleshooting-launch-permissions-cause"></a>

인스턴스를 시작하려고 할 때 이 오류가 발생하는 경우 인스턴스를 시작하는 데 필요한 IAM 권한이 없는 것입니다.

다음과 같은 권한이 누락된 것일 수 있습니다.
+ `ec2:RunInstances`
+ `iam:PassRole`

다른 권한이 필요할 수도 있습니다. 인스턴스를 시작하는 데 필요한 권한 목록은 [예: EC2 인스턴스 시작 마법사 사용](iam-policies-ec2-console.md#ex-launch-wizard) 및 [인스턴스 시작(RunInstances)](ExamplePolicies_EC2.md#iam-example-runinstances) 아래에서 예제 IAM 정책을 참조하세요.

### Solution
<a name="troubleshooting-launch-permissions-solution"></a>

문제 해결
+ IAM 사용자로 요청을 하는 경우, 다음과 같은 권한이 있는지 확인합니다.
  + 와일드카드 리소스("\$1")가 포함된 `ec2:RunInstances`
  + 역할 ARN과 일치하는 리소스가 포함된 `iam:PassRole`(예: `arn:aws:iam::999999999999:role/ExampleRoleName`)
+ 이와 같은 권한이 없는 경우 IAM 역할 또는 사용자와 연결된 [IAM 정책을 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)하여 누락된 필수 권한을 추가하세요.

문제가 해결되지 않고 시작 실패 오류가 계속 발생하는 경우 오류에 포함된 권한 부여 실패 메시지를 디코딩할 수 있습니다. 디코딩된 메시지에는 IAM 정책에서 누락된 권한이 포함되어 있습니다. 자세한 내용은 [EC2 인스턴스 시작 중에 "UnauthorizedOperation" 오류가 발생한 후 권한 부여 실패 메시지를 디코딩하는 방법](https://repost.aws/knowledge-center/ec2-not-auth-launch)을 참조하세요.

## Windows 시작 직후 높은 CPU 사용량(Windows 인스턴스만 해당)
<a name="high-cpu-issue"></a>

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

Windows Update가 **업데이트를 확인하지만 다운로드 및 설치 여부는 직접 선택**(기본 인스턴스 설정)으로 설정되어 있는 경우 이 검사를 실행하면 인스턴스 CPU가 50\$199%까지 소비될 수 있습니다. 이로 인해 애플리케이션에 문제가 발생할 경우에는 **제어판**에서 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. 업데이트를 확인하지 않음

1. 업데이트를 확인하지만 다운로드 및 설치 여부는 직접 선택

1. 업데이트를 다운로드하지만 설치 여부는 직접 선택

1. 업데이트 자동 설치

인스턴스의 사용자 데이터를 변경한 후에는 인스턴스를 실행할 수 있습니다. 자세한 내용은 [시작 시 Windows 인스턴스에서 명령 실행](user-data.md)을 참조하세요.

## IMDSv1이 활성화된 인스턴스 시작 실패
<a name="launching-an-imdsv1-enabled-instance-fails"></a>

### 설명
<a name="launching-an-imdsv1-enabled-instance-fails-description"></a>

다음 메시지와 함께 `UnsupportedOperation` 예외가 발생합니다.

`You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.`

### 원인
<a name="launching-an-imdsv1-enabled-instance-fails-cause"></a>

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

### Solution
<a name="launching-an-imdsv1-enabled-instance-fails-solution"></a>

IMDSv2만 사용할 준비가 된 경우 IMDSv1이 비활성화(`httpTokens = required`)된 상태로 인스턴스를 시작합니다. 준비가 되었는지 확인하려면 [인스턴스 메타데이터 서비스 버전 2 사용으로 전환](instance-metadata-transition-to-version-2.md) 섹션을 참조하세요.

새 인스턴스나 기존 인스턴스에서 IMDSv1 지원이 계속 필요한 경우 해당 리전에서 계정에 대한 IMDSv2 적용을 비활성화해야 합니다. IMDSv2 적용을 비활성화하려면 `HttpTokensEnforced`를 `disabled`로 설정합니다. 자세한 내용은 Amazon EC2 API 참조의 [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html)를 참조하세요. 콘솔을 사용하여 이 설정을 구성하려면 [계정 수준에서 IMDSv2 적용](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level) 섹션을 참조하세요.

 