Ir para o conteúdo

Como faço para resolver o erro da chave de acesso do IAM "The security token included in the request isn’t valid"?

5 minuto de leitura
0

Quando uso minhas chaves de acesso do AWS Identity and Access Management (IAM), recebo um erro InvalidClientTokenId sobre um token de segurança inválido.

Breve descrição

Esse erro de autenticação ocorre porque suas chaves de acesso do IAM estão em um local inesperado, não estão configuradas corretamente, foram excluídas ou expiraram. As chaves de acesso usadas dependem da ordem e da precedência dos provedores de credenciais. Para obter mais informações, consulte Precedência de credenciais e configurações.

Na resolução a seguir, o erro ocorre em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) baseada em Linux devido a chaves de acesso inválidas.

Resolução

Observação: se você receber mensagens de erro 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 resolver esse erro, encontre a localização da credencial do usuário, verifique se as chaves de acesso são válidas e atualize ou substitua as chaves de acesso.

Encontre a localização da credencial do usuário

Para obter as chaves de acesso do IAM usadas pela instância do EC2, execute o comando get-caller-identity na AWS CLI:

aws sts get-caller-identity --debug

Exemplo de saída:

2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

Na saída do exemplo anterior, as chaves de acesso usadas pela instância do Amazon EC2 estão dentro do arquivo ~/.aws/credentials.

Observação: o arquivo .aws/credentials contém detalhes de credenciais de suas entidades do IAM. Ao gerenciar suas chaves de acesso, verifique se você segue as práticas recomendadas de segurança no IAM.

Verifique se as chaves de acesso são válidas

Siga estas etapas para verificar se as chaves de acesso são válidas para o local e a ação de chamada da API:

  1. Para verificar quais chaves de acesso são usadas pela instância do Amazon EC2, execute os seguintes comandos:

    cd ~/.aws
    cat credentials

    Exemplo de saída:

    [default]
    aws_access_key_id=AKIAIOSFODNN7EXAMPLE
    aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  2. Para verificar se as permissões da chave de acesso são válidas, use o Console de Gerenciamento da AWS ou a AWS CLI.

Atualize ou substitua as chaves de acesso

Se as chaves de acesso expirarem ou forem excluídas, atualize-as.

Se você usa um perfil nomeado com a AWS CLI, verifique se as configurações aws_access_key_id e aws_session_token têm os valores corretos. As configurações do perfil são armazenadas nos arquivos ./aws/credentials ou ./aws/config.

Se você tiver chaves de acesso armazenadas em variáveis de ambiente que não são válidas, execute o seguinte comando para removê-las:

unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Se você atualizou as configurações do seu perfil, certifique-se de redefinir as variáveis de ambiente.

Depois de atualizar ou substituir as chaves de acesso, para verificar se as credenciais são válidas, execute o comandoget-caller-identity na AWS CLI:

aws sts get-caller-identity --debug

Exemplo de saída:

2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: custom-process
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: config-file
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: boto-config
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: container-role
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: iam-role
2024-06-04 12:46:07,177 - MainThread - botocore.credentials - DEBUG - Found credentials from IAM Role: ec2_Role

Na saída do exemplo anterior, as credenciais do perfil de instância do Amazon EC2 são usadas pela instância porque não há outras credenciais armazenadas com maior precedência.

Resolva erros de ExpiredToken com credenciais de segurança temporárias

Observação: é uma prática recomendada usar credenciais de segurança temporárias em vez de credenciais de segurança de longo prazo como chaves de acesso. Para mais informações sobre provisões de segurança em sua conta da AWS, consulte Considerações sobre segurança.

As credenciais de segurança temporárias expiram após um período especificado e não podem ser estendidas além do tempo de expiração original. Ao usar credenciais expiradas, você recebe um erro ExpiredToken.

Para resolver esse erro, você deve solicitar novas credenciais temporárias. Se você usou originalmente GetSessionToken para obter credenciais temporárias, então, para solicitar novas credenciais, execute o comando get-session-token na AWS CLI:

aws sts get-session-token \
    --duration-seconds 3600

Observação: substitua 3600 pela duração de sessão desejada em segundos. O mínimo é de 900 segundos e o máximo é de 129600 segundos.

Para exemplos de código sobre como usar o GetSessionToken, consulte Use GetSessionToken com um AWS SDK ou CLI.

Informações relacionadas

Por que minha instância do Amazon EC2 está usando credenciais de usuário do IAM em vez de credenciais de perfil?

Por que recebi o erro de IAM “AWS was not able to validate the provided access credentials” em algumas regiões?

Gerenciar o AWS STS em uma Região da AWS

1 Comentário

This article was reviewed and updated on 2026-04-02.

ESPECIALISTA

respondeu há um mês