Les applications Java qui utilisent le kit SDK AWS pour l'exécution de Java sur une instance Amazon EC2 reçoivent une exception similaire à celle-ci :

com.amazonaws.AmazonServiceException: The security token included in the request is expired (Service: AmazonSQS; Status Code: 403; Error Code: ExpiredToken; Request ID: 12a345b6-78cd-901e-fg23-45hi67890jkl)

Toutes les demandes d'API à Amazon Web Services doivent être signées de manière chiffrée avec des informations d'identification émises par AWS. Si votre application utilise des informations d'identification temporaires lors de la création d'un client AWS (tel que le client AmazonSQS mentionné dans l'exception ci-dessus), celles-ci expirent au bout du délai qui leur a été appliqué. Si votre application s'exécute sur une instance Amazon EC2, nous vous recommandons d'utiliser un rôle IAM assigné à cette instance. Vous pourrez ainsi utiliser un constructeur de service par défaut. Le client du constructeur par défaut recherche les informations d'identification via la chaîne du fournisseur d'informations d'identification par défaut, dans l'ordre suivant :

  1. Dans les variables d'environnement du système : AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY.
  2. Dans les propriétés du système Java : aws.accessKeyId et aws.secretKey.
  3. Dans le fichier d'informations d'identification (l'emplacement de ce fichier varie en fonction de la plateforme).
  4. Dans les informations d'identification du profil d'instance contenues dans les métadonnées associées au rôle IAM pour l'instance EC2. Les informations d'identification du profil d'instance sont ajoutées à la chaîne du fournisseur d'informations d'identification par défaut lorsque vous associez un profil à une instance, comme décrit dans la section Utilisation d'un rôle IAM pour accorder des autorisations à des applications s'exécutant sur des instances EC2 Amazon.

Si les informations d'identification du profil d'instance sont disponibles, le constructeur client par défaut crée une instance dont la classe du kit SDK AWS correspond à InstanceProfileCredentialsProvider pour signer les requêtes d'API avec des informations d'identification AWS temporaires à partir des métadonnées d'instance Amazon EC2.

Important
Si votre application utilise la classe de kit SDK ProfileCredentialsProvider pour fournir des informations d'identification AWS temporaires, vous devez les vérifier et les actualiser avant qu'elles n'expirent. Dans le cas contraire, votre application risque de rencontrer l'erreur ExpiredToken.

Nous vous recommandons d'actualiser les informations d'identification temporaires 5 minutes avant leur expiration. 

Associez un profil à l'instance, comme décrit dans la section Utilisation d'un rôle IAM pour accorder des autorisations à des applications s'exécutant sur des instances EC2 Amazon. Dans le code et dans l'instance, vérifiez que d'autres informations d'identification n'ont pas été spécifiées. L'utilisation de l'une des trois méthodes spécifiées dans la chaîne du fournisseur d'informations d'identification par défaut contourne l'utilisation du rôle IAM, comme décrit dans la quatrième méthode.

Remarque
Pour voir les informations d'identification AWS d'un rôle IAM associé à une instance, exécutez les commandes ci-dessous à partir d'un shell Linux ou de Windows PowerShell (v3.0 ou version ultérieure) et remplacez examplerole par le nom du rôle IAM.

  • Linux:

$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/examplerole

La sortie générée lors de l'exécution de cette commande est semblable à ce qui suit :

{

     "Code" : "Success",

     "LastUpdated" : "2016-04-26T16:39:16Z",

     "Type" : "AWS-HMAC",

     "AccessKeyId" : "AKIAIOSFODNN7EXAMPLE",

     "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",

     "Token" : "token",

     "Expiration" : "2016-04-27T22:39:16Z"

}

  • Windows:

PS C:\> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/examplerole

La sortie générée lors de l'exécution de cette commande est semblable à ce qui suit :

Code            : Success

LastUpdated     : 2016-07-18T18:09:47Z

Type            : AWS-HMAC

AccessKeyId     : AKIAIOSFODNN7EXAMPLE

SecretAccessKey : wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Token           : token

Expiration      : 2016-04-27T22:39:16Z

Utilisez ces commandes pour vérifier les dernières informations d'identification temporaires de l'instance. Ces informations d'identification sont automatiquement modifiées ou actualisées environ 5 minutes avant leur expiration.

Profil d'instance, jeton de sécurité, EC2, Java, SDK, AmazonServiceException, informations d'identification, actualisé, ProfileCredentialsProvider, expiration


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 19/07/2016
Date de mise à jour : 20/07/2016