Pourquoi ai-je reçu l'erreur IAM « AWS n'a pas pu valider les informations d'identification d'accès fournies » dans certaines régions AWS ?

Date de la dernière mise à jour : 14/05/2020

J'ai assumé un rôle AWS Identity and Access Management (IAM) et mon appel d'API a renvoyé une erreur similaire à ce qui suit :

« Une erreur s'est produite (AuthFailure) lors de l'appel de l'opération DescribeInstances : AWS n'a pas pu valider les informations d'identification d'accès fournies. »  

Brève description

AWS Security Token Service (AWS STS) prend désormais en charge un format de version mis à jour pour les jetons de session. Les nouvelles régions AWS non activées par défaut (par exemple, Hong Kong et Bahreïn) utilisent le format AWS STS mis à jour. Le point de terminaison AWS STS global (sts.amazonaws.com) émet des jetons au format précédent par défaut. Cette erreur peut se produire si un jeton de session tente d'utiliser le format précédent avec une région AWS non activée par défaut. Pour plus d'informations, consultez Gestion de AWS STS dans une région AWS.

Solution

Les jetons obtenus à partir de points de terminaison régionaux utilisent le nouveau format de version et sont valides dans toutes les régions AWS. Il est recommandé d'utiliser des points de terminaison STS régionaux. Cela est dû au fait que l'utilisation d'un point de terminaison géographiquement plus proche de votre application signifie qu'elle peut accéder aux services STS avec une latence plus faible et avec de meilleurs temps de réponse.

Utilisez l'une des méthodes suivantes pour résoudre l'erreur.

Obtenir des jetons à partir d'un point de terminaison régional

L'exemple de commande suivant utilise un kit AWS SDK pour Python (Boto3).

Remarque :

  • Remplacez your-region par votre région AWS.
  • La définition de endpoint_url est obligatoire pour configurer le client STS pour le point de terminaison régional.
# Replace existing code to create STS client with the following
sts_client = boto3.client('sts', region_name='your-region', endpoint_url='https://sts.REGION.amazonaws.com')

Modifier la compatibilité régionale des jetons de session pour le point de terminaison global

Vous pouvez également configurer le point de terminaison global STS pour émettre des jetons au format mis à jour pour permettre l'utilisation des jetons dans toutes les régions AWS.

Pour obtenir des instructions, consultez Modifier la compatibilité régionale des jetons de session pour le point de terminaison global.

Important : les nouveaux jetons contiennent plus de caractères que les versions précédentes. Cela peut affecter les systèmes existants dans lesquels vous stockez temporairement des jetons.