Identifiez chaque instance lancée en une seule demande - 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.

Identifiez chaque instance lancée en une seule demande

Cet exemple montre comment vous pouvez utiliser à la fois les données utilisateur et les métadonnées des instances pour configurer vos EC2 instances Amazon.

Note

Les exemples de cette section utilisent l'IPv4adresse du IMDS :169.254.169.254. Si vous récupérez des métadonnées d'instance pour EC2 des instances via l'IPv6adresse, assurez-vous d'activer et d'utiliser plutôt l'IPv6adresse :[fd00:ec2::254]. L'IPv6adresse du IMDS est compatible avec IMDSv2 les commandes. L'IPv6adresse n'est accessible que sur les instances basées sur AWS Nitro System et dans un sous-réseau IPv6 pris en charge (double pile ou IPv6 uniquement).

Alice souhaite lancer quatre instances de sa base de données préféréeAMI, la première faisant office d'instance d'origine et les trois autres de répliques. Lorsqu’elle les lance, elle souhaite ajouter des données utilisateur portant sur la stratégie de réplication pour chaque réplica. Elle sait que ces données seront disponibles pour les quatre instances. Elle a donc besoin de structurer les données utilisateur de sorte que chaque instance reconnaisse quelles parties la concernent. Pour ce faire, elle peut utiliser la valeur de métadonnées d’instance ami-launch-index qui sera unique pour chaque instance. Si elle démarre plus d’une instance à la fois, la valeur ami-launch-index indique l’ordre dans lequel les instances ont été lancées. La valeur de la première instance lancée est 0.

Voici les données utilisateur construites par Alice.

replicate-every=1min | replicate-every=5min | replicate-every=10min

La donnée replicate-every=1min définit la configuration du premier réplica, replicate-every=5min définit la configuration du deuxième réplica, et ainsi de suite. Alice décide de fournir ces données sous forme de ASCII chaîne avec un symbole en forme de tube (|) délimitant les données pour les différentes instances.

Alice lance quatre instances à l’aide de la commande run-instances, en spécifiant les données utilisateur.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --count 4 \ --instance-type t2.micro \ --user-data "replicate-every=1min | replicate-every=5min | replicate-every=10min"

Après leur lancement, toutes les instances ont une copie des données utilisateur et des métadonnées communes présentées ici :

  • AMIIdentifiant : ami-0abcdef1234567890

  • ID de réservation : r-1234567890abcabc0

  • Clés publiques : aucune

  • Nom du groupe de sécurité : par défaut

  • Type d’instance : t2.micro

Cependant, chaque instance possède des métadonnées uniques, comme indiqué dans les tableaux suivants.

Metadonnées Valeur
instance-id i-1234567890abcdef0
ami-launch-index 0
public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
public-ipv4 67.202.51.223
local-hostname ip-10-251-50-12.ec2.internal
local-ipv4 10.251.50.35
Metadonnées Valeur
instance-id i-0598c7d356eba48d7
ami-launch-index 1
public-hostname ec2-67-202-51-224.compute-1.amazonaws.com
public-ipv4 67.202.51.224
local-hostname ip-10-251-50-36.ec2.internal
local-ipv4 10.251.50.36
Metadonnées Valeur
instance-id i-0ee992212549ce0e7
ami-launch-index 2
public-hostname ec2-67-202-51-225.compute-1.amazonaws.com
public-ipv4 67.202.51.225
local-hostname ip-10-251-50-37.ec2.internal
local-ipv4 10.251.50.37
Metadonnées Valeur
instance-id i-1234567890abcdef0
ami-launch-index 3
public-hostname ec2-67-202-51-226.compute-1.amazonaws.com
public-ipv4 67.202.51.226
local-hostname ip-10-251-50-38.ec2.internal
local-ipv4 10.251.50.38

Alice peut utiliser la valeur ami-launch-index pour déterminer quelle portion des données utilisateur est applicable à une instance particulière.

  1. Elle se connecte à l’une des instances et récupère ami-launch-index pour cette instance afin de s’assurer qu’il s’agit de l’un des réplicas :

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/meta-data/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-launch-index 2

    Pour les étapes suivantes, les IMDSv2 demandes utilisent le jeton stocké dans la IMDSv2 commande précédente, en supposant que le jeton n'a pas expiré.

    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-launch-index 2
  2. Elle enregistre les données ami-launch-index sous forme de variable.

    IMDSv2
    [ec2-user ~]$ ami_launch_index=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-launch-index`
    IMDSv1
    [ec2-user ~]$ ami_launch_index=`curl http://169.254.169.254/latest/meta-data/ami-launch-index`
  3. Elle enregistre les données utilisateur sous forme de variable.

    IMDSv2
    [ec2-user ~]$ user_data=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data`
    IMDSv1
    [ec2-user ~]$ user_data=`curl http://169.254.169.254/latest/user-data`
  4. Enfin, Alice utilise la commande cut pour extraire la portion de données utilisateur applicable à cette instance.

    IMDSv2
    [ec2-user ~]$ echo $user_data | cut -d"|" -f"$ami_launch_index" replicate-every=5min
    IMDSv1
    [ec2-user ~]$ echo $user_data | cut -d"|" -f"$ami_launch_index" replicate-every=5min