Esempio Linux: valore dell'indice di lancio AMI - Amazon Elastic Compute Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio Linux: valore dell'indice di lancio AMI

Questo esempio dimostra come è possibile utilizzare sia i dati utente che i metadati delle istanze per configurare le istanze Linux.

Nota

Negli esempi riportati in questa sezione viene utilizzato l'indirizzo IPv4 del servizio di metadati dell'istanza (IMDS): 169.254.169.254. Se si recuperano i metadati per le istanze EC2 tramite l'indirizzo IPv6, accertarsi invece di abilitare e utilizzare l'indirizzo IPv6: [fd00:ec2::254]. L'indirizzo IPv6 del servizio di metadati dell'istanza (IMDS) è compatibile con i comandi IMDSv2. L'indirizzo IPv6 è accessibile solo sulle istanze create sul sistema AWS Nitro e in una sottorete supportata da IPv6 (dual stack o solo IPv6).

Alice vuole avviare quattro istanze dell'AMI del suo database preferito, dove la prima istanza funge da istanza originale e le altre tre fungono da repliche. Al momento dell'avvio vuole aggiungere i dati utente relativi alla strategia di replica per ciascuna replica. Consapevole del fatto che questi dati saranno disponibili per tutte e quattro le istanze, deve strutturare i dati utente in modo da consentire a ciascuna istanza di riconoscere le parti valide. A tale scopo, utilizza il valore ami-launch-index dei metadati dell'istanza, che sarà univoco per ogni istanza. Se hai avviato più di un'istanza contemporaneamente, il ami-launch-indexindica l'ordine in base al quale sono state avviate le istanze. Il valore della prima istanza avviata è 0.

Di seguito sono descritti i dati utente strutturati da Alice.

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

I dati replicate-every=1min definiscono la configurazione della prima replica, replicate-every=5min definisce la configurazione della seconda replica e così via. Alice decide di specificare questi dati come stringa ASCII con una barra verticale (|) per delimitare i dati per le singole istanze.

Alice avvia le quattro istanze utilizzando il comando run-instances e specificando i dati utente.

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"

Dopo l'avvio, le istanze includono una copia dei dati utente e i metadati comuni riportati di seguito:

  • ID AMI: ami-0abcdef1234567890

  • ID prenotazione: r-1234567890abcabc0

  • Chiavi pubbliche: nessuna

  • Nome del gruppo di sicurezza: nome di default

  • Tipo di istanza: t2.micro

Tuttavia, ogni istanza ha metadati unici, come illustrato nelle tabelle seguenti.

Metadati Valore
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
Metadati Valore
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
Metadati Valore
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
Metadati Valore
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 può utilizzare il valore ami-launch-index per determinare la parte di dati utente validi per un'istanza specifica.

  1. Collega una delle istanze e recupera il valore ami-launch-index per tale istanza per assicurarsi che sia una delle repliche:

    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

    Per le fasi seguenti, le richieste IMDSv2 utilizzano il token memorizzato dal comando IMDSv2 precedente, presupponendo che non sia scaduto.

    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-launch-index 2
  2. Salva il valore ami-launch-index come una variabile.

    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. Salva i dati utente come una variabile.

    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. Alice utilizza infine il comando cut per estrarre la parte di dati utente valida per l'istanza specifica.

    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