Solução de problemas do IAM e Amazon EC2
Use as informações contidas aqui para ajudar você a solucionar problemas e corrigir acesso negado ou outros problemas que você pode encontrar ao trabalhar com o Amazon EC2 e o IAM.
Tópicos
- Ao tentar iniciar uma instância, não vejo a função que esperava ver na lista de funções do IAM do console do Amazon EC2
- As credenciais na minha instância são da função incorreta
- Quando tento chamar AddRoleToInstanceProfile, recebo um erro AccessDenied.
- Amazon EC2: Quando tento iniciar uma instância com uma função, recebo um erro AccessDenied
- Não é possível acessar as credenciais de segurança temporárias em minha instância do EC2.
- O que os erros do documento info na subárvore do IAM significam?
Ao tentar iniciar uma instância, não vejo a função que esperava ver na lista de funções do IAM do console do Amazon EC2
Verifique o seguinte:
-
Se você estiver conectado a um usuário do IAM, verifique se tem permissão para chamar
ListInstanceProfiles
. Para obter informações sobre as permissões necessárias para trabalhar com funções, consulte “Permissões necessárias para usar funções com o Amazon EC2” em Uso de uma função do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2. Para obter informações sobre como adicionar permissões a um usuário, consulte Gerenciamento de políticas do IAM.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 uma função usando a CLI ou a API do IAM, verifique se criou um perfil da instância e adicionou a função a esse perfil. Além disso, se você nomear sua função e o perfil da instância de forma diferente, não verá o nome correto da função na lista de funções do IAM 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.
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 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, associe o perfil de instância, ou interrompa a instância e, em seguida, reinicie-a.
Quando tento chamar AddRoleToInstanceProfile
, recebo um erro AccessDenied
.
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 funções, consulte “Como faço para começar?” no Uso de uma função do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2. Para obter informações sobre como adicionar permissões a um usuário, consulte Gerenciamento de políticas do IAM.
Amazon EC2: Quando tento iniciar uma instância com uma função, recebo um erro AccessDenied
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. -
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 erroAccessDenied
. Para obter mais informações sobre a criação de uma função, consulte Criação de funções do IAM.
Para obter mais informações sobre as permissões necessárias para trabalhar com funções, consulte “Como faço para começar?” no Uso de uma função do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2. Para obter informações sobre como adicionar permissões a um usuário, consulte Gerenciamento de políticas do IAM.
Não é possível acessar as credenciais de segurança temporárias em minha instância do EC2.
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 Uso de uma função do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2.
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 APIDescribeInstances
do EC2 ou usando o comandoaws 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? 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?
O documento iam/info
indica "Code":"InstanceProfileNotFound"
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:
-
Chame a operação
GetInstanceProfile
do IAM para obter oInstanceProfileId
. -
Chame a operação
DescribeInstances
do Amazon EC2 para obter oIamInstanceProfileId
para a instância. -
Verifique se o
InstanceProfileId
da operação do IAM corresponde aoIamInstanceProfileId
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 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, associe o perfil de instância, ou interrompa a instância e, em seguida, reinicie-a.
O documento iam/security-credentials/[role-name]
indica "Code":"AssumeRoleUnauthorizedAccess"
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.
{"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, associe o perfil de instância, ou interrompa a instância e, em seguida, reinicie-a.