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à.
Utilizzo del servizio di metadati di istanza per accedere ai metadati dell'istanza
Puoi accedere ai metadati dell'istanza da un'istanza in esecuzione utilizzando uno dei metodi seguenti:
-
Servizio di metadati dell'istanza Versione 2 (IMDSv2): un metodo orientato alla sessione
Per alcuni esempi, consulta Esempi per IMDSv2.
-
Instance Metadata Service Version 1 (IMDSv1): un metodo request/response
Per alcuni esempi, consulta Esempi per IMDSv1.
Per impostazione predefinita, puoi utilizzare IMDSv1 o IMDSv2 oppure entrambi.
È possibile configurare l'Instance Metadata Service (IMDS) su ciascuna istanza in modo che accetti solo chiamate IMDSv2, il che causerà il fallimento delle chiamate IMDSv1. Per informazioni su come configurare l'istanza per l'utilizzo di IMDSv2, consulta Configurazione delle opzioni del servizio di metadati di istanza.
Le intestazioni PUT o GET sono esclusive di IMDSv2. Se queste intestazioni sono presenti nella richiesta, la richiesta è destinata a IMDSv2. Se non sono presenti intestazioni, si presume che la richiesta sia destinata a IMDSv1.
Per un'analisi approfondita di IMDSv2, consulta Aggiungere protezione in profondità contro firewall aperti, proxy inversi e vulnerabilità SSRF con miglioramenti al servizio di metadati dell'istanza EC2
Argomenti
Funzionamento di Servizio di metadati dell'istanza Versione 2
IMDSv2 utilizza richieste orientate alla sessione. Con richieste orientate alla sessione, puoi creare un token di sessione che definisce la durata della sessione, che può essere compresa tra un minimo di un secondo e un massimo di sei ore. Durante la specifica della durata, puoi utilizzare lo stesso token di sessione per le richieste successive. Al termine della durata specificata, è necessario creare un nuovo token di sessione da utilizzare per richieste future.
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 Nitro-based istanze di una sottorete (dual stack o solo IPv6). IPv6-supported
L'esempio seguente utilizza uno script della shell e IMDSv2 per recuperare gli elementi di metadati dell'istanza di livello superiore. Ogni esempio:
-
Crea un token di sessione della durata di sei ore (21.600 secondi) utilizzando la richiesta
PUT -
Memorizza l'intestazione del token di sessione in una variabile denominata
TOKEN(istanze Linux) oppuretoken(istanze Windows) -
Richiede gli elementi di metadati di livello superiore utilizzando il token
È possibile eseguire due comandi separati o combinarli.
Comandi separati
Innanzitutto, generare un token utilizzando il comando riportato di seguito.
[ec2-user ~]$TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
Quindi, utilizzare il token per generare elementi di metadati di primo livello utilizzando il seguente comando.
[ec2-user ~]$curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Comandi combinati
È possibile memorizzare il token e combinare i comandi. L'esempio seguente combina i due comandi precedenti e memorizza l'intestazione del token di sessione in una variabile denominata TOKEN.
Nota
Se si verifica un errore nella creazione del token, invece di un token valido nella variabile viene memorizzato un messaggio di errore e il comando avrà esito negativo.
[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/
Dopo aver creato un token, puoi riutilizzarlo finché non scade. Nel comando di esempio seguente, che ottiene l’ID dell’AMI utilizzata per avviare l’istanza, viene riutilizzato il token archiviato memorizzato in $TOKEN nell’esempio precedente.
[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/
Dopo aver creato un token, puoi riutilizzarlo finché non scade. Nel comando di esempio seguente, che ottiene l’ID dell’AMI utilizzata per avviare l’istanza, viene riutilizzato il token archiviato memorizzato in $token nell’esempio precedente.
PS C:\>Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
Quando utilizzi IMDSv2 per richiedere i metadati dell'istanza, la richiesta deve includere quanto segue:
-
Utilizza una richiesta
PUTper inizializzare una sessione al servizio di metadati dell'istanza. La richiestaPUTrestituisce un token che deve essere incluso nelle richiesteGETsuccessive al servizio di metadati dell'istanza. Il token è obbligatorio per accedere ai metadati utilizzando IMDSv2. -
Includi il token in tutte le richieste
GETinviate all'IMDS. Quando l'uso del token è impostato surequired, le richieste senza una token valido o con un token scaduto ricevono un codice di errore HTTP401 - Unauthorized.-
Il token è una chiave specifica dell'istanza. Il token non è valido su altre istanze EC2 e verrà rifiutato se si tenta di utilizzarlo all'esterno dell'istanza su cui è stato generato.
-
La richiesta
PUTdeve includere un'intestazione che specifica il Time To Live (TTL) per il token, in secondi, fino a un massimo di sei ore (21.600 secondi). Il token rappresenta una sessione logica. Il TTL specifica la durata di validità del token e, pertanto, la durata della sessione. -
Dopo che un token scade, per continuare ad accedere ai metadati dell'istanza, è necessario creare una nuova sessione utilizzando un altro
PUT. -
Puoi scegliere di riutilizzare un token o creare un nuovo token con ogni richiesta. Per un piccolo numero di richieste, potrebbe essere più semplice generare e utilizzare immediatamente un token ogni volta che devi accedere al servizio di metadati dell'istanza (IMDS). Per maggior efficienza, tuttavia, puoi specificare una durata maggiore per il token e riutilizzarlo, piuttosto che dover riscrivere una richiesta
PUTogni volta che devi richiedere metadati dell'istanza. Non esiste un limite effettivo al numero di token simultanei, ciascuno dei quali rappresenta la propria sessione. Tuttavia, IMDSv2 è ancora vincolato ai normali limiti di connessione e limitazione (della larghezza di banda della rete) di IMDS. Per ulteriori informazioni, consulta Throttling delle query.
-
HTTP GET e HEAD metodi sono consentiti nelle richieste di metadati delle istanze IMDSv2. PUTle richieste vengono rifiutate se contengono un'intestazione. X-Forwarded-For
Per impostazione predefinita, la risposta alle richieste PUT dispone di un limite di hop della risposta (time-to-live) di 1 a livello del protocollo IP. Se hai bisogno di un limite di hop maggiore, puoi modificarlo usando il comando https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html AWS CLI modify-instance-metadata-options. Ad esempio, potrebbe essere necessario un limite di hop maggiore per la compatibilità con le versioni precedenti dei servizi container in esecuzione sull'istanza. Per ulteriori informazioni, consulta Modifica delle opzioni dei metadati dell'istanza per le istanze esistenti.
Usa un supporto AWS SDK
Per utilizzare IMDSv2, le istanze EC2 devono utilizzare una versione AWS SDK che supporti l'uso di IMDSv2. Le versioni più recenti di tutti gli SDK supportano l'utilizzo di IMDSv2. AWS
Importante
Ti consigliamo di rimanere al passo con i nuovi rilasci degli SDK per poter usufruire delle funzionalità, degli aggiornamenti di sicurezza e delle dipendenze sottostanti più recenti. L'uso continuato di una versione SDK non supportata è sconsigliato ed è a tua discrezione. Per ulteriori informazioni, consulta la pagina Policy di manutenzione degli SDK e degli strumenti AWS nella Guida di riferimento degli SDK e degli strumenti AWS .
Le seguenti sono le versioni minime che supportano l'uso di IMDSv2:
-
AWS CLI
- 1.16.289 -
AWS Tools for Windows PowerShell
– 4,0.1.0 -
AWS SDK per .NET
- 3.3.634.1 -
AWS SDK per C++
- 1.7.229 -
AWS SDK per Go
- 1.25.38 -
AWS SDK per Java
- 1.11.678 -
AWS SDK for Java 2.x
- 2.10.21 -
AWS SDK per Kotlin
- 1.1.4 -
AWS SDK per PHP
- 3.147.7 -
AWS SDK per Python (Boto3)
- 1.12.6 -
AWS SDK per Ruby
- 3.79.0
Esempi per IMDSv2
Esegui i seguenti esempi sull'istanza Amazon EC2 per recuperare i metadati dell'istanza per IMDSv2.
Nelle istanze Windows, puoi usare Windows PowerShell oppure puoi installare cURL o wget. Se installi uno strumento di terze parti su un'istanza Windows, assicurati di leggere attentamente la relativa documentazione, dal momento che le chiamate e l'output potrebbero essere diversi da quanto documentato in questa sede.
Esempi
Recupero delle versioni disponibili dei metadati dell'istanza
Questo esempio recupera le versioni disponibili dei metadati dell'istanza. Ogni versione fa riferimento a una build dei metadati dell'istanza quando sono state rilasciate nuove categorie di metadati dell'istanza. Le versioni di build dei metadati dell'istanza non sono correlate alle versioni dell'API di Amazon EC2. Le versioni precedenti sono disponibili in presenza di script basati sulla struttura e sulle informazioni presenti in una versione precedente.
Recupero degli elementi di metadati di primo livello
Questo esempio recupera gli elementi di metadati di primo livello. Per ulteriori informazioni sugli elementi nella risposta, consulta Categorie di metadati dell'istanza.
Tieni presente che i tag sono inclusi in questo output solo se hai consentito l'accesso. Per ulteriori informazioni, consulta Abilita l’accesso ai tag nei metadati dell’istanza.
Ottenimento dei valori per gli elementi di metadati
Gli esempi seguenti consentono di recuperare i valori di alcuni degli elementi di metadati di primo livello che sono stati ottenuti nell'esempio precedente. Queste richieste utilizzano il token memorizzato che è stato creato utilizzando il comando nell'esempio precedente. Il token non deve essere scaduto.
Recupero dell'elenco di chiavi pubbliche disponibili
Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.
Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.
Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).
Recupero dell'ID della sottorete per un'istanza
In questo esempio viene recuperato l'ID della sottorete per un'istanza.
Ottenere i tag dell'istanza per un'istanza
Se l'accesso ai tag dell'istanza nei metadati dell'istanza è abilitato, puoi ottenere i tag per un'istanza dai metadati dell'istanza. Per ulteriori informazioni, consulta Recupero dei tag dai metadati dell'istanza.
Esempi per IMDSv1
Esegui i seguenti esempi sull'istanza Amazon EC2 per recuperare i metadati dell'istanza per IMDSv1.
Nelle istanze Windows, puoi usare Windows PowerShell oppure puoi installare cURL o wget. Se installi uno strumento di terze parti su un'istanza Windows, assicurati di leggere attentamente la relativa documentazione, dal momento che le chiamate e l'output potrebbero essere diversi da quanto documentato in questa sede.
Esempi
Recupero delle versioni disponibili dei metadati dell'istanza
Questo esempio recupera le versioni disponibili dei metadati dell'istanza. Ogni versione fa riferimento a una build dei metadati dell'istanza quando sono state rilasciate nuove categorie di metadati dell'istanza. Le versioni di build dei metadati dell'istanza non sono correlate alle versioni dell'API di Amazon EC2. Le versioni precedenti sono disponibili in presenza di script basati sulla struttura e sulle informazioni presenti in una versione precedente.
Recupero degli elementi di metadati di primo livello
Questo esempio recupera gli elementi di metadati di primo livello. Per ulteriori informazioni sugli elementi nella risposta, consulta Categorie di metadati dell'istanza.
Tieni presente che i tag sono inclusi in questo output solo se hai consentito l'accesso. Per ulteriori informazioni, consulta Abilita l’accesso ai tag nei metadati dell’istanza.
Ottenimento dei valori per gli elementi di metadati
Questi esempi consentono di recuperare i valori di alcuni degli elementi di metadati di primo livello che sono stati ottenuti nell'esempio precedente.
Recupero dell'elenco di chiavi pubbliche disponibili
Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.
Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.
Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).
Recupero dell'ID della sottorete per un'istanza
In questo esempio viene recuperato l'ID della sottorete per un'istanza.
Ottenere i tag dell'istanza per un'istanza
Se l'accesso ai tag dell'istanza nei metadati dell'istanza è abilitato, puoi ottenere i tag per un'istanza dai metadati dell'istanza. Per ulteriori informazioni, consulta Recupero dei tag dai metadati dell'istanza.