Por que recebi o erro de IAM “A AWS não conseguiu validar as credenciais de acesso fornecidas” em algumas regiões AWS?

3 minuto de leitura
0

Eu assumi uma função do AWS Identity and Access Management (IAM) e minha chamada de API retornou um erro semelhante ao seguinte: "Ocorreu um erro (AuthFailure) ao chamar a operação DescribeInstances: A AWS não conseguiu validar as credenciais de acesso fornecidas."

Breve descrição

O AWS Security Token Service (AWS STS) oferece suporte a uma versão atualizada dos tokens de sessão, versão 2. As novas regiões AWS não são ativadas por padrão e aceitam somente a versão atualizada dos tokens de sessão. Esse erro ocorre se os tokens de sessão da versão 1 fizerem uma solicitação para atender aos endpoints em uma região da AWS que não está ativada por padrão. Para obter mais informações, consulte Gerenciar o AWS STS em uma região da AWS.

Resolução

Os tokens de sessão obtidos do endpoint regional do AWS STS são da versão 2 e válidos em todas as regiões AWS. É uma prática recomendada usar endpoints regionais do AWS STS.

Use um dos métodos a seguir para resolver esse problema.

Obter tokens de um endpoint regional

O comando de exemplo a seguir usa o AWS SDK para Python (Boto3):

# Replace existing code to create STS client with the following:  
sts_client = boto3.client('sts', region_name='your-region', endpoint_url='https://sts.your-region.amazonaws.com')

Observação:

  • substitua your-region, AccountID e RoleName de acordo com seu ambiente.
  • É necessário definir o endpoint_url para configurar o cliente STS para o endpoint regional.

Para usar endpoints regionais, certifique-se de incluir opções de URL de região e endpoint no comando bash existente.

Exemplo de comando:

aws sts assume-role --role-arn arn:aws:iam::AccountID:role/RoleName --role-session-name RoleName --region your-region --endpoint-url https://sts.your-region.amazonaws.com

Importante: para regiões que são ativadas por padrão, você deve ativar o endpoint STS regional na conta em que as credenciais temporárias são geradas. Não importa se um usuário está conectado à mesma conta ou a uma conta diferente ao fazer a solicitação. Para regiões que são ativadas manualmente, ative a região na conta que faz a solicitação e na conta em que as credenciais são geradas. Se você não fizer isso, poderá receber o erro InvalidClientTokenId. Para obter mais informações, consulte Como ativar e desativar o AWS STS em uma região da AWS.

Alterar a compatibilidade regional dos tokens de sessão para endpoint global

Por padrão, as chamadas do AWS STS para o endpoint global emitem tokens de sessão na versão 1. Os tokens da versão 1 são válidos somente nas regiões AWS que são ativadas por padrão. No entanto, você também pode configurar o endpoint global STS para emitir tokens na versão 2, que podem ser usados em todas as regiões AWS.

Para obter mais informações, consulte Como gerenciar tokens globais de sessão de endpoint.

Importante: os tokens da versão 2 incluem mais caracteres que os da versão 1. Isso pode afetar os sistemas existentes nos quais você armazena temporariamente os tokens.

Informações relacionadas

Como gerenciar o AWS STS em uma região da AWS

Regiões e endpoints