Utiliser le service de métadonnées d'instance pour accéder aux métadonnées de l'instance - Amazon Elastic Compute Cloud

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.

Utiliser le service de métadonnées d'instance pour accéder aux métadonnées de l'instance

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'utiliserIMDSv2. 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 à utiliserIMDSv2, consultezConfiguration des options du service de 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 deIMDSv2, voir Ajouter une défense approfondie contre les pare-feux ouverts, les proxys inverses et les SSRF vulnérabilités grâce à des améliorations apportées au service de métadonnées d'EC2instance.

Fonctionnement de Service des métadonnées d’instance Version 2

IMDSv2 utilise des demandes orientées session. 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'IPv4adresse 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 des EC2 instances via l'IPv6adresse, assurez-vous d'activer et d'utiliser l'IPv6adresse à la place :[fd00:ec2::254]. L'IPv6adresse du IMDS est compatible avec IMDSv2 les commandes. L'IPv6adresse n'est accessible que sur les instances créées sur le système AWS Nitro et dans un sous-réseau IPv6 compatible (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

  • Stocke l'en-tête du jeton de session dans une variable nommée TOKEN (instances Linux) ou token (instances 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éeTOKEN.

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 obtient l'ID AMI utilisé pour lancer l'instance, le jeton stocké $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 obtient l'ID AMI utilisé pour lancer l'instance, le jeton stocké $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 :

  1. Utilisez une demande PUT pour lancer une session sur le service des métadonnées d’instance. La demande PUT renvoie un jeton qui doit être inclus dans les demandes GET suivantes envoyées au service des métadonnées d’instance. Le jeton est requis pour accéder aux métadonnées à l'aide deIMDSv2.

  2. Incluez le jeton dans toutes les GET demandes adressées auIMDS. Lorsque l'utilisation des jetons est définie surrequired, les demandes sans jeton valide ou dont le jeton a expiré reçoivent un code 401 - Unauthorized HTTP d'erreur.

    • 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 PUT demande doit inclure un en-tête indiquant la durée de vie (TTL) du jeton, en secondes, jusqu'à un maximum de six heures (21 600 secondes). Le jeton représente une session logique. TTLSpécifie 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 petit nombre de demandes, il peut être plus facile de générer et d'utiliser immédiatement un jeton chaque fois que vous devez accéder auIMDS. 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 pas de limite pratique au nombre de jetons simultanés, chacun représentant sa propre session. IMDSv2est toutefois toujours limité par les limites de IMDS connexion et de limitation normales. Pour de plus amples informations, veuillez consulter Limitation des demandes.

HTTPGETet HEAD les méthodes sont autorisées dans les demandes de métadonnées d'IMDSv2instance. PUTles demandes 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 AWS CLI commande. Par exemple, vous pouvez avoir besoin d’une durée de vie plus élevée pour des raisons de compatibilité en amont avec les services de conteneur s’exécutant sur l’instance. Pour de plus amples informations, veuillez consulter Configurer les options de métadonnées d’instance pour les instances existantes.

Passer à l’utilisation de Service des métadonnées d’instance Version 2

Lors de la migration versIMDSv2, nous vous recommandons d'utiliser les outils et le chemin de transition suivants.

Outils d'aide à la transition vers IMDSv2

Si votre logiciel l'utiliseIMDSv1, utilisez les outils suivants pour vous aider à reconfigurer votre logiciel en vue de son utilisationIMDSv2.

AWS logiciel

Les dernières versions du AWS SDKs support AWS CLI etIMDSv2. Pour les utiliserIMDSv2, assurez-vous que vos EC2 instances disposent des dernières versions de CLI etSDKs. Pour plus d'informations sur la mise à jour duCLI, voir Installation, mise à jour et désinstallation du AWS CLI dans le guide de l'AWS Command Line Interface utilisateur.

Tous les packages logiciels Amazon Linux 2 et Amazon Linux 2023 sont pris en chargeIMDSv2. Dans Amazon Linux 2023, IMDSv1 il est désactivé par défaut.

Pour connaître les AWS SDK versions minimales prises en chargeIMDSv2, consultezUtilisez un support AWS SDK.

IMDSAnalyseur de paquets

L'analyseur de IMDS paquets est un outil open source qui identifie et enregistre les IMDSv1 appels depuis la phase de démarrage de votre instance. Cela peut vous aider à identifier le logiciel qui fait IMDSv1 appel aux EC2 instances, ce qui vous permet de déterminer exactement ce que vous devez mettre à jour pour que vos instances soient prêtes à être utilisées IMDSv2 uniquement. Vous pouvez exécuter IMDS Packet Analyzer à partir d'une ligne de commande ou l'installer en tant que service. Pour plus d'informations, consultez IMDSPacket Analyzer activé GitHub.

CloudWatch

IMDSv2utilise des sessions basées sur des jetons, alors que ce n'est IMDSv1 pas le cas. La MetadataNoToken CloudWatch métrique suit le nombre d'appels au service de métadonnées d'instance (IMDS) utilisésIMDSv1. En ramenant cette métrique à zéro, vous pouvez déterminer si et quand tous vos logiciels ont été mis à niveau pour être utilisésIMDSv2.

Une fois la désactivation terminéeIMDSv1, vous pouvez utiliser la MetadataNoTokenRejected CloudWatch métrique pour suivre le nombre de tentatives et de refus d'un IMDSv1 appel. En suivant cette métrique, vous pouvez déterminer si votre logiciel doit être mis à jour pour être utiliséIMDSv2.

Pour de plus amples informations, veuillez consulter Métriques des instances.

Mises à jour de EC2 APIs et CLIs

Pour les nouvelles instances, vous pouvez utiliser le RunInstancesAPIpour lancer de nouvelles instances nécessitant l'utilisation deIMDSv2. Pour de plus amples informations, veuillez consulter Configurer les options de métadonnées d’instance pour les nouvelles instances.

Pour les instances existantes, vous pouvez utiliser le ModifyInstanceMetadataOptionsAPIpour exiger l'utilisation deIMDSv2. Pour de plus amples informations, veuillez consulter Configurer les options de métadonnées d’instance pour les instances existantes.

Pour exiger l'utilisation de toutes IMDSv2 les nouvelles instances lancées par les groupes Auto Scaling, vos groupes Auto Scaling peuvent utiliser un modèle de lancement ou une configuration de lancement. Lorsque vous créez un modèle de lancement ou une configuration de lancement, vous devez configurer les MetadataOptions paramètres pour exiger l'utilisation deIMDSv2. Le groupe Auto Scaling lance de nouvelles instances à l’aide du nouveau modèle de lancement ou de la nouvelle configuration de lancement, mais les instances existantes ne sont pas affectées. Pour les instances existantes d'un groupe Auto Scaling, vous pouvez utiliser le ModifyInstanceMetadataOptionsAPIpour exiger l'utilisation IMDSv2 sur les instances existantes, ou mettre fin aux instances et le groupe Auto Scaling lancera de nouvelles instances de remplacement avec les paramètres des options de métadonnées d'instance définis dans le nouveau modèle de lancement ou dans la nouvelle configuration de lancement.

Utilisez un système AMI qui se configure IMDSv2 par défaut

Lorsque vous lancez une instance, vous pouvez automatiquement la configurer pour qu'elle soit utilisée IMDSv2 par défaut (le HttpTokens paramètre est défini surrequired) en la lançant avec une AMI instance configurée avec le ImdsSupport paramètre défini surv2.0. Vous pouvez définir le ImdsSupport paramètre sur v2.0 lorsque vous enregistrez le à l'AMIaide de la CLI commande register-image, ou vous pouvez modifier un existant à l'aide AMI de la modify-image-attributeCLIcommande. Pour de plus amples informations, veuillez consulter Configurez le AMI.

IAMpolitiques et SCPs

Vous pouvez utiliser une IAM stratégie ou une politique AWS Organizations de contrôle des services (SCP) pour contrôler les utilisateurs comme suit :

  • Impossible de lancer une instance à l'aide de, RunInstancesAPIsauf si l'instance est configurée pour l'utiliserIMDSv2.

  • Impossible de modifier une instance en cours d'exécution à l'aide du ModifyInstanceMetadataOptionsAPIpour la réactiverIMDSv1.

La IAM politique ou SCP doit contenir les clés de IAM condition suivantes :

  • ec2:MetadataHttpEndpoint

  • ec2:MetadataHttpPutResponseHopLimit

  • ec2:MetadataHttpTokens

Si un paramètre de l'CLIappel API ou ne correspond pas à l'état spécifié dans la politique contenant la clé de condition, l'CLIappel API ou échoue avec une UnauthorizedOperation réponse.

En outre, vous pouvez choisir une couche de protection supplémentaire pour appliquer le passage de IMDSv1 àIMDSv2. Au niveau de la couche de gestion des accès, en ce qui concerne les informations d'identification APIs appelées via le EC2 rôle, vous pouvez utiliser une nouvelle clé de condition soit dans IAM les politiques, soit dans les politiques de contrôle des AWS Organizations services (SCPs). Plus précisément, en utilisant la clé de condition ec2:RoleDelivery avec une valeur de 2.0 dans vos IAM politiques, les API appels effectués avec les informations d'identification de EC2 rôle obtenues auprès de IMDSv1 recevront une UnauthorizedOperation réponse. La même chose peut être réalisée de manière plus générale avec cette condition requise par unSCP. Cela garantit que les informations d'identification fournies via IMDSv1 ne peuvent pas être réellement utilisées pour appeler, APIs car tout API appel ne correspondant pas à la condition spécifiée recevra une UnauthorizedOperation erreur.

Pour des exemples IAM de politiques, voirUtiliser des métadonnées d’instance. Pour plus d'informationsSCPs, voir les politiques de contrôle des services dans le guide de AWS Organizations l'utilisateur.

À l'aide des outils ci-dessus, nous vous recommandons de suivre cette voie pour effectuer la transition versIMDSv2.

Etape 1 : Au départ

Mettez à jour les SDKsCLIs, et vos logiciels qui utilisent les informations d'identification de rôle sur leurs EC2 instances vers des versions compatibles avecIMDSv2. Pour plus d'informations sur la mise à jour duCLI, reportez-vous à la section Mise à niveau vers la AWS CLI dernière version du Guide de AWS Command Line Interface l'utilisateur.

Modifiez ensuite votre logiciel qui accède directement aux métadonnées de l'instance (en d'autres termes, qui n'utilise pas deSDK) à l'aide des IMDSv2 requêtes. Vous pouvez utiliser l'analyseur de IMDS paquets pour identifier le logiciel que vous devez modifier pour utiliser les IMDSv2 demandes.

Étape 2 : suivre la progression de votre transition

Suivez la progression de votre transition à l'aide de la CloudWatch métriqueMetadataNoToken. Cette métrique indique le nombre d'IMDSv1appels adressés IMDS à vos instances. Pour de plus amples informations, veuillez consulter Métriques des instances.

Étape 3 : Quand il n'y a aucune IMDSv1 utilisation

Lorsque la CloudWatch métrique MetadataNoToken enregistre une IMDSv1 utilisation nulle, vos instances sont prêtes à passer entièrement à l'utilisationIMDSv2. A ce stade, voici ce que vous pouvez faire :

  • Compte par défaut

    Vous pouvez le IMDSv2 définir comme obligatoire comme compte par défaut. Lorsqu'une instance est lancée, la configuration de l'instance est automatiquement définie sur la valeur par défaut du compte.

    Pour définir le compte par défaut, procédez comme suit :

    • EC2Console Amazon : sur le EC2 tableau de bord, sous Attributs du compte, Protection des données et sécurité, pour les IMDSvaleurs par défaut, définissez le service de métadonnées de l'instance sur Activé et la version des métadonnées sur V2 uniquement (jeton requis). Pour de plus amples informations, veuillez consulter Définir IMDSv2 comme valeur par défaut pour le compte.

    • AWS CLI: utilisez la modify-instance-metadata-defaultsCLIcommande et spécifiez --http-tokens required et--http-put-response-hop-limit 2.

  • Nouvelles instances

    Lors du lancement d’une nouvelle instance, vous pouvez effectuer les opérations suivantes :

    • EC2Console Amazon : dans l'assistant de lancement de l'instance, définissez les métadonnées accessibles sur Activé et la version des métadonnées sur V2 uniquement (jeton requis). Pour de plus amples informations, veuillez consulter Configurer l’instance au lancement.

    • AWS CLI: utilisez la CLI commande run-instances et spécifiez que IMDSv2 c'est obligatoire.

  • Instances existantes

    Pour les instances existantes, vous pouvez exécuter les opérations suivantes :

    • EC2Console Amazon : sur la page Instances, sélectionnez votre instance, choisissez Actions, Paramètres de l'instance, Modifier les options de métadonnées de l'instance, et pour IMDSv2, choisissez Obligatoire. Pour de plus amples informations, veuillez consulter Exigence d'utilisation d'IMDSv2.

    • AWS CLI: Utilisez la modify-instance-metadata-optionsCLIcommande pour spécifier que seule cette IMDSv2 option doit être utilisée.

    Vous pouvez modifier les options des métadonnées d’instance sur les instances en cours d’exécution, et vous n’avez pas besoin de redémarrer les instances après avoir modifié ces options.

Étape 4 : Vérifiez si vos instances sont transférées vers IMDSv2

Vous pouvez vérifier si certaines instances ne sont pas encore configurées pour nécessiter l'utilisation deIMDSv2, en d'autres termes, si elles IMDSv2 sont toujours configurées commeoptional. Si des instances sont toujours configurées en tant queoptional, vous pouvez modifier les options de métadonnées de l'instance à effectuer IMDSv2 required en répétant l'étape 3 précédente.

Pour filtrer vos instances :

  • EC2Console Amazon : sur la page Instances, filtrez vos instances à l'aide du filtre facultatif IMDSv2 =. Pour plus d’informations sur le filtrage, veuillez consulter la rubrique Filtrer des ressources à l’aide de la console. Vous pouvez également voir si IMDSv2 c'est obligatoire ou facultatif pour chaque instance : dans la fenêtre Préférences, activez l'option IMDSv2pour ajouter la IMDSv2colonne au tableau Instances.

  • AWS CLI: utilisez la CLI commande describe-instances et filtrez parmetadata-options.http-tokens = optional, comme suit :

    aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text

Étape 5 : Lorsque toutes vos instances sont transférées vers IMDSv2

Les touches ec2:MetadataHttpTokensec2:MetadataHttpPutResponseHopLimit,, et de ec2:MetadataHttpEndpoint IAM condition peuvent être utilisées pour contrôler l'utilisation du RunInstancesModifyInstanceMetadataOptionsAPIset correspondantCLIs. Si une politique est créée et qu'un paramètre de l'APIappel ne correspond pas à l'état spécifié dans la politique à l'aide de la clé de condition, l'CLIappel API ou échoue avec une UnauthorizedOperation réponse. Pour des exemples IAM de politiques, voirUtiliser des métadonnées d’instance.

En outre, après la désactivationIMDSv1, vous pouvez utiliser la MetadataNoTokenRejected CloudWatch métrique pour suivre le nombre de tentatives et de refus d'un IMDSv1 appel. Si, après la désactivationIMDSv1, vous avez un logiciel qui ne fonctionne pas correctement et que la MetadataNoTokenRejected métrique enregistre les IMDSv1 appels, il est probable que ce logiciel doive être mis à jour pour être utiliséIMDSv2.

Utilisez un support AWS SDK

Pour être utiliséesIMDSv2, vos EC2 instances doivent utiliser une AWS SDK version compatible avec l'utilisationIMDSv2. Les dernières versions de tous les AWS SDKs supports utilisantIMDSv2.

Important

Nous vous recommandons de vous tenir au courant des dernières SDK versions afin de vous tenir au courant des dernières fonctionnalités, des mises à jour de sécurité et des dépendances sous-jacentes. L'utilisation continue d'une SDK version non prise en charge n'est pas recommandée et se fait à 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 :

Exemples pour IMDSv2

Exécutez les exemples suivants sur votre EC2 instance Amazon pour récupérer les métadonnées de l'instance pourIMDSv2.

Sur les instances Windows, vous pouvez utiliser Windows PowerShell ou installer c URL ou wget. Si vous installez un outil tiers sur une instance Windows, veillez à lire attentivement la documentation qui l'accompagne, car les appels et le résultat 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 compilation des métadonnées de l'instance ne sont pas corrélées aux EC2 API versions d'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.

cURL
[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/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
PowerShell
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/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest

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 contenus dans la réponse, consultezCaté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.

cURL
[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/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-life-cycle instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
PowerShell
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/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-life-cycle instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/

Obtenir les valeurs des éléments de métadonnées

Ces exemples obtiennent les valeurs de certains éléments de métadonnées de haut niveau obtenus dans l'exemple précédent. Ces demandes utilisent le jeton stocké créé à l'aide de la commande de l'exemple précédent. Le jeton ne doit pas avoir expiré.

cURL
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
PowerShell
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com

Obtenir la liste des clés publiques disponibles

Cet exemple permet d’obtenir la liste des clés publiques disponibles.

cURL
[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/public-keys/ 0=my-public-key
PowerShell
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/public-keys/ 0=my-public-key

Montrer les formats pour lesquels une clé publique 0 est disponible

Cet exemple montre les formats pour lesquels une clé publique 0 est disponible.

cURL
[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/public-keys/0/ openssh-key
PowerShell
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/public-keys/0/openssh-key openssh-key

Obtenir la clé publique 0 (au format SSH clé ouverte)

Cet exemple obtient la clé publique 0 (au format Open SSH key).

cURL
[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/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
PowerShell
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/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key

Obtenir l’ID de sous-réseau d’une instance

Cet exemple permet d’obtenir l’ID de sous-réseau pour une instance.

cURL
[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/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7
PowerShell
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/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7

Obtenir les identifications d’une instance

Si l'accès aux balises d'instance dans les métadonnées de l'instance est activé, vous pouvez obtenir les balises d'une instance à partir des métadonnées de l'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 pourIMDSv1.

Sur les instances Windows, vous pouvez utiliser Windows PowerShell ou installer c URL ou wget. Si vous installez un outil tiers sur une instance Windows, veillez à lire attentivement la documentation qui l'accompagne, car les appels et le résultat 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 compilation des métadonnées de l'instance ne sont pas corrélées aux EC2 API versions d'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.

cURL
[ec2-user ~]$ curl http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest

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 contenus dans la réponse, consultezCaté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.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/

Obtenir les valeurs des éléments de métadonnées

Ces exemples obtiennent les valeurs de certains éléments de métadonnées de haut niveau obtenus dans l'exemple précédent.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com

Obtenir la liste des clés publiques disponibles

Cet exemple permet d’obtenir la liste des clés publiques disponibles.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key

Montrer les formats pour lesquels une clé publique 0 est disponible

Cet exemple montre les formats pour lesquels une clé publique 0 est disponible.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/ openssh-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key openssh-key

Obtenir la clé publique 0 (au format SSH clé ouverte)

Cet exemple obtient la clé publique 0 (au format Open SSH key).

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key

Obtenir l’ID de sous-réseau d’une instance

Cet exemple permet d’obtenir l’ID de sous-réseau pour une instance.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7

Obtenir les identifications d’une instance

Si l'accès aux balises d'instance dans les métadonnées de l'instance est activé, vous pouvez obtenir les balises d'une instance à partir des métadonnées de l'instance. Pour de plus amples informations, veuillez consulter Extraire les identifications à partir des métadonnées d’instance.