Perché ho ricevuto l'errore IAM "AWS was not able to validate the provided access credentials" in alcune regioni AWS?

3 minuti di lettura
0

Ho assunto un ruolo di AWS Identity and Access Management (IAM) e la mia chiamata API ha restituito un errore simile al seguente: "An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials."

Breve descrizione

Il Servizio di token di sicurezza AWS (AWS STS) supporta una versione aggiornata dei token di sessione, versione 2. Le nuove Regioni AWS (ad esempio, Bahrein) non sono abilitate per impostazione predefinita e accettano solo la versione aggiornata dei token di sessione. Questo errore può verificarsi se i token di sessione della versione 1 vengono utilizzati per effettuare una richiesta agli endpoint di servizio in una Regione AWS che non sono abilitati per impostazione predefinita. Per ulteriori informazioni, consulta Gestione di AWS STS in una Regione AWS.

Risoluzione

I token di sessione ottenuti dall'endpoint regionale di AWS STS sono della versione 2 e validi in tutte le Regioni AWS. Come buona norma, si consiglia di utilizzare gli endpoint STS regionali. L'utilizzo di un endpoint geograficamente più vicino all'applicazione riduce la latenza e offre tempi di risposta migliori.

Utilizza uno dei seguenti metodi per risolvere questo problema.

Ottieni token da un endpoint regionale

Il seguente comando di esempio utilizza AWS SDK per Python (Boto3).

Nota:

  • Sostituisci your-region, AccountID e RoleName in base al tuo ambiente.
  • L'impostazione di endpoint_url è necessaria per configurare il client STS per l'endpoint regionale.
# 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')

Includi le opzioni della regione e dell'URL dell'endpoint nello script/comando bash esistente per utilizzare gli endpoint regionali.

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

Modifica la compatibilità regionale dei token di sessione per l'endpoint globale

Per impostazione predefinita, le chiamate AWS STS all'endpoint globale emettono token di sessione che sono della versione 1. I token della versione 1 sono validi solo nelle Regioni AWS abilitate per impostazione predefinita. Tuttavia, puoi anche configurare l'endpoint globale STS per emettere token nella versione 2 che possono essere utilizzati in tutte le Regioni AWS.

Per istruzioni, consulta Modificare la compatibilità regionale dei token di sessione per l'endpoint globale.

Importante: I token della versione 2 includono più caratteri rispetto alla versione 1. Ciò potrebbe influire sui sistemi esistenti in cui memorizzi temporaneamente i token.


Informazioni correlate

Il Servizio di token di sicurezza AWS (STS) ora supporta l'attivazione dell'endpoint STS globale per l'emissione di token di sessione compatibili con tutte le Regioni AWS

Regioni ed endpoint

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa