Les applications Java qui utilisent le kit SDK AWS pour l'exécution de Java sur une instance Amazon Elastic Compute Cloud (Amazon EC2) peuvent recevoir 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 (AWS) 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 qu'un client AmazonSQS), celles-ci expirent au bout du délai qui leur a été appliqué. Vous devez vous assurer que les informations d'identification sont actualisées avant leur expiration.

Une autre raison d'expiration est l'utilisation d'une heure incorrecte. Une référence de temps cohérente et précise est essentielle pour beaucoup de tâches et de processus de serveurs. Si la date et l'heure de votre instance ne sont pas réglées correctement, les informations d'identification AWS peuvent être rejetées.

Si votre application s'exécute sur une instance Amazon EC2, nous vous recommandons d'utiliser un rôle AWS Identity and Access Management (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 des informations d'identification par défaut (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 de fournisseur d'informations d'identification par défaut lorsque vous attachez un profil d'instance à votre instance. Pour plus d'informations, consultez Utilisation d'un rôle IAM pour accorder des autorisations à des applications s'exécutant sur des instances Amazon EC2.

Si les informations d'identification du profil d'instance sont disponibles, le constructeur client par défaut crée une instance de la classe InstanceProfileCredentialsProvider du kit AWS SDK. Cette classe est utilisée pour signer des demandes d'API avec des informations d'identification AWS utilisant des informations d'identification de sécurité temporaires à partir de métadonnées d'instance Amazon EC2.

Important : Si votre application utilise la classe ProfileCredentialsProvider du kit AWS SDK 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.

Utilisation du service de synchronisation temporelle Amazon ou de sources NTP

Pour vous assurer que votre instance Linux possède une référence de temps cohérente et précise, configurez le service de synchronisation temporelle Amazon ou une autre source NTP (Network Time Protocol) sur votre instance Amazon EC2. Pour plus d'informations, consultez Réglage de l'heure pour votre instance Linux ou Réglage de l'heure pour une instance Windows.

Utilisation d'informations d'identification AWS temporaires personnalisées

Actualisez les informations d'identification temporaires cinq minutes avant leur expiration.

Utilisation d'un rôle IAM assigné à une instance

Attachez un profil d'instance à votre instance. Pour plus d'informations, consultez Utilisation d'un rôle IAM pour accorder des autorisations à des applications s'exécutant sur des instances Amazon EC2. Dans le code et dans l'instance, vérifiez que d'autres informations d'identification n'ont pas été spécifiées. Les informations d'identification de profil d'instance sont le dernier endroit où la chaîne de fournisseur d'informations d'identification par défaut recherche les informations d'identification. Si vous avez des informations d'identification situées plus tôt dans la chaîne de recherche, IAM ne sera pas utilisé. Pour plus d'informations, consultez Utilisation des informations d'identification AWS.

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). N'oubliez pas de remplacer examplerole par le nom de votre rôle IAM.

Pour Linux, utilisez la commande curl pour afficher les informations d'identification AWS :

$ 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"

}

Pour Windows, utilisez la commande Invoke-RestMethod pour afficher les informations d'identification AWS :

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 cinq minutes avant leur 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 : 06/11/2018