Ho assunto un ruolo AWS Identity and Access Management (AWS IAM) e la mia chiamata API ha restituito l'errore: "An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials."
Breve descrizione
Per impostazione predefinita, AWS non attiva nuove Regioni AWS e le nuove Regioni accettano solo token della versione 2. Quando i token della versione 1 effettuano una richiesta agli endpoint di servizio in una Regione che AWS non attiva, ricevi il seguente errore:
"An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials."
È consigliabile utilizzare gli endpoint Regionali del Servizio di token di sicurezza AWS (AWS STS) perché i token di sessione di un endpoint Regionale STS sono token della versione 2 e validi in tutte le Regioni. In alternativa, puoi modificare le impostazioni di compatibilità della Regione per i token di sessione dall'endpoint globale.
Risoluzione
Ottieni token da un endpoint Regionale
Importante: per le Regioni attivate da AWS per impostazione predefinita, devi attivare l'endpoint Regionale STS nell'account AWS che genera le credenziali temporanee, indipendentemente dall'account che effettua la richiesta. Per le Regioni attivate manualmente, attiva la Regione sia nell'account che effettua la richiesta che nell'account che genera le credenziali. Se non attivi la Regione in entrambi gli account, ricevi l'errore "InvalidClientTokenId".
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Puoi utilizzare un AWS SDK o AWS CLI per ottenere i token.
Ad esempio, puoi eseguire questo comando AWS SDK for 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')
Nota: sostituisci your-region con la tua Regione e endpoint_url con il tuo endpoint.
Oppure esegui questo comando assume-role:
aws sts assume-role --role-arn arn:aws:iam::444455556666:role/RoleName --role-session-name RoleName --region your-region --endpoint-url https://sts.your-region.amazonaws.com
Nota: sostituisci your-region con la tua Regione, role-arn con il tuo nome della risorsa Amazon (ARN) in IAM e endpoint_url con il tuo endpoint.
Modifica le impostazioni di compatibilità della Regione per i token di sessione dall'endpoint globale
Per impostazione predefinita, le chiamate STS effettuate all'endpoint globale emettono token della versione 1. Per utilizzare token di sessione in tutte le Regioni, configura l'endpoint globale STS in modo che emetta i token della versione 2.
Importante: i token della versione 2 contengono più caratteri rispetto alla versione 1. L'aumento delle dimensioni dei token potrebbe influire sui sistemi esistenti che archiviano temporaneamente i token di sessione. Assicurati che il sistema che memorizza i token sia in grado di gestirne l'aumento delle dimensioni.