Por que recebi o erro de IAM “AWS was not able to validate the provided access credentials” (A AWS não pôde validar as credenciais de acesso fornecidas) em algumas regiões da 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. Novas regiões da AWS (por exemplo, Bahrein) não são habilitadas por padrão e só aceitam a versão atualizada dos tokens de sessão. Esse erro pode ocorrer se os tokens de sessão da versão 1 forem usados para fazer uma solicitação aos endpoints de serviço em uma região da AWS que não está habilitada por padrão. Para mais informações, consulte Managing AWS STS in an AWS Region (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 da AWS. Recomenda-se usar endpoints regionais do STS. Usar um endpoint geograficamente mais próximo do seu aplicativo reduz a latência e proporciona melhores tempos de resposta.

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 for Python (Boto3).

Observação:

  • substitua your-region, AccountID e RoleName de acordo com o seu ambiente.
  • É necessário definir o endpoint\ _url para configurar o cliente STS para o endpoint regional.
# 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')

Inclua opções de URL de região e endpoint no script/comando bash existente para usar endpoints regionais.

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

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 de versão 1 são válidos somente nas regiões da AWS que estão habilitadas 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 da AWS.

Para obter instruções, consulte Alterar a compatibilidade regional dos tokens de sessão para o endpoint global.

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

O AWS Security Token Service (STS) agora permite que o endpoint STS global emita tokens de sessão compatíveis com todas as regiões da AWS

Regiões e endpoints

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos