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à.
Puoi accedere ai metadati dell'istanza da un'istanza in esecuzione utilizzando uno dei metodi seguenti:
-
Instance Metadata Service Version 2 (IMDSv2): un metodo orientato alla sessione
Per alcuni esempi, consulta Esempi per IMDSv2.
-
Instance Metadata Service Version 1 (IMDSv1): un metodo di richiesta/risposta
Per alcuni esempi, consulta Esempi per IMDSv1.
Per impostazione predefinita, è possibile utilizzare uno IMDSv1 o IMDSv2 entrambi.
È possibile configurare l'Instance Metadata Service (IMDS) su ogni istanza in modo che sia necessario utilizzarlo dal codice locale o dagli utenti. IMDSv2 Quando si specifica che IMDSv2 deve essere utilizzato, IMDSv1 non funziona più. Per informazioni su come configurare l'istanza da utilizzare IMDSv2, consultaConfigurazione delle opzioni del servizio di metadati di istanza.
Le GET
intestazioni PUT
or 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. IMDSv1
Per un'analisi dettagliata di IMDSv2, consulta Aggiungere una difesa approfondita contro i firewall aperti, i reverse proxy e le vulnerabilità SSRF con
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
Gli esempi in questa sezione utilizzano l' IPv4 indirizzo dell'Instance Metadata Service (IMDS):. 169.254.169.254
Se stai recuperando i metadati dell'istanza per EC2 le istanze oltre l' IPv6 indirizzo, assicurati di abilitare e utilizzare invece l'indirizzo:. IPv6 [fd00:ec2::254]
L' IPv6 indirizzo dell'IMDS è compatibile con i comandi. IMDSv2 L' IPv6 indirizzo è accessibile solo sulle istanze basate su Nitro in una sottorete IPv6 supportata (dual stack o solo). IPv6
Gli esempi seguenti utilizzano uno script di shell e recuperano gli elementi di metadati dell' IMDSv2 istanza di primo livello. 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 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 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 si utilizza IMDSv2 per richiedere i metadati dell'istanza, la richiesta deve includere quanto segue:
-
Utilizza una richiesta
PUT
per inizializzare una sessione al servizio di metadati dell'istanza. La richiestaPUT
restituisce un token che deve essere incluso nelle richiesteGET
successive al servizio di metadati dell'istanza. Il token è obbligatorio per accedere ai metadati utilizzando IMDSv2. -
Includi il token in tutte le richieste
GET
inviate 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 EC2 istanze e verrà rifiutato se si tenta di utilizzarlo al di fuori dell'istanza su cui è stato generato.
-
La richiesta
PUT
deve 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
PUT
ogni volta che devi richiedere metadati dell'istanza. Non esiste un limite pratico al numero di token simultanei, ognuno dei quali rappresenta la propria sessione. IMDSv2 è, tuttavia, ancora vincolato dai normali limiti di connessione e limitazione IMDS. Per ulteriori informazioni, consulta Throttling delle query.
-
Nei metodi HTTP GET
e HEAD
sono consentite richieste dei metadati dell'istanza IMDSv2. Le richieste PUT
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 regolarlo usando il comando. modify-instance-metadata-options
Utilizzo di un SDK AWS
supportato
Per essere utilizzate IMDSv2, le EC2 istanze devono utilizzare una versione AWS SDK che supporti l'utilizzo. IMDSv2 Le versioni più recenti di tutto il AWS SDKs supporto che utilizza. IMDSv2
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 politica di manutenzione di AWS SDKs and Tools nella AWS SDKs and Tools Reference Guide.
Di seguito sono riportate le versioni minime che supportano l'utilizzo di IMDSv2:
-
AWS CLI
- 1.16.289 -
AWS Tools for Windows PowerShell
– 4,0.1.0 -
AWS SDK for .NET
- 3.3.634.1 -
AWS SDK for C++
- 1.7.229 -
AWS SDK per Go
- 1.25.38 -
AWS SDK per Go v2
— 0.19.0 -
AWS SDK for Java
- 1.11.678 -
AWS SDK for Java 2.x
- 2.10.21 -
AWS SDK
per in Node.js — 2.722.0 JavaScript -
SDK AWS for Kotlin
— 1.1.4 -
AWS SDK for PHP
- 3.147.7 -
AWS SDK per Python (Botocore
) — 1.13.25 -
AWS SDK for Python (Boto3)
- 1.12.6 -
AWS SDK for Ruby
- 3.79.0
Esempi per IMDSv2
Esegui i seguenti esempi sulla tua EC2 istanza Amazon per recuperare i metadati dell'istanza. 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' EC2 API Amazon. Le versioni precedenti sono disponibili in presenza di script basati sulla struttura e sulle informazioni presenti in una versione precedente.
[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/
1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
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 Per consentire l'accesso ai tag nei metadati delle istanze.
[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/
ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-life-cycle instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
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.
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
Recupero dell'elenco di chiavi pubbliche disponibili
Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.
[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/public-keys/
0=my-public-key
Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.
[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/public-keys/0/
openssh-key
Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).
[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/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
Recupero dell'ID della sottorete per un'istanza
In questo esempio viene recuperato l'ID della sottorete per un'istanza.
[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/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
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 sulla tua EC2 istanza Amazon per recuperare i metadati dell'istanza. 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' EC2 API Amazon. Le versioni precedenti sono disponibili in presenza di script basati sulla struttura e sulle informazioni presenti in una versione precedente.
[ec2-user ~]$
curl http://169.254.169.254/
1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
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 Per consentire l'accesso ai tag nei metadati delle istanze.
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/
ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
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.
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
Recupero dell'elenco di chiavi pubbliche disponibili
Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/public-keys/0/
openssh-key
Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
Recupero dell'ID della sottorete per un'istanza
In questo esempio viene recuperato l'ID della sottorete per un'istanza.
[ec2-user ~]$
curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
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.