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 non sono attivate per impostazione predefinita e accettano solo la versione aggiornata dei token di sessione. Questo errore si verifica se i token di sessione della versione 1 effettuano una richiesta agli endpoint di servizio in una regione AWS che non è attivata per impostazione predefinita. Per ulteriori informazioni, consulta Managing AWS STS in an AWS Region.
Risoluzione
I token di sessione ottenuti da un endpoint regionale di AWS STS sono della versione 2 e validi in tutte le Regioni AWS. È consigliabile utilizzare gli endpoint regionali di AWS STS.
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):
# 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, AccountID e RoleName in base al tuo ambiente.
- L'impostazione di endpoint_url è necessaria per configurare il client STS per l'endpoint regionale.
Per utilizzare gli endpoint regionali, includi le opzioni della regione e dell'URL dell'endpoint nel comando bash esistente.
Comando di esempio:
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: per le regioni attivate per impostazione predefinita, è necessario attivare l'endpoint STS regionale nell'account in cui vengono generate le credenziali temporanee. Non importa se un utente ha effettuato l'accesso allo stesso account o a un account diverso al momento della richiesta. Per le regioni attivate manualmente, attiva la regione sia nell'account che effettua la richiesta sia nell'account in cui vengono generate le credenziali. Se non lo fai, potresti ricevere l'errore InvalidClientTokenID. Per ulteriori informazioni, consulta Activating and deactivating AWS STS in an AWS Region.
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 usano la versione 1. I token della versione 1 sono validi solo nelle regioni AWS attivate 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 ulteriori informazioni, consulta Managing global endpoint session tokens.
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
Managing AWS STS in an AWS Region
Regions and endpoints