Accedere ai metadati dell'istanza per un'EC2istanza - 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à.

Accedere ai metadati dell'istanza per un'EC2istanza

È possibile accedere ai metadati dell'EC2istanza dall'interno dell'istanza stessa o dalla EC2 console APISDKs, oppure dal. AWS CLI Per ottenere le impostazioni correnti dei metadati dell'istanza per un'istanza dalla console o dalla riga di comando, consulta. Esegui una query sulle opzioni dei metadati dell'istanza per le istanze esistenti

Puoi anche modificare i dati utente per le istanze con un volume EBS root. L'istanza deve essere nello stato stopped (arrestato). Per le indicazioni per la console, consulta Aggiorna i dati utente dell'istanza. Per un esempio di Linux che utilizza il AWS CLI, vedi modify-instance-attribute. Per un esempio di Windows che utilizza gli strumenti per Windows PowerShell, vedereDati utente e strumenti per Windows PowerShell.

Nota

Considerazioni sull'accesso ai metadati delle istanze

Per evitare problemi con il recupero dei metadati delle istanze, considerate quanto segue.

Formato del comando

Il formato del comando è diverso, a seconda che si utilizzi Instance Metadata Service Version 1 (IMDSv1) o Instance Metadata Service Version 2. IMDSv2 Per impostazione predefinita, puoi utilizzare entrambe le versioni di Instance Metadata Service. Per richiedere l'uso diIMDSv2, vedereUtilizzate l'Instance Metadata Service per accedere ai metadati dell'istanza.

(IMDSv2) Se IMDSv2 richiesto, IMDSv1 non funziona

Per verificare se IMDSv2 è necessario, selezionate l'istanza per visualizzarne i dettagli. Il valore di IMDSv2è Obbligatorio (è necessario utilizzareIMDSv2) o Facoltativo (è possibile utilizzare uno dei due IMDSv2 oIMDSv1).

(IMDSv2) Utilizza /latest/api/token per recuperare il token

L'invio di PUT richieste a qualsiasi percorso specifico della versione, ad esempio/2021-03-23/api/token, fa sì che il servizio di metadati restituisca 403 errori proibiti. Questo è il comportamento previsto.

IPv6supporto

Per recuperare i metadati dell'istanza utilizzando l'IPv6indirizzo, assicurati di abilitare e utilizzare [fd00:ec2::254] al posto dell'IPv4indirizzo. L'istanza deve essere creata sul sistema AWS Nitro e avviata in una sottorete che supporti. IPv6

(Windows) Crea contenuti personalizzati AMIs utilizzando Windows Sysprep

Per garantire che IMDS funzioni quando si avvia un'istanza da un sistema Windows personalizzatoAMI, AMI deve essere un'immagine standardizzata creata con Windows Sysprep. Altrimenti, IMDS non funzionerà. Per ulteriori informazioni, vedereCreare un Amazon EC2 AMI utilizzando Windows Sysprep.

In un ambiente contenitore, imposta il limite di hop su 2

L' AWS SDKsuso IMDSv2 chiama per impostazione predefinita. Se la IMDSv2 chiamata non riceve alcuna risposta, SDK riprova la chiamata e, se il risultato persiste, utilizza. IMDSv1 Ciò può comportare un ritardo, soprattutto in un ambiente del container. In un ambiente contenitore, se il limite di hop è 1, la IMDSv2 risposta non viene restituita perché l'accesso al contenitore è considerato un hop di rete aggiuntivo. Per evitare il processo di ritorno a IMDSv1 e il conseguente ritardo, in un ambiente container consigliamo di impostare il limite di hop su 2. Per ulteriori informazioni, consulta Configura le opzioni del servizio Instance Metadata.

Versione dei metadati

Per evitare di dover aggiornare il codice ogni volta che Amazon EC2 rilascia una nuova build di metadati di istanza, ti consigliamo di utilizzare latest nel percorso e non il numero di versione.

Considerazioni aggiuntive sull'accesso ai dati degli utenti
  • I dati utente vengono trattati come dati opachi: ciò che si specifica è ciò che si ottiene al momento del recupero. Spetta all'istanza interpretare e agire sui dati dell'utente.

  • I dati utente devono essere codificati con base64. A seconda dello strumento o dello strumento SDK che stai utilizzando, la codifica base64 potrebbe essere eseguita automaticamente. Per esempio:

    • La EC2 console Amazon può eseguire la codifica base64 per te o accettare input con codifica base64.

    • AWS CLI la versione 2 esegue automaticamente la codifica in base64 dei parametri binari. AWS CLI la versione 1 esegue la codifica base64 del parametro per voi. --user-data

    • AWS SDK for Python (Boto3) Esegue la codifica base64 del parametro per voi. UserData

  • I dati dell'utente sono limitati a 16 KB, in formato raw, prima della codifica base 64. La dimensione di una stringa di lunghezza n dopo la codifica base64 è ceil(n/3)*4.

  • I dati utente devono essere decodificati con base64 quando li recuperi. Se recuperi i dati utilizzando i metadati dell'istanza o la console, vengono decodificati automaticamente.

  • Se arresti un'istanza, ne modifichi i dati utente e quindi avvii l'istanza, i dati utente aggiornati non vengono eseguiti automaticamente quando si avvia l'istanza. Con le istanze Windows, è possibile configurare le impostazioni in modo che gli script di dati utente aggiornati vengano eseguiti una volta all'avvio dell'istanza o ogni volta che si riavvia o si avvia l'istanza.

  • I dati utente sono un attributo dell'istanza. Se ne crei un'istanza AMI da un'istanza, i dati utente dell'istanza non vengono inclusi in. AMI

Accedere ai metadati dell'istanza dall'interno di un'EC2istanza

Poiché i metadati dell'istanza sono disponibili dall'istanza in esecuzione, non è necessario utilizzare la EC2 console Amazon o il AWS CLI. Ciò può risultare utile quando sta scrivendo script da eseguire dall'istanza. Ad esempio, puoi accedere all'indirizzo IP locale dell'istanza dai metadati dell'istanza per gestire una connessione a un'applicazione esterna.

Tutti i seguenti sono considerati metadati di istanza, ma vi si accede in modi diversi. Seleziona la scheda che rappresenta il tipo di metadati dell'istanza a cui desideri accedere per visualizzare ulteriori informazioni.

Metadata

Le proprietà dei metadati delle istanze sono suddivise in categorie. Per una descrizione di ciascuna categoria di metadati dell'istanza, consulta Categorie di metadati dell'istanza.

Per accedere alle proprietà dei metadati dell'istanza dall'interno di un'istanza in esecuzione, recupera i dati dal seguente IPv4 o. IPv6 URIs Questi indirizzi IP sono indirizzi locali del collegamento e sono validi solo per l'istanza. Per ulteriori informazioni, consulta Indirizzi link local.

IPv4

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

IPv6

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

Per recuperare dati dinamici da un'istanza in esecuzione, utilizzate uno dei seguenti metodi. URIs

IPv4

http://169.254.169.254/latest/dynamic/

IPv6

http://[fd00:ec2::254]/latest/dynamic/
Esempi: Accesso con c URL

Gli esempi seguenti vengono utilizzati cURL per recuperare le categorie di identità delle istanze di alto livello.

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
Esempi: Accesso con PowerShell

Gli esempi seguenti vengono utilizzati PowerShell per recuperare le categorie di identità delle istanze di alto livello.

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

Per ulteriori informazioni sui dati dinamici e per esempi di come recuperarli, consulta Documenti di identità delle istanze per le EC2 istanze Amazon.

User data

Per recuperare i dati utente da un'istanza, utilizzate uno dei seguenti metodi. URIs Per recuperare i dati utente utilizzando l'IPv6indirizzo, è necessario abilitarlo e l'istanza deve essere un'istanza creata sul sistema AWS Nitro in una sottorete che supporti. IPv6

IPv4

http://169.254.169.254/latest/user-data

IPv6

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

Una richiesta di dati utente restituisce i dati nel formato originale (tipo di contenuto application/octet-stream). Se l'istanza non dispone di dati utente, la richiesta restituisce 404 - Not Found.

Esempi: Accedi con c per recuperare testo separato URL da virgole

Gli esempi seguenti vengono utilizzati cURL per recuperare i dati utente specificati come testo separato da virgole.

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,,,
Esempi: Access with per recuperare testo separato da virgole PowerShell

Gli esempi seguenti vengono utilizzati PowerShell per recuperare i dati utente specificati come testo separato da virgole.

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,,,
Esempi: Accedi con c URL per recuperare uno script

Gli esempi seguenti vengono utilizzati cURL per recuperare i dati utente specificati come 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
Esempi: Access with PowerShell per recuperare uno script

Gli esempi seguenti vengono utilizzati PowerShell per recuperare i dati utente specificati come 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>

Esegui una query sulle opzioni dei metadati dell'istanza per le istanze esistenti

Puoi eseguire una query sulle opzioni dei metadati dell'istanza per le istanze esistenti utilizzando uno dei seguenti metodi.

Console
Esecuzione di query sulle opzioni dei metadati dell'istanza per un'istanza esistente tramite la console
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, seleziona Instances (Istanze).

  3. Selezionare l'istanza.

  4. Seleziona Operazioni, Impostazioni istanza, Modifica opzioni dei metadati dell'istanza.

  5. Verifica le opzioni correnti dei metadati dell'istanza nella finestra di dialogo Modifica delle opzioni dei metadati dell'istanza.

AWS CLI
Per interrogare le opzioni dei metadati dell'istanza per un'istanza esistente utilizzando il AWS CLI

Utilizzate il comando CLIdescribe-instances.

aws ec2 describe-instances \ --instance-id i-1234567898abcdef0 \ --query 'Reservations[].Instances[].MetadataOptions'
PowerShell
Per interrogare le opzioni dei metadati dell'istanza per un'istanza esistente, utilizzare gli strumenti per PowerShell

Utilizzare il Get-EC2Instancecmdlet.

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

Risposte e messaggi di errore

Tutti i metadati dell'istanza vengono restituiti come testo (tipo di HTTP contenuto). text/plain

Una richiesta per una risorsa di metadati specifica restituisce il valore appropriato o un codice di 404 - Not Found HTTP errore se la risorsa non è disponibile.

Una richiesta per una risorsa di metadati generale (URItermina con/) restituisce un elenco di risorse disponibili o un codice di 404 - Not Found HTTP errore se tale risorsa non esiste. Gli elementi dell'elenco si trovano su righe separate, terminate da feed di riga (ASCII10).

Per le richieste effettuate utilizzando Instance Metadata Service versione 2, è possibile restituire i seguenti codici HTTP di errore:

  • 400 - Missing or Invalid Parameters – La richiesta PUT non è valida.

  • 401 - Unauthorized – La richiesta GET utilizza un token non valido. L'operazione consigliata è quella di generare un nuovo token.

  • 403 - Forbidden— La richiesta non è consentita o IMDS è disattivata.

  • 503— La richiesta non può essere completata. Riprova la richiesta .

Throttling delle query

Limitiamo le query a ogni istanza e poniamo limiti al numero di connessioni simultanee da un'istanza alla. IMDS IMDS

Se utilizzi il IMDS per recuperare le credenziali di AWS sicurezza, evita di richiedere le credenziali durante ogni transazione o contemporaneamente a un numero elevato di thread o processi, poiché ciò potrebbe comportare una limitazione. Consigliamo invece di memorizzare le credenziali nella cache fino all'approssimarsi della relativa data di scadenza. Per ulteriori informazioni sul IAM ruolo e sulle credenziali di sicurezza associate al ruolo, consulta. Recupero delle credenziali di sicurezza dai metadati delle istanze

Se non riesci ad accedere aIMDS, riprova a eseguire la query con una strategia di backoff esponenziale.