J'ai endossé un rôle AWS Identity and Access Management (IAM) et mon appel d'API a renvoyé une erreur similaire à l’erreur suivante : « An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials. »
Brève description
Le service AWS Security Token (AWS STS) prend en charge une version mise à jour des jetons de session, la version 2. Les nouvelles régions AWS ne sont pas activées par défaut et n'acceptent que la version mise à jour des jetons de session. Cette erreur se produit si les jetons de session de la version 1 envoient une requête aux points de terminaison de service dans une région AWS qui n'est pas activée par défaut. Pour plus d'informations, consultez la section Gestion d'AWS STS dans une région AWS.
Résolution
Les jetons de session obtenus à partir d'un point de terminaison AWS STS régional proviennent de la version 2 et sont valides dans toutes les régions AWS. Il est recommandé d'utiliser des points de terminaison AWS STS régionaux.
Appliquez l’une des méthodes suivantes pour résoudre ce problème.
Obtenir des jetons à partir d’un point de terminaison régional
L'exemple de commande suivant utilise le kit SDK AWS pour 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')
Remarque :
- Remplacez your-region, AccountID et RoleName en fonction de votre environnement.
- La définition de endpoint_url est requise pour configurer le client STS pour le point de terminaison régional.
Pour utiliser les points de terminaison régionaux, assurez-vous d'inclure les options de région et d'URL de point de terminaison dans la commande Bash existante.
Exemple de commande :
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
Important : Pour les régions activées par défaut, vous devez activer le point de terminaison STS régional dans le compte sur lequel les informations d'identification temporaires sont générées. Peu importe qu'un utilisateur soit connecté au même compte ou à un compte différent lorsqu'il effectue la requête. Pour les régions activées manuellement, activez la région à la fois dans le compte qui effectue la requête et dans le compte sur lequel les informations d'identification sont générées. Si vous ne le faites pas, vous pouvez recevoir l'erreur InvalidClientTokenId. Pour en savoir plus, consultez la rubrique Activation et désactivation d'AWS STS dans une région AWS.
Modifier la compatibilité régionale des jetons de session pour le point de terminaison global
Par défaut, les appels AWS STS vers le point de terminaison global émettent des jetons de session qui utilisent la version 1. Les jetons de version 1 ne sont valides que dans les régions AWS activées par défaut. Cependant, vous pouvez également configurer le point de terminaison global STS pour émettre des jetons dans la version 2 qui peuvent être utilisés dans toutes les régions AWS.
Pour plus d'informations, consultez la section Gestion des jetons de session de point de terminaison globaux.
Important : Les jetons de la version 2 incluent plus de caractères que ceux de la version 1. Cela peut affecter les systèmes existants dans lesquels vous stockez temporairement des jetons.
Informations connexes
Gestion d'AWS STS dans une région AWS
Régions et points de terminaison