

# Solucionar problemas do IAM e Amazon EC2
<a name="troubleshoot_iam-ec2"></a>

As informações a seguir podem ajudar você a solucionar problemas do IAM com o Amazon EC2.

**Topics**
+ [Ao tentar iniciar uma instância, não vejo o perfil na lista de **perfis do IAM** do console do Amazon EC2](#troubleshoot_iam-ec2_missingrole)
+ [As credenciais na minha instância são da função incorreta](#troubleshoot_iam-ec2_wrongrole)
+ [Quando tento chamar `AddRoleToInstanceProfile`, recebo um erro `AccessDenied`.](#troubleshoot_iam-ec2_access-denied-adding-role)
+ [Amazon EC2: quando tento iniciar uma instância com um perfil, recebo um erro `AccessDenied`](#troubleshoot_iam-ec2_access-denied-launch)
+ [Não é possível acessar as credenciais de segurança temporárias em minha instância do EC2.](#troubleshoot_iam-ec2_no-keys)
+ [O que os erros do documento `info` na subárvore do IAM significam?](#troubleshoot_iam-ec2_errors-info-doc)

## Ao tentar iniciar uma instância, não vejo o perfil na lista de **perfis do IAM** do console do Amazon EC2
<a name="troubleshoot_iam-ec2_missingrole"></a>

Verifique o seguinte:
+ Se você estiver conectado a um usuário do IAM, verifique se tem permissão para chamar `ListInstanceProfiles`. Para obter mais informações sobre as permissões necessárias para trabalhar com perfis, consulte [Permissões necessárias para usar funções com o Amazon EC2](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-permissions). Para obter informações sobre como adicionar permissões a um usuário, consulte [Gerenciar políticas do IAM](access_policies_manage.md).

  Se você não puder modificar suas próprias permissões, deverá entrar em contato com um administrador que possa trabalhar com o IAM para atualizar suas permissões.
+ Se você criou um perfil usando a CLI ou a API do IAM, verifique as seguintes condições:
  + Você criou um perfil de instância e adicionou o perfil a ele.
  + Você usou o mesmo nome para o perfil e o perfil de instância. Se você nomear seu perfil e o perfil de instância de forma diferente, não verá o nome correto do perfil no console do Amazon EC2.

  A lista **IAM Role** (Função do IAM) no console do Amazon EC2 lista os nomes dos perfis de instância, não os nomes das funções. Você precisará selecionar o nome do perfil de instância que contém a função desejada. Para obter detalhes sobre os perfis de instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md).
**nota**  
Se você usar o console do IAM para criar funções, não precisará trabalhar com perfis de instância. Para cada função criada no console do IAM, um perfil de instância é criado com o mesmo nome da função, e a função é automaticamente adicionada a esse perfil. Um perfil de instância pode conter somente uma função do IAM e esse limite não pode ser aumentado.

## As credenciais na minha instância são da função incorreta
<a name="troubleshoot_iam-ec2_wrongrole"></a>

A função no perfil da instância pode ter sido substituída recentemente. Nesse caso, seu aplicativo precisará aguardar a próxima rotação de credenciais programada automaticamente para que as credenciais de sua função fiquem disponíveis.

Para forçar a alteração, [desassocie o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html), [associe o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), ou interrompa a instância e, em seguida, reinicie-a.

## Quando tento chamar `AddRoleToInstanceProfile`, recebo um erro `AccessDenied`.
<a name="troubleshoot_iam-ec2_access-denied-adding-role"></a>

Se você estiver fazendo solicitações como um usuário IAM, verifique se tem as seguintes permissões:
+ `iam:AddRoleToInstanceProfile` com o recurso correspondente ao nome de região da Amazon (ARN) do perfil da instância (por exemplo, `arn:aws:iam::999999999999:instance-profile/ExampleInstanceProfile`). 

Para obter mais informações sobre as permissões necessárias para trabalhar com perfis, consulte [Como faço para começar?](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-get-started). Para obter informações sobre como adicionar permissões a um usuário, consulte [Gerenciar políticas do IAM](access_policies_manage.md).

## Amazon EC2: quando tento iniciar uma instância com um perfil, recebo um erro `AccessDenied`
<a name="troubleshoot_iam-ec2_access-denied-launch"></a>

Verifique o seguinte:
+ Execute uma instância sem um perfil de instância. Isso ajudará a garantir que o problema seja limitado às funções do IAM para instâncias do Amazon EC2.
+ Se você estiver fazendo solicitações como um usuário IAM, verifique se tem as seguintes permissões:
  + `ec2:RunInstances` com um caractere curinga ("\*")
  + `iam:PassRole` com o recurso correspondente ao nome de região da Amazon (ARN) da função (por exemplo, `arn:aws:iam::999999999999:role/ExampleRoleName`)
+ Chame a ação `GetInstanceProfile` do IAM para garantir que você esteja usando um nome de perfil de instância válido ou um ARN de perfil de instância válido. Para obter mais informações, consulte [Usar funções IAM com instâncias do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances).
+ Chame a ação `GetInstanceProfile` do IAM para garantir que o perfil da instância tenha uma função. Ocorrerá falha em perfis de instância vazias com o erro `AccessDenied`. Para obter mais informações sobre a criação de uma função, consulte [Criar um perfil do IAM](id_roles_create.md).

Para obter mais informações sobre as permissões necessárias para trabalhar com perfis, consulte [Como faço para começar?](id_roles_use_switch-role-ec2.md#roles-usingrole-ec2instance-get-started). Para obter informações sobre como adicionar permissões a um usuário, consulte [Gerenciar políticas do IAM](access_policies_manage.md). 

## Não é possível acessar as credenciais de segurança temporárias em minha instância do EC2.
<a name="troubleshoot_iam-ec2_no-keys"></a>

Para acessar credenciais de segurança temporárias em sua instância do EC2, você deve primeiro usar o console do IAM para criar uma função. Depois, execute uma instância do EC2 que usa essa função e examine a instância em execução. Para obter mais informações, consulte **How Do I Get Started? (Como começar?)** em [Use um perfil do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2](id_roles_use_switch-role-ec2.md).

Se você ainda não conseguir acessar as credenciais de segurança temporárias na instância do EC2, verifique o seguinte:
+ É possível acessar outra parte do serviço de metadados da instância (IMDS)? Se não, verifique se não há regras de firewall bloqueando o acesso a solicitações para o IMDS.

  ```
  [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/hostname; echo
  ```
+ A subárvore `iam` do IMDS existe? Caso não exista, verifique se sua instância tem um perfil de instância do IAM associado a ela chamando a operação de API `DescribeInstances` do EC2 ou usando o comando `aws ec2 describe-instances` da CLI. 

  ```
  [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam; echo
  ```
+ Verifique se há erro no documento `info` na subárvore do IAM. Se houver erro, consulte [O que os erros do documento `info` na subárvore do IAM significam?](#troubleshoot_iam-ec2_errors-info-doc) para obter mais informações.

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

## O que os erros do documento `info` na subárvore do IAM significam?
<a name="troubleshoot_iam-ec2_errors-info-doc"></a>

### O documento `iam/info` indica `"Code":"InstanceProfileNotFound"`
<a name="troubleshoot_iam-ec2_errors-info-doc-profile-not-found"></a>

Seu perfil de instância do IAM foi excluído e o Amazon EC2 não pode mais fornecer credenciais para sua instância. Você deve anexar um perfil de instância válido à sua instância do Amazon EC2.

Se houver um perfil de instância com esse nome, verifique se o perfil não foi excluído e outro foi criado com o mesmo nome:

1. Chame a operação `GetInstanceProfile` do IAM para obter o `InstanceProfileId`.

1. Chame a operação `DescribeInstances` do Amazon EC2 para obter o `IamInstanceProfileId` para a instância.

1. Verifique se o `InstanceProfileId` da operação do IAM corresponde ao `IamInstanceProfileId` da operação do Amazon EC2.

Se os IDs forem diferentes, o perfil de instância anexado às suas instâncias não será mais válido. Você deve anexar um perfil de instância válido à instância. 

### O documento `iam/info` indica um sucesso, mas indica `"Message":"Instance Profile does not contain a role..."`
<a name="troubleshoot_iam-ec2_errors-info-doc-no-role"></a>

A função foi removida do perfil da instância pela ação `RemoveRoleFromInstanceProfile` do IAM. Você pode usar a ação `AddRoleToInstanceProfile` do IAM para anexar uma função ao perfil da instância. O aplicativo precisará aguardar até que a próxima atualização programada acesse as credenciais para a função. 

Para forçar a alteração, [desassocie o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html), [associe o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), ou interrompa a instância e, em seguida, reinicie-a.

### O documento `iam/security-credentials/[role-name]` indica `"Code":"AssumeRoleUnauthorizedAccess"`
<a name="troubleshoot_iam-ec2_errors-info-doc-unauthorized-access"></a>

O Amazon EC2 não tem permissão para assumir a função. A permissão para assumir a função é controlada pela política de confiança anexada à função, como o exemplo a seguir. Use a API `UpdateAssumeRolePolicy` do IAM para atualizar a política de confiança. 

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

****  

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

------

O aplicativo precisará aguardar até que a próxima atualização programada automaticamente acesse as credenciais para a função.

Para forçar a alteração, [desassocie o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html), [associe o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), ou interrompa a instância e, em seguida, reinicie-a.