Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez Instance Metadata Service
Vous pouvez accéder aux métadonnées d’instance à partir d’une instance en cours d’exécution en utilisant l’une des méthodes suivantes :
-
Service de métadonnées d'instance version 2 (IMDSv2) : méthode orientée session
Pour obtenir des exemples, consultez Exemples pour IMDSv2.
-
Service de métadonnées d'instance version 1 (IMDSv1) : méthode de demande/réponse
Pour obtenir des exemples, consultez Exemples pour IMDSv1.
Par défaut, vous pouvez utiliser l'un IMDSv1 ou IMDSv2 l'autre ou les deux.
Vous pouvez configurer le service de métadonnées d'instance (IMDS) sur chaque instance afin que le code local ou les utilisateurs puissent l'utiliser IMDSv2. Lorsque vous spécifiez que cela IMDSv2 doit être utilisé, cela IMDSv1 ne fonctionne plus. Pour plus d'informations sur la configuration de votre instance à utiliser IMDSv2, consultezConfiguration du service des métadonnées d’instance.
Les GET
en-têtes PUT
ou sont uniques à. IMDSv2 Si ces en-têtes sont présents dans la demande, la demande est destinée IMDSv2 à. Si aucun en-tête n'est présent, on suppose que la demande est destinée IMDSv1 à.
Pour un examen approfondi de IMDSv2, voir 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' EC2 instance
Rubriques
Fonctionnement de Service des métadonnées d’instance Version 2
IMDSv2 utilise des requêtes axées sur les sessions. Lorsque vous utilisez des demandes orientées session, vous créez un jeton de session qui définit la durée de la session, qui doit être d’une seconde au minimum et de six heures au maximum. Durant la période spécifiée, vous pouvez utiliser le même jeton de session pour les demandes suivantes. Une fois la période spécifiée arrivée à expiration, vous devez créer un nouveau jeton de session à utiliser pour les futures demandes.
Note
Les exemples de cette section utilisent l' IPv4 adresse du service de métadonnées d'instance (IMDS) :169.254.169.254
. Si vous récupérez des métadonnées d'instance pour EC2 des instances via l' IPv6 adresse, assurez-vous d'activer et d'utiliser plutôt l' IPv6 adresse :[fd00:ec2::254]
. L' IPv6 adresse de l'IMDS est compatible avec IMDSv2 les commandes. L' IPv6 adresse n'est accessible que sur les instances basées sur Nitro dans un sous-réseau IPv6 pris en charge (double pile ou IPv6 uniquement).
Les exemples suivants utilisent un script shell IMDSv2 pour récupérer les éléments de métadonnées de l'instance de niveau supérieur. Chaque exemple :
-
Crée un jeton de session d’une durée de six heures (21 600 secondes) en utilisant la demande
PUT
-
Stockez l’en-tête du jeton de session dans une variable nommée
TOKEN
(sous Linux) outoken
(sous Windows). -
Demande les éléments de métadonnées de haut niveau à l’aide du jeton
Vous pouvez exécuter deux commandes distinctes ou les combiner.
Commandes distinctes
Tout d’abord, générez un jeton à l’aide de la commande suivante.
[ec2-user ~]$
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
Utilisez ensuite le jeton pour générer des éléments de métadonnées de niveau supérieur à l’aide de la commande suivante.
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Commandes combinées
Vous pouvez stocker le jeton et combiner les commandes. L’exemple suivant combine les deux commandes ci-dessus et stocke l’en-tête du jeton de session dans une variable nommée TOKEN.
Note
En cas d’erreur lors de la création du jeton, un message d’erreur remplace le jeton valide dans la variable et la commande ne fonctionne pas.
[ec2-user ~]$
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Une fois que vous avez créé un jeton, vous pouvez le réutiliser jusqu’à son expiration. Dans l’exemple de commande suivant, qui extrait l’ID de l’AMI utilisée pour lancer l’instance, le jeton stocké dans $TOKEN
dans l’exemple précédent est réutilisé.
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
PS C:\>
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
Une fois que vous avez créé un jeton, vous pouvez le réutiliser jusqu’à son expiration. Dans l’exemple de commande suivant, qui extrait l’ID de l’AMI utilisée pour lancer l’instance, le jeton stocké dans $token
dans l’exemple précédent est réutilisé.
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
Lorsque vous demandez IMDSv2 des métadonnées d'instance, la demande doit inclure les éléments suivants :
-
Utilisez une demande
PUT
pour lancer une session sur le service des métadonnées d’instance. La demandePUT
renvoie un jeton qui doit être inclus dans les demandesGET
suivantes envoyées au service des métadonnées d’instance. Le jeton est obligatoire pour accéder aux métadonnées à l'aide de IMDSv2. -
Incluez le jeton dans toutes les demandes
GET
envoyées à l’IMDS. Lorsque l’utilisation de jeton est définie surrequired
, les demandes sans jeton valide ou contenant un jeton arrivé à expiration reçoivent un code d’erreur HTTP401 - Unauthorized
.-
Le jeton est une clé propre à l’instance. Le jeton n'est pas valide sur EC2 les autres instances et sera rejeté si vous tentez de l'utiliser en dehors de l'instance sur laquelle il a été généré.
-
La demande
PUT
doit inclure un en-tête spécifiant la durée time-to-live (TTL) du jeton, en secondes, jusqu’à six heures au maximum (21 600 secondes). Le jeton représente une session logique. La durée de vie (TTL) définit la durée de validité du jeton et, par conséquent, la durée de la session. -
Une fois qu’un jeton est arrivé à expiration, pour pouvoir continuer à accéder aux métadonnées de l’instance, vous devez créer une nouvelle session en utilisant un autre
PUT
. -
Vous pouvez choisir de réutiliser un jeton ou d’en créer un nouveau pour chaque demande. Pour un faible nombre de demandes, il peut être plus facile de générer et d’utiliser immédiatement un jeton chaque fois que vous avez besoin d’accéder à l’IMDS. Cependant, pour une plus grande productivité, vous pouvez spécifier une durée plus longue pour le jeton et le réutiliser plutôt que de devoir écrire une demande
PUT
chaque fois que vous avez besoin de demander des métadonnées d’instance. Il n'existe aucune limite pratique quant au nombre de jetons simultanés, chacun représentant sa propre session. IMDSv2 est toutefois toujours limité par la connexion IMDS normale et les limites de limitation. Pour de plus amples informations, veuillez consulter Limitation des demandes.
-
Les méthodes HTTP GET
et HEAD
sont autorisées dans les demandes de métadonnées d'instance IMDSv2. Les requêtes PUT
sont rejetées si elles contiennent un en-tête X-Forwarded-For.
Par défaut, la réponse aux demandes PUT
possède une durée time-to-live (hop limit) de réponse de 1
au niveau du protocole IP. Si vous avez besoin d'une limite de sauts plus importante, vous pouvez l'ajuster à l'aide de la modify-instance-metadata-options
Utilisation d’un kit SDK AWS pris en charge
Pour être utilisées IMDSv2, vos EC2 instances doivent utiliser une version du AWS SDK qui prend en charge l'utilisation IMDSv2. Les dernières versions de tous les AWS SDKs supports utilisant IMDSv2.
Important
Nous vous recommandons de vous tenir au courant des versions du kit SDK afin de rester à jour avec les dernières fonctionnalités, mises à jour de sécurité et dépendances sous-jacentes. L’utilisation continue d’une version du kit SDK non prise en charge n’est pas recommandée et est effectuée à votre discrétion. Pour plus d'informations, consultez la politique de maintenance de AWS SDKs and Tools dans le guide de référence AWS SDKs and Tools.
Les versions minimales prises en charge sont les suivantes IMDSv2 :
-
AWS CLI
: 1.16.289 -
AWS Tools for Windows PowerShell
– 4.0.1.0 -
AWS SDK for .NET
: 3.3.634.1 -
AWS SDK for C++
: 1.7.229 -
AWS SDK pour Go
: 1.25.38 -
AWS SDK pour Go
v2 — 0.19.0 -
AWS SDK for Java
: 1.11.678 -
AWS SDK for Java 2.x
: 2.10.21 -
Kit AWS SDK pour Kotlin
— 1,14 -
AWS SDK for PHP
: 3.147.7 -
AWS SDK for Python (Boto3)
: 1.12.6 -
AWS SDK for Ruby
: 3.79.0
Exemples pour IMDSv2
Exécutez les exemples suivants sur votre EC2 instance Amazon pour récupérer les métadonnées de l'instance pour IMDSv2.
Sur les instances Windows, vous pouvez utiliser Windows PowerShell ou installer cURL ou wget. Si vous installez un outil tiers sur une instance Windows, veillez à lire attentivement la documentation qui l’accompagne, car les appels et les résultats peuvent être différents de ceux décrits ici.
Obtenir les versions disponibles des métadonnées d’instance
Cet exemple permet d’obtenir les versions disponibles des métadonnées d’instance. Chaque version fait référence à un build de métadonnées d’instance lorsque de nouvelles catégories de métadonnées d’instance ont été publiées. Les versions de génération des métadonnées de l'instance ne sont pas corrélées aux versions de l' EC2 API Amazon. Les versions antérieures sont disponibles au cas où vous ayez des scripts reposant sur la structure et les informations présentes dans une version précédente.
Obtenir les éléments de métadonnées de niveau supérieur
Cet exemple permet d’obtenir les éléments de métadonnées de niveau supérieur. Pour plus d’informations sur les éléments de la réponse, consultez la rubrique Catégories de métadonnées d’instance.
Notez que les balises ne sont incluses dans cette sortie que si vous en avez autorisé l’accès. Pour de plus amples informations, veuillez consulter Autoriser l’accès aux identifications dans les métadonnées d’instance.
Obtenir les valeurs des éléments de métadonnées
Ces exemples permettent d’obtenir les valeurs de certains des éléments de métadonnées de premier niveau qui ont été obtenus dans l’exemple précédent. Ces demandes utilisent le jeton stocké qui a été créé à l’aide de la commande de l’exemple précédent. Le jeton ne doit pas avoir expiré.
Obtenir la liste des clés publiques disponibles
Cet exemple permet d’obtenir la liste des clés publiques disponibles.
Montrer les formats pour lesquels une clé publique 0 est disponible
Cet exemple montre les formats pour lesquels une clé publique 0 est disponible.
Obtenir la clé publique 0 (au format clé OpenSSH)
Cet exemple permet d’obtenir la clé publique 0 (au format clé OpenSSH).
Obtenir l’ID de sous-réseau d’une instance
Cet exemple permet d’obtenir l’ID de sous-réseau pour une instance.
Obtenir les identifications d’une instance
Si l’accès aux balises d’instance dans les métadonnées d’instance est activé, vous pouvez obtenir les balises d’une instance à partir des métadonnées d’instance. Pour de plus amples informations, veuillez consulter Extraire les identifications à partir des métadonnées d’instance.
Exemples pour IMDSv1
Exécutez les exemples suivants sur votre EC2 instance Amazon pour récupérer les métadonnées de l'instance pour IMDSv1.
Sur les instances Windows, vous pouvez utiliser Windows PowerShell ou installer cURL ou wget. Si vous installez un outil tiers sur une instance Windows, veillez à lire attentivement la documentation qui l’accompagne, car les appels et les résultats peuvent être différents de ceux décrits ici.
Obtenir les versions disponibles des métadonnées d’instance
Cet exemple permet d’obtenir les versions disponibles des métadonnées d’instance. Chaque version fait référence à un build de métadonnées d’instance lorsque de nouvelles catégories de métadonnées d’instance ont été publiées. Les versions de génération des métadonnées de l'instance ne sont pas corrélées aux versions de l' EC2 API Amazon. Les versions antérieures sont disponibles au cas où vous ayez des scripts reposant sur la structure et les informations présentes dans une version précédente.
Obtenir les éléments de métadonnées de niveau supérieur
Cet exemple permet d’obtenir les éléments de métadonnées de niveau supérieur. Pour plus d’informations sur les éléments de la réponse, consultez la rubrique Catégories de métadonnées d’instance.
Notez que les balises ne sont incluses dans cette sortie que si vous en avez autorisé l’accès. Pour de plus amples informations, veuillez consulter Autoriser l’accès aux identifications dans les métadonnées d’instance.
Obtenir les valeurs des éléments de métadonnées
Ces exemples permettent d’obtenir les valeurs de certains des éléments de métadonnées de premier niveau qui ont été obtenus dans l’exemple précédent.
Obtenir la liste des clés publiques disponibles
Cet exemple permet d’obtenir la liste des clés publiques disponibles.
Montrer les formats pour lesquels une clé publique 0 est disponible
Cet exemple montre les formats pour lesquels une clé publique 0 est disponible.
Obtenir la clé publique 0 (au format clé OpenSSH)
Cet exemple permet d’obtenir la clé publique 0 (au format clé OpenSSH).
Obtenir l’ID de sous-réseau d’une instance
Cet exemple permet d’obtenir l’ID de sous-réseau pour une instance.
Obtenir les identifications d’une instance
Si l’accès aux balises d’instance dans les métadonnées d’instance est activé, vous pouvez obtenir les balises d’une instance à partir des métadonnées d’instance. Pour de plus amples informations, veuillez consulter Extraire les identifications à partir des métadonnées d’instance.