Accéder aux métadonnées d'une EC2 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.

Accéder aux métadonnées d'une EC2 instance

Vous pouvez accéder aux métadonnées de l'EC2instance depuis l'instance elle-même ou depuis la EC2 consoleAPI,SDKs, ou le AWS CLI. Pour obtenir les paramètres de métadonnées d'instance actuels d'une instance à partir de la console ou de la ligne de commande, consultezInterroger les options de métadonnées d’instance pour les instances existantes.

Vous pouvez également modifier les données utilisateur pour les instances dotées d'un volume EBS racine. L’instance doit être à l’état arrêté. Pour obtenir des instructions de la console, consultez Mise à jour des données utilisateur d'instance. Pour un exemple de Linux utilisant le AWS CLI, voir modify-instance-attribute. Pour un exemple de Windows utilisant les outils pour Windows PowerShell, voirDonnées utilisateur et Outils pour Windows PowerShell.

Note

Les HTTP demandes utilisées pour récupérer les métadonnées de l'instance et les données utilisateur ne vous sont pas facturées.

Considérations concernant l'accès aux métadonnées des instances

Pour éviter les problèmes liés à la récupération des métadonnées d'instance, tenez compte des points suivants.

Format de commande

Le format de commande est différent selon que vous utilisez le service de métadonnées d'instance version 1 (IMDSv1) ou le service de métadonnées d'instance version 2IMDSv2. Par défaut, vous pouvez utiliser les deux versions du service de métadonnées d'instance. Pour demander l'utilisation deIMDSv2, voirUtiliser le service de métadonnées d'instance pour accéder aux métadonnées de l'instance.

(IMDSv2) Si IMDSv2 nécessaire, IMDSv1 ne fonctionne pas

Pour vérifier si IMDSv2 c'est nécessaire, sélectionnez l'instance pour en afficher les détails. La valeur pour IMDSv2est obligatoire (vous devez utiliserIMDSv2) ou facultative (vous pouvez utiliser l'une IMDSv2 ou l'autreIMDSv1).

(IMDSv2) Utilisation /latest/api/token pour récupérer le jeton

L'envoi de PUT requêtes vers un chemin spécifique à une version, par exemple/2021-03-23/api/token, entraîne le renvoi par le service de métadonnées 403 erreurs interdites. Ce comportement est prévu.

IPv6soutien

Pour récupérer les métadonnées de l'instance à l'aide de l'IPv6adresse, assurez-vous d'activer et d'utiliser à la [fd00:ec2::254] place de l'IPv4adresse. L'instance doit être une instance basée sur Nitro lancée dans un sous-réseau compatible. IPv6

(Windows) Création d'une version personnalisée à AMIs l'aide de Windows Sysprep

Pour que cela IMDS fonctionne lorsque vous lancez une instance à partir d'un système Windows personnaliséAMI, AMI il doit s'agir d'une image standardisée créée avec Windows Sysprep. Sinon, cela IMDS ne fonctionnera pas. Pour plus d'informations, voirCréez un Amazon à EC2 AMI l'aide de Windows Sysprep.

Dans un environnement de conteneur, définissez la limite de sauts sur 2

L' AWS SDKsutilisateur IMDSv2 appelle par défaut. Si l'IMDSv2appel ne reçoit aucune réponse, il SDK tente à nouveau l'appel et, en cas d'échec, utiliseIMDSv1. Cela peut entraîner un retard, en particulier dans un environnement de conteneurs. Dans un environnement de conteneur, si la limite de sauts est de 1, la IMDSv2 réponse n'est pas renvoyée car l'accès au conteneur est considéré comme un saut réseau supplémentaire. Pour éviter le processus de repli IMDSv1 et le retard qui en résulte, dans un environnement de conteneur, nous vous recommandons de définir la limite de sauts à 2. Pour de plus amples informations, veuillez consulter Configurer les options du service de métadonnées d'instance.

Version des métadonnées

Pour éviter d'avoir à mettre à jour votre code chaque fois qu'Amazon EC2 publie une nouvelle version de métadonnées d'instance, nous vous recommandons d'utiliser latest le chemin et non le numéro de version.

Limite de paquets par seconde (PPS)

Il existe une limite de 1024 paquets par seconde (PPS) pour les services qui utilisent des adresses lien-local. Cette limite inclut l'ensemble des DNSrequêtes Route 53 Resolver, des demandes du service de métadonnées d'instance (IMDS), des demandes du protocole horaire réseau Amazon Time Service (NTP) et des demandes du service de licences Windows (pour les instances basées sur Microsoft Windows).

Considérations supplémentaires relatives à l'accès aux données utilisateur
  • Les données utilisateur sont traitées comme des données opaques : ce que vous spécifiez est ce que vous obtenez en retour lors de la récupération. C'est à l'instance d'interpréter et d'agir sur les données utilisateur.

  • Les données utilisateur doivent être codées en base64. En fonction de l'outil ou de l'outil SDK que vous utilisez, le codage base64 peut être effectué pour vous. Par exemple :

    • La EC2 console Amazon peut effectuer le codage en base64 pour vous ou accepter les entrées codées en base64.

    • AWS CLI la version 2 effectue le codage en base64 des paramètres binaires pour vous par défaut. AWS CLI la version 1 effectue le codage en base64 du --user-data paramètre pour vous.

    • AWS SDK for Python (Boto3) Procède au codage base64 du UserData paramètre pour vous.

  • Les données d’utilisateur sont limitées à 16 Ko en format brut, avant qu’elles soient encodées en base64. La taille d’une chaîne de longueur n après l’encodage base64 est ceil(n/3)*4.

  • Les données utilisateur doivent être décodées en base64 lorsque vous les récupérez. Si vous les récupérez à l’aide des métadonnées d’instance ou de la console, les données sont décodées automatiquement.

  • Si vous arrêtez une instance, modifiez ses données utilisateur et démarrez l’instance, les données utilisateur mises à jour ne sont pas exécutées automatiquement lorsque vous démarrez l’instance. Avec les instances Windows, vous pouvez configurer les paramètres de manière à ce que les scripts de données utilisateur mis à jour soient exécutés une fois lorsque vous démarrez l'instance ou chaque fois que vous redémarrez ou démarrez l'instance.

  • Les données utilisateur sont un attribut d’instance. Si vous créez une AMI à partir d'une instance, les données utilisateur de l'instance ne sont pas incluses dans leAMI.

Accédez aux métadonnées de l'instance depuis une EC2 instance

Les métadonnées de votre instance étant disponibles depuis votre instance en cours d'exécution, vous n'avez pas besoin d'utiliser la EC2 console Amazon ou le AWS CLI. Cela peut être utile lorsque vous écrivez des scripts à exécuter depuis votre instance. Par exemple, vous pouvez accéder à l’adresse IP locale de votre instance à partir des métadonnées d’instance afin de gérer une connexion à une application externe.

Tous les éléments suivants sont considérés comme des métadonnées d'instance, mais ils sont accessibles de différentes manières. Sélectionnez l'onglet qui représente le type de métadonnées d'instance auquel vous souhaitez accéder pour obtenir plus d'informations.

Metadata

Les propriétés des métadonnées de l'instance sont divisées en catégories. Pour obtenir une description de chaque catégorie de métadonnées d’instance, consultez Catégories de métadonnées d’instance.

Pour accéder aux propriétés des métadonnées de l'instance depuis une instance en cours d'exécution, récupérez les données à partir du IPv4 ou IPv6URIs. Ces adresses IP sont des adresses locales de lien et ne sont valides qu'à partir de l'instance. Pour de plus amples informations, veuillez consulter Adresses lien-local.

IPv4

http://169.254.169.254/latest/meta-data/

IPv6

http://[fd00:ec2::254]/latest/meta-data/
Dynamic data

Pour récupérer des données dynamiques depuis une instance en cours d'exécution, utilisez l'une des méthodes suivantesURIs.

IPv4

http://169.254.169.254/latest/dynamic/

IPv6

http://[fd00:ec2::254]/latest/dynamic/
Exemples : Accès avec c URL

Les exemples suivants permettent cURL de récupérer les catégories d'identité d'instance de haut niveau.

IMDSv2

[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/dynamic/instance-identity/ rsa2048 pkcs7 document signature dsa2048

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/dynamic/instance-identity/ rsa2048 pkcs7 document signature dsa2048
Exemples : Accès avec PowerShell

Les exemples suivants permettent PowerShell de récupérer les catégories d'identité d'instance de haut niveau.

IMDSv2

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/dynamic/instance-identity/ document rsa2048 pkcs7 signature

IMDSv1

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/dynamic/instance-identity/ document rsa2048 pkcs7 signature

Pour plus d’informations sur les données dynamiques et pour des exemples sur la façon de les récupérer, consultez Documents d'identité d'instance pour les EC2 instances Amazon.

User data

Pour récupérer les données utilisateur d'une instance, utilisez l'une des méthodes suivantesURIs. Pour récupérer les données utilisateur à l'aide de l'IPv6adresse, vous devez l'activer, et l'instance doit être une instance basée sur Nitro dans un sous-réseau compatible. IPv6

IPv4

http://169.254.169.254/latest/user-data

IPv6

http://[fd00:ec2::254]/latest/user-data

Une demande de données utilisateur renvoie les données telles qu’elles sont (type de contenu application/octet-stream). Si l'instance ne possède aucune donnée utilisateur, la demande renvoie 404 - Not Found.

Exemples : Accès avec c URL pour récupérer du texte séparé par des virgules

Les exemples suivants permettent de cURL récupérer des données utilisateur spécifiées sous forme de texte séparé par des virgules.

IMDSv2

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/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

curl http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
Exemples : Accès avec PowerShell pour récupérer du texte séparé par des virgules

Les exemples suivants permettent de PowerShell récupérer des données utilisateur spécifiées sous forme de texte séparé par des virgules.

IMDSv2

[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} ` -Method PUT -Uri http://169.254.169.254/latest/api/token} -Method GET -uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
Exemples : Accès avec c URL pour récupérer un script

Les exemples suivants permettent cURL de récupérer les données utilisateur spécifiées sous forme de script.

IMDSv2

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/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on

IMDSv1

curl http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on
Exemples : Accès avec PowerShell pour récupérer un script

Les exemples suivants permettent PowerShell de récupérer les données utilisateur spécifiées sous forme de script.

IMDSv2

[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

IMDSv1

Invoke-RestMethod -uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

Interroger les options de métadonnées d’instance pour les instances existantes

Vous pouvez interroger les options de métadonnées d’instance pour vos instances existantes en utilisant l’une des méthodes suivantes.

Console
Pour interroger les options de métadonnées d’instance pour une instance existante à l’aide de la console
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Instances.

  3. Sélectionnez votre instance.

  4. Choisissez Actions, Paramètres de l’instance, puis Modifier les options des métadonnées d’instance.

  5. Passez en revue les options de métadonnées d’instance actuelles dans la boîte de dialogue Modifier les options de métadonnées d’instance.

AWS CLI
Pour interroger les options de métadonnées d'instance pour une instance existante à l'aide du AWS CLI

Utilisez la commande describe-instancesCLI.

aws ec2 describe-instances \ --instance-id i-1234567898abcdef0 \ --query 'Reservations[].Instances[].MetadataOptions'
PowerShell
Pour interroger les options de métadonnées d'instance pour une instance existante à l'aide des outils de PowerShell

Utilisez l'Get-EC2Instanceapplet de commande.

(Get-EC2Instance ` -InstanceId i-1234567898abcdef0).Instances.MetadataOptions

Réponses et messages d’erreur

Toutes les métadonnées de l'instance sont renvoyées sous forme de texte (type de HTTP contenutext/plain).

Une demande pour une ressource de métadonnées spécifique renvoie la valeur appropriée ou un code 404 - Not Found HTTP d'erreur si la ressource n'est pas disponible.

Une demande de ressource de métadonnées générales (qui URI se termine par un/) renvoie une liste des ressources disponibles ou un code 404 - Not Found HTTP d'erreur en l'absence d'une telle ressource. Les éléments de la liste se trouvent sur des lignes séparées, terminées par des fils de ligne (ASCII10).

Pour les demandes effectuées à l'aide de la version 2 du service de métadonnées d'instance, les codes HTTP d'erreur suivants peuvent être renvoyés :

  • 400 - Missing or Invalid Parameters – La demande PUT n’est pas valide.

  • 401 - Unauthorized – La demande GET utilise un jeton non valide. Il est recommandé dans ce cas de générer un nouveau jeton.

  • 403 - Forbidden— La demande n'est pas autorisée ou IMDS est désactivée.

  • 503— La demande n'a pas pu être traitée. Réitérez la requête .

Limitation des demandes

Nous limitons les requêtes IMDS au cas par cas, et nous limitons le nombre de connexions simultanées entre une instance et le. IMDS

Si vous utilisez le IMDS pour récupérer des informations d'identification de AWS sécurité, évitez de demander des informations d'identification lors de chaque transaction ou simultanément à partir d'un grand nombre de threads ou de processus, car cela pourrait entraîner un ralentissement. Nous vous conseillons plutôt de placer les informations d’identification en cache jusqu’à ce que leur date d’expiration approche. Pour plus d'informations sur IAM le rôle et les informations d'identification de sécurité associées au rôle, consultezExtraire les informations d’identification de sécurité à partir des métadonnées d’instance.

Si vous êtes limité lors de l'accès auIMDS, réessayez votre requête avec une stratégie de réduction exponentielle.