

# IAM 및 Amazon EC2 문제 해결
<a name="troubleshoot_iam-ec2"></a>

다음 정보는 Amazon EC2와 관련된 IAM 문제를 해결하는 데 도움이 될 수 있습니다.

**Topics**
+ [인스턴스를 시작하려고 할 때 Amazon EC2 콘솔 **IAM 역할** 목록에서 역할이 보이지 않습니다.](#troubleshoot_iam-ec2_missingrole)
+ [제 인스턴스에 있는 자격 증명의 역할이 잘못되었습니다.](#troubleshoot_iam-ec2_wrongrole)
+ [`AddRoleToInstanceProfile`을 호출하려고 하면 `AccessDenied` 오류가 발생합니다.](#troubleshoot_iam-ec2_access-denied-adding-role)
+ [Amazon EC2 역할로 인스턴스를 시작하려고 하면 `AccessDenied` 오류가 발생합니다.](#troubleshoot_iam-ec2_access-denied-launch)
+ [제 EC2 인스턴스의 임시 보안 자격 증명에 액세스할 수 없습니다.](#troubleshoot_iam-ec2_no-keys)
+ [IAM 하위 트리에서 `info` 문서의 오류란 무엇인가요?](#troubleshoot_iam-ec2_errors-info-doc)

## 인스턴스를 시작하려고 할 때 Amazon EC2 콘솔 **IAM 역할** 목록에서 역할이 보이지 않습니다.
<a name="troubleshoot_iam-ec2_missingrole"></a>

다음을 확인하세요.
+ IAM 사용자로 로그인한 경우, `ListInstanceProfiles`를 호출할 권한이 있는지 확인하십시오. 역할 사용에 필요한 권한에 대한 자세한 내용은 [Amazon EC2로 역할을 사용하는 데 필요한 권한](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-permissions)의 내용을 참조하세요. 사용자에게 권한을 추가하는 방법에 대한 자세한 내용은 [IAM 정책 관리](access_policies_manage.md)을 참조하십시오.

  권한을 수정할 수 없는 경우, IAM을 사용할 수 있는 관리자에게 문의하여 권한을 업데이트해야 합니다.
+ IAM CLI 또는 API를 사용하여 역할을 생성한 경우 다음을 확인하세요.
  + 인스턴스 프로파일을 생성하고 이 인스턴스 프로파일에 해당 역할을 추가하였습니다.
  + 역할과 인스턴스 프로파일에 같은 이름을 사용했습니다. 역할과 인스턴스 프로파일의 이름을 다르게 설정한 경우, Amazon EC2 콘솔에서 올바른 역할 이름을 볼 수 없습니다.

  Amazon EC2 콘솔의 **IAM 역할** 목록에는 역할 이름이 아니라 인스턴스 프로파일 이름이 나열되어 있습니다. 원하는 역할을 포함한 인스턴스 프로필 이름을 선택해야 합니다. 인스턴스 프로파일에 대한 자세한 내용은 [인스턴스 프로파일 사용](id_roles_use_switch-role-ec2_instance-profiles.md)을 참조하십시오.
**참고**  
IAM 콘솔을 사용하여 역할을 만드는 경우, 인스턴스 프로파일을 사용하지 않아도 됩니다. 인스턴스 프로파일은 IAM 콘솔에서 만드는 각 역할과 동일한 이름으로 생성되며, 역할은 해당 인스턴스 프로파일에 자동으로 추가됩니다. 하나의 인스턴스 프로파일은 하나의 IAM 역할만 포함할 수 있으며 이 제한은 늘릴 수 없습니다.

## 제 인스턴스에 있는 자격 증명의 역할이 잘못되었습니다.
<a name="troubleshoot_iam-ec2_wrongrole"></a>

인스턴스 프로파일의 역할이 최근에 교체되었을 수 있습니다. 그러한 경우 다음에 예정된 자동 자격 증명 교체 이후에 역할의 자격 증명을 사용할 수 있습니다.

변경을 적용하려면 [인스턴스 프로파일 연결을 해제](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html)하고 나서 [인스턴스 프로파일을 연결하거나](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), 인스턴스를 중지했다가 다시 시작합니다.

## `AddRoleToInstanceProfile`을 호출하려고 하면 `AccessDenied` 오류가 발생합니다.
<a name="troubleshoot_iam-ec2_access-denied-adding-role"></a>

IAM 사용자로 요청을 하는 경우, 다음과 같은 권한이 있는지 확인합니다.
+ 인스턴스 프로파일 ARN과 일치하는 리소스가 포함된 `iam:AddRoleToInstanceProfile`(예: `arn:aws:iam::999999999999:instance-profile/ExampleInstanceProfile`).

역할 사용에 필요한 권한에 대한 자세한 내용은 [어떻게 시작할 수 있습니까?](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-get-started)의 내용을 참조하세요. 사용자에게 권한을 추가하는 방법에 대한 자세한 내용은 [IAM 정책 관리](access_policies_manage.md)을 참조하십시오.

## Amazon EC2 역할로 인스턴스를 시작하려고 하면 `AccessDenied` 오류가 발생합니다.
<a name="troubleshoot_iam-ec2_access-denied-launch"></a>

다음을 확인하세요.
+ 인스턴스 프로필 없이 인스턴스를 시작합니다. 이를 통해 문제가 Amazon EC2 인스턴스의 IAM 역할로 제한되어 있는지 확인할 수 있습니다.
+ IAM 사용자로 요청을 하는 경우, 다음과 같은 권한이 있는지 확인합니다.
  + 와일드카드 리소스("\$1")가 포함된 `ec2:RunInstances`
  + 역할 ARN과 일치하는 리소스가 포함된 `iam:PassRole`(예: `arn:aws:iam::999999999999:role/ExampleRoleName`)
+ IAM `GetInstanceProfile` 작업을 호출하여 올바른 인스턴스 프로파일 이름 또는 올바른 인스턴스 프로파일 ARN을 사용 중인지 확인합니다. 자세한 내용은 [Amazon EC2 인스턴스로 IAM 역할 사용](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances)을 참조하세요.
+ IAM `GetInstanceProfile` 작업을 호출하여 인스턴스 프로필에 역할이 있는지 확인합니다. 인스턴스 프로파일이 비어 있으면 `AccessDenied` 오류가 발생합니다. 역할 만들기에 대한 자세한 내용은 [IAM 역할 생성](id_roles_create.md) 단원을 참조하십시오.

역할 사용에 필요한 권한에 대한 자세한 내용은 [어떻게 시작할 수 있습니까?](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-get-started)의 내용을 참조하세요. 사용자에게 권한을 추가하는 방법에 대한 자세한 내용은 [IAM 정책 관리](access_policies_manage.md)을 참조하십시오.

## 제 EC2 인스턴스의 임시 보안 자격 증명에 액세스할 수 없습니다.
<a name="troubleshoot_iam-ec2_no-keys"></a>

EC2 인스턴스에서 임시 보안 자격 증명에 액세스하려면 먼저 IAM 콘솔을 사용하여 역할을 생성해야 합니다. 그런 다음 해당 역할을 사용하는 EC2 인스턴스를 시작하고 실행 중인 인스턴스를 검사합니다. 자세한 내용은 [IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여](id_roles_use_switch-role-ec2.md)의 **어떻게 시작합니까?**를 참조하십시오.

그래도 EC2 인스턴스에서 임시 보안 자격 증명에 액세스할 수 없는 경우 다음을 확인하십시오.
+ 인스턴스 메타데이터 서비스(IMDS)의 다른 부분에는 액세스할 수 있습니까? 액세스할 수 없는 경우 IMDS로의 요청에 대한 액세스를 차단하는 방화벽 규칙이 없는지 확인하십시오.

  ```
  [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/hostname; echo
  ```
+ IMDS의 `iam` 하위 트리가 있습니까? 그렇지 않은 경우 EC2 `DescribeInstances` API 작업을 호출하거나 `aws ec2 describe-instances` CLI 명령을 사용하여 인스턴스에 IAM 인스턴스 프로파일이 연결되어 있는지 확인합니다.

  ```
  [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam; echo
  ```
+ 오류가 있는지 IAM 하위 트리의 `info` 문서를 확인합니다. 오류가 있는 경우 자세한 내용은 [IAM 하위 트리에서 `info` 문서의 오류란 무엇인가요?](#troubleshoot_iam-ec2_errors-info-doc)를 참조하십시오.

  ```
  [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam/info; echo
  ```

## IAM 하위 트리에서 `info` 문서의 오류란 무엇인가요?
<a name="troubleshoot_iam-ec2_errors-info-doc"></a>

### `iam/info` 문서는 `"Code":"InstanceProfileNotFound"`를 나타냅니다.
<a name="troubleshoot_iam-ec2_errors-info-doc-profile-not-found"></a>

IAM 인스턴스 프로파일이 삭제되었으므로 Amazon EC2에서 더 이상 인스턴스에 자격 증명을 제공할 수 없습니다. Amazon EC2 인스턴스에 올바른 인스턴스 프로파일을 연결해야 합니다.

해당 이름의 인스턴스 프로파일이 있는 경우, 원래 인스턴스 프로파일이 삭제되고 동일한 이름의 다른 인스턴스가 생성된 것이 아닌지 확인하십시오.

1. IAM `GetInstanceProfile` 작업을 호출하여 `InstanceProfileId`를 가져옵니다.

1. Amazon EC2 `DescribeInstances` 작업을 호출하여 인스턴스의 `IamInstanceProfileId`를 가져옵니다.

1. IAM 작업의 `InstanceProfileId`와 Amazon EC2 작업의 `IamInstanceProfileId`가 일치하는지 확인합니다.

ID가 다르면 인스턴스에 연결된 인스턴스 프로파일이 더 이상 유효하지 않습니다. 인스턴스에 올바른 인스턴스 프로파일을 연결해야 합니다.

### `iam/info` 문서는 성공을 나타내지만 `"Message":"Instance Profile does not contain a role..."`을 나타냅니다.
<a name="troubleshoot_iam-ec2_errors-info-doc-no-role"></a>

역할이 IAM `RemoveRoleFromInstanceProfile` 작업에 의해 인스턴스 프로파일에서 제거되었습니다. IAM `AddRoleToInstanceProfile` 작업을 사용하여 인스턴스 프로파일에 역할을 연결할 수 있습니다. 역할의 자격 증명에 액세스하려면 다음에 예정된 새로 고침까지 기다려야 합니다.

변경을 적용하려면 [인스턴스 프로파일 연결을 해제](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html)하고 나서 [인스턴스 프로파일을 연결하거나](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), 인스턴스를 중지했다가 다시 시작합니다.

### `iam/security-credentials/[role-name]` 문서는 `"Code":"AssumeRoleUnauthorizedAccess"`를 나타냅니다.
<a name="troubleshoot_iam-ec2_errors-info-doc-unauthorized-access"></a>

Amazon EC2에는 역할을 수임할 권한이 없습니다. 다음 예와 같이 역할을 수임할 권한은 해당 역할에 연결된 신뢰 정책에서 관리합니다. IAM `UpdateAssumeRolePolicy` API를 사용하여 신뢰 정책을 업데이트합니다.

------
#### [ JSON ]

****  

```
{"Version":"2012-10-17",		 	 	 "Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com"]},"Action": ["sts:AssumeRole"]}]}
```

------

역할의 자격 증명에 액세스하려면 다음에 예정된 자동 새로 고침까지 기다려야 합니다.

변경을 적용하려면 [인스턴스 프로파일 연결을 해제](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html)하고 나서 [인스턴스 프로파일을 연결하거나](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), 인스턴스를 중지했다가 다시 시작합니다.