New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Comment puis-je résoudre l'erreur « The security token included in the request is expired » lors de l'exécution d'applications Java sur Amazon EC2 ?
Mes applications Java qui utilisent le kit SDK AWS pour Java sur une instance Amazon Elastic Compute Cloud (Amazon EC2) reçoivent l'erreur suivante : « com.amazonaws.AmazonServiceException: The security token included in the request is expired (Service: AmazonSQS ; code de statut : 403 ; code d’erreur : ExpiredToken ; ID de requête : 12a345b6-78cd-901e-fg23-45hi67890jkl) ».
Brève description
AWS exige que toutes les requêtes d'API d'application soient signées numériquement à l'aide des informations d'identification fournies par AWS. Lorsque votre application utilise des informations d'identification temporaires pour créer un client AWS, vous devez renouveler ces informations d'identification avant leur expiration. Si vos informations d'identification expirent, vous recevez l’erreur security token included in the request is expired. Pour résoudre cette erreur, vérifiez votre référence temporelle, actualisez les informations d'identification temporaires expirées, puis vérifiez vos configurations AWS Identity and Access Management (IAM).
Résolution
Assurez-vous que votre instance possède une référence temporelle cohérente
Les informations d'identification expirent si l'heure est incorrecte. Assurez-vous donc que votre serveur est exact. Votre instance EC2 doit avoir une référence d'heure et de date cohérente et précise. Configurez le service Amazon Time Sync ou une autre source NTP (Network Time Protocol) sur votre instance. Pour plus d'informations, consultez la section Modifier le fuseau horaire de votre instance.
Assurez-vous que vos informations d'identification temporaires ne sont pas expirées
Si vous utilisez des informations d'identification temporaires, assurez-vous qu'elles ne sont pas expirées. Si les informations d'identification temporaires ont expiré, vous devez générer un nouvel ensemble d'informations d'identification temporaires et les utiliser. Il est recommandé d'actualiser les informations d'identification temporaires cinq minutes avant leur expiration.
Vérifiez votre configuration IAM
Pour les applications qui s'exécutent sur une instance EC2, il est recommandé d'utiliser un rôle IAM attribué à l'instance. Si vous utilisez un rôle IAM, vérifiez que votre configuration est correctement configurée.
Avec un rôle IAM, un constructeur de service par défaut utilise une chaîne de fournisseurs d'informations d'identification par défaut pour rechercher des informations d'identification dans l'ordre suivant :
- Dans les variables d'environnement système AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY.
- Dans les propriétés système Java aws.accessKeyId et aws.secretKey.
- Dans le fichier d'informations d'identification par défaut.
- Dans le profil d'instance, les informations d'identification se trouvent dans les métadonnées d'instance associées au rôle IAM.
Pour plus d'informations, consultez la section Utiliser un rôle IAM pour accorder des autorisations aux applications exécutées sur des instances Amazon EC2.
Si vous répertoriez les informations d'identification à un autre emplacement que le profil d'instance, le constructeur client par défaut les trouve en premier. Cette configuration bloque les informations d'identification du rôle IAM. Pour plus d'informations, consultez la section Fournir des informations d'identification temporaires au kit SDK AWS pour Java.
Pour consulter les informations d'identification du rôle IAM, exécutez les commandes suivantes depuis Windows PowerShell version 3.0 ou ultérieure ou depuis un shell Linux. Si vous utilisez des informations d'identification temporaires, les commandes Windows et Linux suivantes affichent les informations d'identification temporaires les plus récentes pour l'instance.
Remarque : Dans les commandes suivantes, remplacez examplerole par le nom de votre rôle IAM.
Windows :
PS C:\> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/examplerole
Vous obtenez une sortie similaire à l'exemple suivant :
Code : SuccessLastUpdated : 2016-07-18T18:09:47Z Type : AWS-HMAC AccessKeyId : AKIAIOSFODNN7EXAMPLE SecretAccessKey : wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Token : token Expiration : 2016-04-27T22:39:16Z
Linux :
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/examplerole
Vous obtenez une sortie similaire à l'exemple suivant :
{ "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" }
Si vous recevez une erreur 404 lorsque vous exécutez la commande curl précédente, vérifiez que le proxy HTTP est désactivé pour l'adresse IP des métadonnées. Assurez-vous également que le profil d'instance est attaché à l'instance.
Si le problème persiste, vérifiez que l'instance n'effectue pas plusieurs requêtes simultanées ou n'exécute pas plusieurs sessions en parallèle. Ce scénario peut entraîner la limitation de la requête par le service de métadonnées d'instance (IMDS). Pour remédier à ce problème, utilisez le modèle de nouvelle tentative avec backoff exponentiel.
Pour configurer de nouvelles tentatives, modifiez AWS_METADATA_SERVICE_NUM_ATTEMPTS. Pour définir les options, utilisez des variables d'environnement, le fichier ~/.aws/config ou la session botocore de l'utilisateur. Pour plus d'informations, consultez la page Configuration sur le site Web de documentation de Boto3.
Exemple :
AWS_METADATA_SERVICE_TIMEOUT = 10 AWS_METADATA_SERVICE_NUM_ATTEMPTS = 5
Si vous exécutez la commande curl dans un conteneur Docker, augmentez http-put-response-hop-limit à 2. Exécutez la commande modify-instance-metadata-options de l'interface de ligne de commande AWS (AWS CLI) suivante :
aws ec2 modify-instance-metadata-options --instance-id instance --http-put-response-hop-limit 2 --http-endpoint enabled
Remarque : Remplacez instance par votre ID d'instance. Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Pour plus d'informations, consultez la section Ajouter une défense approfondie contre les pare-feux ouverts, les proxys inverses et les vulnérabilités SSRF grâce à des améliorations apportées au service de métadonnées d'instance EC2.
Les informations d'identification des rôles sont automatiquement renouvelées ou actualisées cinq minutes avant l'expiration des informations d'identification temporaires attribuées.
Informations connexes
Vidéos associées


Contenus pertinents
- demandé il y a 9 moislg...
- L3 Troubleshooting Workshop - Error when trying to increase the size of the Application settings VHDdemandé il y a 4 heureslg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 3 ans