Quando tento executar uma instância do Amazon Elastic Compute Cloud (Amazon EC2), recebo o seguinte erro: “An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message”.
Breve descrição
O erro UnauthorizedOperation pode ocorrer quando a política do AWS Identity and Access Management (AWS IAM) é muito restritiva. Esse erro também pode ocorrer quando o usuário do IAM não tem permissões para executar instâncias do EC2. Para obter mais detalhes sobre a falha, use a AWS Command Line Interface (AWS CLI) ou AWS CloudShell para decodificar a mensagem codificada que está na mensagem de erro. A mensagem codificada é semelhante ao exemplo a seguir:
“Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn”
Observação: para decodificar a mensagem codificada, o usuário ou perfil do IAM precisa ter permissão para realizar a operação da API DecodeAuthorizationMesssage. Se o usuário ou o perfil não tiver essa permissão, a operação de decodificação falhará com a seguinte mensagem de erro:
“Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: ### is not authorized to perform: (sts:DecodeAuthorizationMessage) action”.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para decodificar o erro de falha de autorização, conclua as seguintes etapas:
- Execute o comando decode-authorization-message:
aws sts decode-authorization-message --encoded-message encoded-message-error
Observação: substitua encoded-message-error pela mensagem codificada que está na mensagem de erro.
Exemplo de mensagem decodificada:
aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn{
"DecodedMessage":
{
"allowed
...
"context{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
\"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
\"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
{\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
{\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
{\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
}
A mensagem decodificada lista as permissões necessárias que estão faltando no usuário ou perfil da política do IAM.
- Verifique os campos entidade principal, ação, recurso, condição e chave na mensagem decodificada para obter mais informações sobre a causa da falha. A mensagem inclui a ação e o recurso solicitados, a entidade principal que fez a solicitação e os valores-chave da condição da solicitação do usuário.
No exemplo anterior, a solicitação falhou porque o Usuário da AWS não tem permissão para realizar a ação iam:PassRole no arn:aws:iam::accountID:role/EC2_instance_Profile_role ARN.
- Edite a política do IAM associada ao perfil ou ao usuário do IAM para adicionar as permissões necessárias.
Você também pode usar o simulador de políticas do IAM para solucionar problemas com políticas baseadas em identidade e limites de permissão do IAM.
Informações relacionadas
Por que não consigo executar comandos da AWS CLI na minha instância do EC2?
Por que não consigo iniciar ou executar minha instância do EC2?
Solução de problemas de mensagens de erro de acesso negado