

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 dei metadati dell'istanza per gestire l'istanza EC2
<a name="ec2-instance-metadata"></a>

I *metadati dell'istanza* sono dati relativi all'istanza che puoi utilizzare per configurare o gestire un'istanza in esecuzione. I metadati dell'istanza includono quanto segue:

**Proprietà dei metadati dell'istanza**  
I metadati dell'istanza sono suddivisi in [categorie](#instancedata-data-categories), ad esempio, nome host, eventi e gruppi di sicurezza.

**Dati dinamici**  
I dati dinamici sono metadati generati all'avvio dell'istanza, ad esempio un documento di identità dell'istanza. Per ulteriori informazioni, consulta [Categorie dei dati dinamici](#dynamic-data-categories).

**Dati utente**  
Puoi anche utilizzare i metadati dell'istanza per accedere ai *dati utente* da te specificati quando un'istanza viene avviata. Ad esempio, puoi specificare i parametri per configurare l'istanza o includere un semplice script. È inoltre possibile creare dati generici AMIs e utilizzare dati utente per modificare i file di configurazione forniti al momento dell'avvio. Ad esempio, se esegui server Web per delle piccole attività commerciali, tutte potranno utilizzare la stessa AMI generica e recuperare i loro contenuti dal bucket Amazon S3 specificato nei dati utente all'avvio. Per aggiungere un nuovo cliente in qualsiasi momento, crea un bucket per il cliente, aggiungi il relativo contenuto e avvia l'AMI con il nome bucket univoco fornito al codice nel dati utente. Se avvii più di un'istanza alla volta utilizzando la stessa chiamata `RunInstances`, i dati utente sono disponibili per tutte le istanze presenti all'interno della prenotazione. Ogni istanza che fa parte della stessa prenotazione dispone di un numero `ami-launch-index` univoco che consente di scrivere il codice che controlla ciò che fa l'istanza. Ad esempio, il primo host potrebbe scegliere se stesso come nodo originale in un cluster. Per un esempio di avvio dell'AMI dettagliato, consulta [Identificazione di ciascuna istanza lanciata in una singola richiesta](AMI-launch-index-examples.md).

**Importante**  
Anche se puoi accedere ai metadati dell'istanza e ai dati utente solo dall'interno dell'istanza stessa, i dati non sono protetti mediante metodi di autenticazione o crittografia. Chiunque disponga dell'accesso diretto all'istanza, e potenzialmente qualsiasi software in esecuzione sull'istanza, può visualizzare i propri metadati. Pertanto, è opportuno non memorizzare dati sensibili, ad esempio password o chiavi di crittografia di lunga durata, come dati utente.

**Topics**
+ [

## Categorie di metadati dell'istanza
](#instancedata-data-categories)
+ [

## Categorie dei dati dinamici
](#dynamic-data-categories)
+ [

# Accesso ai metadati dell'istanza per un'istanza EC2
](instancedata-data-retrieval.md)
+ [

# Configurazione delle opzioni del servizio di metadati di istanza
](configuring-instance-metadata-options.md)
+ [

# Esegui i comandi quando avvii un'istanza EC2 con l'input dei dati utente
](user-data.md)
+ [

# Identificazione di ciascuna istanza lanciata in una singola richiesta
](AMI-launch-index-examples.md)

## Categorie di metadati dell'istanza
<a name="instancedata-data-categories"></a>

Le proprietà dei metadati dell'istanza sono suddivise in categorie. Per recuperare le proprietà dei metadati dell'istanza, specifica la categoria nella richiesta e i metadati verranno restituiti nella risposta.

Quando vengono rilasciate nuove categorie, viene creata una nuova build di metadati di istanza con un nuovo numero di versione. Nella tabella che segue, la colonna **Version when category was released** (Versione in cui è stata rilasciata la categoria) specifica la versione di build quando è stata rilasciata una categoria di metadati dell'istanza. Per evitare di dover aggiornare il codice ogni volta che Amazon EC2 rilascia una nuova build di metadati dell'istanza, utilizza `latest` invece del numero di versione nelle richieste di metadati. Per ulteriori informazioni, consulta [Recupero delle versioni disponibili dei metadati dell'istanza](configuring-instance-metadata-service.md#instance-metadata-ex-1).

Quando Amazon EC2 rilascia una nuova categoria di metadati dell'istanza, i metadati dell'istanza per la nuova categoria potrebbero non essere disponibili per le istanze esistenti. Con le [istanze basate sul Sistema Nitro](instance-types.md#instance-hypervisor-type) è possibile recuperare i metadati dell'istanza solo per le categorie disponibili al momento dell'avvio. Per le istanze con l'hypervisor Xen, è possibile [arrestare e avviare](Stop_Start.md) l'istanza per aggiornare le categorie disponibili.

Nella tabella seguente sono elencate le categorie di metadati dell'istanza. Alcuni dei nomi delle categorie includono segnaposti per i dati univoci dell'istanza. Ad esempio, *mac* rappresenta l'indirizzo MAC per l'interfaccia di rete. Quando richiami i metadati dell'istanza, devi sostituire i segnaposti con i valori effettivi.


| Categoria | Description | Versione in cui è stata rilasciata la categoria | 
| --- | --- | --- | 
| ami-id  | ID dell'AMI utilizzata per avviare l'istanza. | 1.0 | 
| ami-launch-index  | Se si avviano più istanze utilizzando la stessa chiamata RunInstances, questo valore indica l'ordine di avvio per ciascuna istanza. Il valore della prima istanza avviata è 0. Se avvii istanze utilizzando il dimensionamento automatico o il parco EC2, questo valore è sempre 0. | 1.0 | 
| ami-manifest-path  | Percorso del file manifest dell'AMI in Amazon S3. Se hai utilizzato un'AMI supportata da Amazon EBS per avviare l'istanza, il valore restituito è unknown. | 1.0 | 
| ancestor-ami-ids  | L'AMI IDs di tutte le istanze che sono state raggruppate per creare questa AMI. Questo valore esiste solo se il file manifest dell'AMI contiene una chiave ancestor-amis. | 10-10-2007 | 
| autoscaling/target-lifecycle-state |  Valore che mostra lo stato del ciclo di vita di Auto Scaling di destinazione a cui sta passando un'istanza di Auto Scaling. Presente quando l'istanza passa a uno degli stati del ciclo di vita di destinazione dopo il 10 marzo 2022. Valori possibili: `Detached` \$1 `InService` \$1 `Standby` \$1 `Terminated` \$1 `Warmed:Hibernated` \$1 `Warmed:Running` \$1 `Warmed:Stopped` \$1 `Warmed:Terminated`. Consulta la sezione [Recupero dello stato del ciclo di vita tramite i metadati dell'istanza](https://docs.aws.amazon.com/autoscaling/ec2/userguide/retrieving-target-lifecycle-state-through-imds.html) nella *Guida per l'utente di Amazon EC2 Auto Scaling*.   | 2021-07-15 | 
| block-device-mapping/ami | Il dispositivo virtuale che contiene il file system. root/boot  | 15-12-2007 | 
| block-device-mapping/ebsN  | Dispositivi virtuali associati a qualsiasi volume Amazon EBS. I volumi Amazon EBS sono disponibili solo nei metadati se erano presenti al momento dell'avvio o quando l'istanza è stata avviata per l'ultima volta. N indica il valore di indice del volume Amazon EBS (ad esempio ebs1 o ebs2). | 15-12-2007 | 
| block-device-mapping/ephemeralN  | I dispositivi virtuali per tutti i volumi di archiviazione diversi dalle NVMe istanze. La N indica l'indice di ogni volume. Il numero di volumi instance store nella mappatura del dispositivo a blocchi potrebbero non corrispondere al numero effettivo dei volumi instance store per l'istanza. Il tipo di istanza determina il numero di volumi instance store disponibili per un'istanza. Se il numero di volumi instance store in una mappatura dei dispositivi a blocchi supera il numero disponibile per un'istanza, i volumi instance store aggiuntivi vengono ignorati. | 15-12-2007 | 
| block-device-mapping/root  | Dispositivi o partizioni virtuali associati ai dispositivi o alle partizioni radice sul dispositivo virtuale, dove il file system radice (/ o C:) è associato all'istanza specificata. | 15-12-2007 | 
| block-device-mapping/swap  | Dispositivi virtuali associati a swap. Non sempre presenti. | 15-12-2007 | 
| events/maintenance/history | Se sono presenti eventi di manutenzione completati o cancellati per l'istanza, contiene una stringa JSON con informazioni sugli eventi. | 17-08-2018 | 
| events/maintenance/scheduled | Se sono presenti eventi di manutenzione attivi per l'istanza, contiene una stringa JSON con informazioni sugli eventi. Per ulteriori informazioni, consulta [Visualizzare gli eventi pianificati che influiscono sulle istanze Amazon EC2](viewing_scheduled_events.md). | 17-08-2018 | 
| events/recommendations/rebalance | Ora approssimativa, in UTC, in cui viene emessa la notifica della raccomandazione di ribilanciamento dell'istanza EC2 per l'istanza. Di seguito è riportato un esempio dei metadati per questa categoria: \$1"noticeTime": "2020-11-05T08:22:00Z"\$1. Questa categoria è disponibile solo dopo che la notifica è stata emessa. Per ulteriori informazioni, consulta [Raccomandazioni per il ribilanciamento delle istanze EC2](rebalance-recommendations.md). | 2020-10-27 | 
| hostname | Se l'istanza EC2 utilizza la denominazione basata su IP (IPBN), questo è il nome host DNS IPv4 privato dell'istanza. Se l'istanza EC2 utilizza la denominazione basata su risorse (RBN), questo è l'RBN. Se sono presenti più interfacce di rete, fa riferimento al dispositivo eth0 (il dispositivo per il quale il numero di dispositivo è 0). Per ulteriori informazioni su IPBN e RBN, consultare [Hostname e domini delle istanze EC2](ec2-instance-naming.md). | 1.0 | 
|  iam/info  | Se all'istanza è associato un ruolo IAM, contiene informazioni sull'ultima volta in cui il profilo dell'istanza è stato aggiornato, inclusa la LastUpdated data dell'istanza, e. InstanceProfileArn InstanceProfileId In caso contrario, non presente. | 12-01-2012 | 
|  iam/security-credentials/role-name  | Se all'istanza è associato un ruolo IAM, role-name è il nome del ruolo e role-name contiene le credenziali di sicurezza temporanee associate al ruolo (per ulteriori informazioni, consulta[Recupero delle credenziali di sicurezza dai metadati delle istanze](instance-metadata-security-credentials.md)). In caso contrario, non presente. | 12-01-2012 | 
| identity-credentials/ec2/info | Informazioni sulle credenziali in identity-credentials/ec2/security-credentials/ec2-instance. | 23/05/2018 | 
| identity-credentials/ec2/security-credentials/ec2-instance | Credenziali per il ruolo di identità dell'istanza che consente al software sull'istanza di AWS identificarsi per supportare funzionalità come EC2 Instance Connect e AWS Systems Manager Default Host Management Configuration. Queste credenziali non hanno policy associate, quindi non dispongono di autorizzazioni AWS API aggiuntive oltre all'identificazione dell'istanza e della funzionalità. AWS Per ulteriori informazioni, consulta [Ruoli di identità dell'istanza per le istanze Amazon EC2](iam-roles-for-amazon-ec2.md#ec2-instance-identity-roles). | 23/05/2018 | 
| instance-action | Comunica all'istanza la necessità di un riavvio in preparazione del processo di raggruppamento. Valori validi: none \$1 shutdown \$1 bundle-pending. | 01-09-2008 | 
| instance-id | ID dell'istanza corrente. | 1.0 | 
| instance-life-cycle | L'opzione di acquisto di questa istanza. Per ulteriori informazioni, consulta [Opzioni di fatturazione e acquisto di Amazon EC2](instance-purchasing-options.md). | 01-10-2019 | 
| instance-type  | Tipo di istanza. Per ulteriori informazioni, consulta [Tipi di istanza Amazon EC2](instance-types.md). | 29-08-2007 | 
| ipv6  | L' IPv6 indirizzo dell'istanza. Nei casi in cui sono presenti più interfacce di rete, ciò si riferisce all'interfaccia di rete del dispositivo eth0 (il dispositivo il cui numero del dispositivo è 0) e al primo IPv6 indirizzo assegnato. Se non esiste alcun IPv6 indirizzo sull'interfaccia di rete [0], questo elemento non è impostato e genera una risposta HTTP 404. | 2021-01-03 | 
|  kernel-id  | ID del kernel avviato con questa istanza, se applicabile. | 01-02-2008 | 
|  local-hostname  | Se sono presenti più interfacce di rete, fa riferimento al dispositivo eth0 (il dispositivo per il quale il numero di dispositivo è 0). Se l'istanza EC2 utilizza la denominazione basata su IP (IPBN), questo è il nome host DNS IPv4 privato dell'istanza. Se l'istanza EC2 utilizza la denominazione basata su risorse (RBN), questo è l'RBN. Per ulteriori informazioni sulla denominazione delle istanze IPBN, RBN ed EC2, consultare [Hostname e domini delle istanze EC2](ec2-instance-naming.md). | 19-01-2007 | 
|  local-ipv4  | L'indirizzo privato dell'istanza IPv4 . Se sono presenti più interfacce di rete, fa riferimento al dispositivo eth0 (il dispositivo per il quale il numero di dispositivo è 0). Se si tratta di una IPv6 sola istanza, questo elemento non è impostato e restituisce una risposta HTTP 404. | 1.0 | 
|  mac  | Indirizzo MAC (Media Access Control) dell'istanza. Se sono presenti più interfacce di rete, fa riferimento al dispositivo eth0 (il dispositivo per il quale il numero di dispositivo è 0). | 01-01-2011 | 
| metrics/vhostmd | Non più disponibile. | 2011-05-01 | 
|  network/interfaces/macs/mac/device-number  | Numero di dispositivo univoco associato all'interfaccia specificata. Il numero di dispositivo corrisponde al nome del dispositivo, ad esempio device-number pari a 2 indica il dispositivo eth2. Questa categoria corrisponde ai campi DeviceIndex e device-index utilizzati dall'API Amazon EC2 e ai comandi EC2 per AWS CLI. | 01-01-2011 | 
|  network/interfaces/macs/mac/interface-id  | L'ID dell'interfaccia di rete. | 01-01-2011 | 
|  network/interfaces/macs/mac/ipv4-associations/public-ip  |  IPv4 Gli indirizzi privati associati a ciascun indirizzo IP pubblico e assegnati a tale interfaccia. | 01-01-2011 | 
| network/interfaces/macs/mac/ipv6s | Gli IPv6 indirizzi assegnati all'interfaccia. | 30-06-2016 | 
| network/interfaces/macs/mac/ipv6-prefix | Il IPv6 prefisso assegnato all'interfaccia di rete. |  | 
|  network/interfaces/macs/mac/local-hostname  |  Il nome host IPv4 DNS privato dell'istanza. Se sono presenti più interfacce di rete, fa riferimento al dispositivo eth0 (il dispositivo per il quale il numero di dispositivo è 0). Se si tratta di un'istanza di IPv6 sola istanza, questo è il nome basato sulla risorsa. Per ulteriori informazioni su IPBN e RBN, consultare [Hostname e domini delle istanze EC2](ec2-instance-naming.md).  | 19-01-2007 | 
|  network/interfaces/macs/mac/local-ipv4s  | Gli IPv4 indirizzi privati associati all'interfaccia. Se si tratta di una IPv6 sola interfaccia di rete, questo elemento non è impostato e restituisce una risposta HTTP 404. | 01-01-2011 | 
|  network/interfaces/macs/mac/mac  | Indirizzo MAC dell'istanza. | 01-01-2011 | 
|  network/interfaces/macs/mac/network-card  | L'indice della scheda di rete. Alcuni tipi di istanza supportano più schede di rete. | 2020-11-01 | 
| network/interfaces/macs/mac/owner-id  | ID del proprietario dell'interfaccia di rete. In ambienti con più interfacce, un'interfaccia può essere collegata mediante una terza parte, ad esempio Elastic Load Balancing. Il traffico di un'interfaccia viene sempre addebitato al proprietario dell'interfaccia. | 01-01-2011 | 
|  network/interfaces/macs/mac/public-hostname  | Il DNS pubblico dell'interfaccia ()IPv4. Questa categoria viene restituita solo se l'attributo enableDnsHostnames è impostato su true. Per ulteriori informazioni, consulta [Attributi DNS per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) nella Guida per l'utente di Amazon VPC. Se l'istanza ha solo un IPv6 indirizzo pubblico e nessun IPv4 indirizzo pubblico, questo elemento non è impostato e restituisce una risposta HTTP 404. |  01-01-2011 | 
|  network/interfaces/macs/mac/public-ipv4s  | L'indirizzo IP pubblico o gli indirizzi IP elastici associati all'interfaccia. Potrebbero esserci più IPv4 indirizzi su un'istanza.  | 01-01-2011 | 
| network/interfaces/macs/mac/security-groups  | Gruppi di sicurezza a cui appartiene l'interfaccia di rete. | 01-01-2011 | 
|  network/interfaces/macs/mac/security-group-ids  | I gruppi IDs di sicurezza a cui appartiene l'interfaccia di rete. | 01-01-2011 | 
|  network/interfaces/macs/mac/subnet-id  | ID della sottorete in cui si trova l'interfaccia di rete. | 01-01-2011 | 
|  network/interfaces/macs/mac/subnet-ipv4-cidr-block  | Il blocco IPv4 CIDR della sottorete in cui risiede l'interfaccia. | 01-01-2011 | 
| network/interfaces/macs/mac/subnet-ipv6-cidr-blocks  | Il blocco IPv6 CIDR della sottorete in cui risiede l'interfaccia. | 30-06-2016  | 
|  network/interfaces/macs/mac/vpc-id  | ID del VPC in cui si trova l'interfaccia di rete. | 01-01-2011 | 
| network/interfaces/macs/mac/vpc-ipv4-cidr-block | Il blocco IPv4 CIDR principale del VPC. | 01-01-2011 | 
| network/interfaces/macs/mac/vpc-ipv4-cidr-blocks | I blocchi IPv4 CIDR per il VPC. | 30-06-2016  | 
| network/interfaces/macs/mac/vpc-ipv6-cidr-blocks | Il blocco IPv6 CIDR del VPC in cui risiede l'interfaccia. | 30-06-2016  | 
|  placement/availability-zone | zona di disponibilità in cui l'istanza è stata avviata. | 01-02-2008 | 
|  placement/availability-zone-id | ID dell'area di disponibilità statica in cui viene avviata l'istanza. L'ID dell'area di disponibilità è coerente tra gli account. Tuttavia, potrebbe essere diverso dall'area di disponibilità, che può variare in base all'account. | 01-10-2019 | 
|  placement/group-name  | Nome del gruppo di posizionamento in cui viene avviata l'istanza. | 2020-08-24 | 
|  placement/host-id  | ID dell'host su cui viene avviata l'istanza. Applicabile solo a Host dedicati. | 2020-08-24 | 
|  placement/partition-number  | Il numero della partizione in cui viene avviata l'istanza. | 2020-08-24 | 
|  placement/region  | La AWS regione in cui viene lanciata l'istanza. | 2020-08-24 | 
|  product-codes  | Marketplace AWS eventuali codici di prodotto associati all'istanza.  | 01-03-2007 | 
|  public-hostname  | Il DNS pubblico dell'istanza (IPv4). Questa categoria viene restituita solo se l'attributo enableDnsHostnames è impostato su true. Per ulteriori informazioni, consulta [Attributi DNS per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) nella Guida per l'utente di Amazon VPC. Se l'istanza ha solo un IPv6 indirizzo pubblico e nessun IPv4 indirizzo pubblico, questo elemento non è impostato e genera una risposta HTTP 404. | 19-01-2007 | 
|  public-ipv4  | L' IPv4 indirizzo pubblico. Se un indirizzo IP elastico è associato all'istanza, il valore restituito è l'indirizzo IP elastico. | 19-01-2007 | 
|  public-keys/0/openssh-key  | Chiave pubblica. Disponibile solo se viene specificato in fase di avvio dell'istanza. | 1.0 | 
|  ramdisk-id  | ID del disco RAM specificato in fase di avvio, se applicabile. | 10-10-2007 | 
|  reservation-id  | ID della prenotazione. | 1.0 | 
|  security-groups  |  Nomi dei gruppi di sicurezza applicati all'istanza. Dopo l'avvio puoi modificare i gruppi di sicurezza delle istanze. Tali modifiche si riflettono qui e innetwork/interfaces/macs/**mac**/security-groups.  | 1.0 | 
|  services/domain  |  Il dominio delle risorse per la Regione AWS .  | 25-2-2014 | 
|  services/partition  |  Partizione in cui si trova la risorsa. Per AWS le regioni standard, la partizione è`aws`. Se sono presenti risorse in altre partizioni, la partizione è `aws-partitionname`. Ad esempio, la partizione per le risorse nella regione Cina (Pechino) è `aws-cn`.  | 20-10-2015 | 
|  spot/instance-action  |  Operazione (ibernazione, arresto o terminazione) e orario indicativo, in UTC, in cui si verificherà l'operazione. Questo elemento è presente solo se l'istanza spot è stata contrassegnata per essere ibernata, arrestata o terminata. Per ulteriori informazioni, consulta [instance-action](spot-instance-termination-notices.md#instance-action-metadata).  | 15-11-2016 | 
|  spot/termination-time  |  Ora approssimativa, in formato UTC, in cui il sistema operativo dell'istanza spot riceverà il segnale di arresto. Questo elemento è presente e contiene un valore orario, ad esempio 2015-01-05T18:02:00Z, solo se l'istanza spot è stata contrassegnata per essere interrotta da Amazon EC2. L'elemento "termination-time" non è impostato su un'ora se termini manualmente l'istanza spot. Per ulteriori informazioni, consulta [termination-time](spot-instance-termination-notices.md#termination-time-metadata).  | 05-11-2014 | 
| system | Il tipo di virtualizzazione sottostante (hypervisor) dell’istanza. | 24-09-2022 | 
| tags/instance | I tag istanza associati all'istanza. Disponibile solo se permetti esplicitamente l'accesso ai tag nei metadati dell'istanza. Per ulteriori informazioni, consulta [Abilita l’accesso ai tag nei metadati dell’istanza](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS). | 2021-03-23 | 

## Categorie dei dati dinamici
<a name="dynamic-data-categories"></a>

Nella tabella seguente sono elencate le categorie dei dati dinamici.


| Categoria | Description | Versione in cui è stata rilasciata la categoria | 
| --- | --- | --- | 
| fws/instance-monitoring  | Valore che indica se il cliente ha abilitato il monitoraggio dettagliato in un minuto. CloudWatch Valori validi: enabled \$1 disabled | 04-04-2009 | 
| instance-identity/document  | JSON contenente gli attributi dell'istanza, ad esempio ID istanza, indirizzo IP privato e così via Per informazioni, consulta [Documenti di identità delle istanze per le EC2 istanze Amazon](instance-identity-documents.md).  | 04-04-2009 | 
| instance-identity/pkcs7  | Utilizzato per verificare l'autenticità e i contenuti del documento in base alla firma. Per informazioni, consulta [Documenti di identità delle istanze per le EC2 istanze Amazon](instance-identity-documents.md).  | 04-04-2009 | 
| instance-identity/signature  | Dati che possono essere utilizzati da altre parti per verificare la relativa origine e autenticità. Per informazioni, consulta [Documenti di identità delle istanze per le EC2 istanze Amazon](instance-identity-documents.md).  | 04-04-2009 | 

# Accesso ai metadati dell'istanza per un'istanza EC2
<a name="instancedata-data-retrieval"></a>

Puoi accedere ai metadati dell'istanza EC2 dall'interno dell'istanza stessa o dalla console EC2, dall'API o dal. SDKs 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](#query-IMDS-existing-instances).

Puoi anche modificare i dati utente per le istanze con un volume root EBS. L'istanza deve essere nello stato stopped (arrestato). Per le indicazioni per la console, consulta [Aggiornamento dei dati utente dell'istanza](user-data.md#user-data-modify). Per un esempio di Linux che utilizza il AWS CLI, consulta. [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) Per un esempio di Windows che utilizza gli strumenti per Windows PowerShell, vedere[Dati utente e strumenti per Windows PowerShell](user-data.md#user-data-powershell).

**Nota**  
Non verrà addebitato alcun costo per le richieste HTTP utilizzate per recuperare i metadati dell'istanza e i dati utente.

## Considerazioni sull'accesso ai metadati dell'istanza
<a name="imds-considerations"></a>

Per evitare problemi con i metadati delle istanze, considerate quanto segue.

**Errori di avvio dell'istanza dovuti all' IMDSv2 applicazione () `HttpTokensEnforced=enabled`**  
Prima di abilitare IMDSv2 l'imposizione, è necessario che tutto il software dell'istanza sia supportato IMDSv2, dopodiché è possibile modificare l'impostazione predefinita su disable IMDSv1 (`httpTokens=required`), dopodiché è possibile abilitare l'imposizione. Per ulteriori informazioni, consulta [Passaggio all'utilizzo di Servizio di metadati dell'istanza Versione 2](instance-metadata-transition-to-version-2.md).

**Formato comando**  
Il formato dei comandi è diverso, a seconda che si utilizzi Instance Metadata Service Version 1 (IMDSv1) o Instance Metadata Service Version 2 (IMDSv2). Per impostazione predefinita, puoi utilizzare entrambi i servizi di metadati dell'istanza. Per richiedere l'utilizzo di IMDSv2, consulta [Utilizzo del servizio di metadati di istanza per accedere ai metadati dell'istanza](configuring-instance-metadata-service.md).

**Se IMDSv2 richiesto, IMDSv1 non funziona**  
Se utilizzi IMDSv1 e non ricevi alcuna risposta, è probabile che IMDSv2 sia necessario. Per verificare se IMDSv2 è obbligatorio, seleziona l'istanza per visualizzarne i dettagli. Il **IMDSv2**valore indica **Obbligatorio** (è necessario utilizzare IMDSv2) o **Facoltativo** (è possibile utilizzare uno dei due IMDSv2 oIMDSv1). 

**(IMDSv2) Utilizza /latest/api/token per recuperare il token**  
L'emissione di richieste `PUT` a qualsiasi percorso specifico della versione, ad esempio `/2021-03-23/api/token`, farà sì che il servizio dei metadati restituisca errori 403 Accesso negato. Questo è il comportamento previsto.

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

**IPv6 supporto**  
Per recuperare i metadati dell'istanza utilizzando un IPv6 indirizzo, assicurati di abilitare e utilizzare l'IPv6 indirizzo dell'IMDS `[fd00:ec2::254]` anziché l'indirizzo. IPv4 `169.254.169.254` [L'istanza deve essere un'[istanza basata su Nitro](instance-types.md#instance-hypervisor-type) lanciata in una sottorete che supporti. IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range)

**(Windows) Crea contenuti personalizzati AMIs utilizzando Windows Sysprep**  
Per assicurarti che l'IMDS funzioni quando avvii un'istanza da un'AMI Windows personalizzata, l'AMI deve essere un'immagine standardizzata creata mediante Windows Sysprep. In caso contrario, l'IMDS non funzionerà. Per ulteriori informazioni, consulta [Creare un'AMI Amazon EC2 utilizzando Windows Sysprep](ami-create-win-sysprep.md).

**In un ambiente container, prendi in considerazione la riconfigurazione o l’aumento del limite di hop a 2**  
Per impostazione predefinita, AWS SDKs utilizza IMDSv2 le chiamate. Se la IMDSv2 chiamata non riceve alcuna risposta, alcuni AWS SDKs riprovano a chiamarla e, se il risultato persiste, la utilizzano. IMDSv1 Ciò può comportare un ritardo, soprattutto in un ambiente del container. Per coloro AWS SDKs che lo *richiedono* IMDSv2, se il limite di hop è 1 in un ambiente contenitore, la chiamata potrebbe non ricevere alcuna risposta perché l'accesso al contenitore è considerato un hop di rete aggiuntivo.  
Per mitigare questi problemi in un ambiente container, prendete in considerazione la possibilità di modificare la configurazione per passare le impostazioni (come la Regione AWS) direttamente al contenitore, oppure considerate di aumentare il limite di hop a 2. Per ulteriori informazioni, consulta [Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Metadata Service](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/). Per informazioni sulla modifica del limite di hop, consulta [Modifica del limite di hop di risposta PUT](configuring-IMDS-existing-instances.md#modify-PUT-response-hop-limit).

**Limite di pacchetti al secondo (PPS)**  
Esiste un limite di 1024 pacchetti al secondo (PPS) per i servizi che utilizzano indirizzi [locali del collegamento](using-instance-addressing.md#link-local-addresses). Questo limite include l'aggregato di [query DNS del risolutore Route 53](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#vpc-dns-limits), richieste del servizio di metadati di istanza (IMDS), richieste [Network Time Protocol (NTP) del servizio orario di Amazon](set-time.md) e richieste [Windows Licensing Service (per istanze basate su Microsoft Windows)](https://aws.amazon.com/windows/resources/licensing/). 

**Considerazioni aggiuntive sull'accesso ai dati utente**
+ I dati utente vengono considerati dati opachi: ciò che indichi è ciò che risulta durante il recupero. È l'istanza a interpretare i dati utente e a intervenire su di essi.
+ I dati utente devono essere codificati con base64. A seconda dello strumento o dell'SDK che stai utilizzando, la codifica base64 potrebbe essere eseguita automaticamente. Esempio:
  + La console Amazon EC2 può eseguire automaticamente la codifica con base64 oppure accettare input codificati con base64.
  + AWS CLI per impostazione predefinita, la [versione 2](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-binaryparam) 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 per 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)\$14.
+ 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 puoi configurare le impostazioni in modo che gli script dei dati utente aggiornati vengano eseguiti una volta all'avvio dell'istanza oppure ogni volta che avvii o riavvii l'istanza.
+ I dati utente sono un attributo dell'istanza. Se si crea un'AMI da un'istanza, i dati utente dell'istanza non vengono inclusi nell'AMI.

## Accesso ai metadati dell'istanza dall'interno di un'istanza EC2
<a name="instancedata-inside-access"></a>

Dal momento che i metadati dell'istanza sono disponibili dall'istanza in esecuzione, non devi utilizzare la console Amazon EC2 o 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.

Quelli riportati di seguito sono considerati tutti metadati dell'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 dell'istanza sono suddivise in categorie. Per una descrizione di ciascuna categoria di metadati dell'istanza, consulta [Categorie di metadati dell'istanza](ec2-instance-metadata.md#instancedata-data-categories).

Per accedere alle proprietà dei metadati dell'istanza dall'interno di un'istanza in esecuzione, recupera i dati dal seguente o. IPv4 IPv6 URIs Gli indirizzi IP sono indirizzi locali di collegamento e sono validi solo dall'istanza. Per ulteriori informazioni, consulta [Indirizzi link local](using-instance-addressing.md#link-local-addresses).

**IPv4**

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

**IPv6**

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

------
#### [ Dynamic data ]

Per recuperare dati dinamici dall'interno di 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 cURL**  
Gli esempi seguenti utilizzano `cURL` per recuperare le categorie di identità di alto livello dell'istanza.

*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](instance-identity-documents.md).

------
#### [ User data ]

Per recuperare i dati utente da un'istanza, utilizzate uno dei seguenti metodi. URIs Per recuperare i dati utente utilizzando l' IPv6 indirizzo, è necessario abilitarlo e l'istanza deve essere un'[istanza basata su Nitro](instance-types.md#instance-hypervisor-type) 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: accesso con cURL per recuperare testo separato da virgola**  
Gli esempi seguenti utilizzano `cURL` per recuperare i dati utente specificati come testo separato da virgola.

*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 PowerShell da virgole**  
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: accesso con cURL per recuperare uno script**  
Gli esempi seguenti utilizzano `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
<a name="query-IMDS-existing-instances"></a>

Puoi eseguire query sulle opzioni dei metadati dell’istanza per le istanze esistenti.

------
#### [ Console ]

**Per eseguire una query sulle opzioni dei metadati dell’istanza per un’istanza esistente**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Seleziona la tua istanza e verifica i seguenti campi:
   + **IMDSv2**— Il valore è **Obbligatorio** o **Facoltativo**.
   + **Consenti tag nei metadati dell’istanza**: il valore è **Abilitato** o **Disabilitato**.

1. Dopo aver selezionato l’istanza, scegli **Operazioni**, **Impostazioni istanza**, **Modifica opzioni dei metadati dell’istanza**.

   La finestra di dialogo mostra se il servizio di metadati di istanza è abilitato o disabilitato per l’istanza selezionata.

------
#### [ AWS CLI ]

**Per eseguire una query sulle opzioni dei metadati dell’istanza per un’istanza esistente**  
Utilizzare il comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
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**  
Utilizza il cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

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

------

## Risposte e messaggi di errore
<a name="instance-metadata-returns"></a>

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

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

Una richiesta relativa a una risorsa di metadati generica (l'URI termina con /) restituisce l'elenco delle risorse disponibili o un codice di errore HTTP `404 - Not Found` se la risorsa specificata non è disponibile. Le voci dell'elenco si trovano su righe distinte che terminano con caratteri di avanzamento riga (ASCII 10).

Se una IMDSv1 richiesta non riceve alcuna risposta, è probabile che IMDSv2 sia necessaria.

Per le richieste effettuate utilizzando IMDSv2, è possibile restituire i seguenti codici di errore HTTP:
+ `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 l'IMDS è disattivato.
+ `404 - Not Found`: la risorsa non è disponibile o non esiste alcuna risorsa di questo tipo.
+ `503`: Non è stato possibile completare la richiesta. Riprova la richiesta .

Se l'IMDS restituisce un errore, **curl** stampa il messaggio di errore nell'output e restituisce un codice di stato di operazione riuscita. Il messaggio di errore viene memorizzato nella variabile `TOKEN`, il che causa l'esito negativo dei comandi **curl** che utilizzano il token. Se chiami **curl** con l'opzione **-f**, restituisce un codice di stato di errore in caso di errore del server HTTP. Se abiliti la gestione degli errori, la shell può rilevare l'errore e fermare lo script.

## Throttling delle query
<a name="instancedata-throttling"></a>

La limitazione (della larghezza di banda della rete) delle query viene applicata in base all'istanza, ovvero vengono applicate restrizioni al numero di connessioni simultanee da un'istanza all'IMDS. 

Se utilizzi l'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 ruolo IAM e sulle credenziali di sicurezza associate al ruolo, consulta [Recupero delle credenziali di sicurezza dai metadati delle istanze](instance-metadata-security-credentials.md).

Se si verifica tale limitazione (della larghezza di banda della rete) durante l'accesso all'IMDS, riprova a eseguire la query con un approccio basato sul backoff esponenziale.

# Utilizzo del servizio di metadati di istanza per accedere ai metadati dell'istanza
<a name="configuring-instance-metadata-service"></a>

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-retrieval-examples).
+ Instance Metadata Service Version 1 ()IMDSv1: un metodo request/response 

  Per alcuni esempi, consulta [Esempi per IMDSv1](#instance-metadata-retrieval-examples-imdsv1).

Per impostazione predefinita, è possibile utilizzare uno IMDSv1 o IMDSv2 entrambi.

È possibile configurare l'Instance Metadata Service (IMDS) su ogni istanza in modo che accetti solo IMDSv2 chiamate, con conseguente esito negativo IMDSv1 delle chiamate. Per informazioni su come configurare l'istanza da utilizzare IMDSv2, consulta. [Configurazione delle opzioni del servizio di metadati di istanza](configuring-instance-metadata-options.md)

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 [Aggiungi una difesa approfondita contro firewall aperti, reverse proxy e vulnerabilità SSRF con miglioramenti](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) al servizio EC2 Instance Metadata.

**Topics**
+ [

## Funzionamento di Servizio di metadati dell'istanza Versione 2
](#instance-metadata-v2-how-it-works)
+ [

## Usa un AWS SDK supportato
](#use-a-supported-sdk-version-for-imdsv2)
+ [

## Esempi per IMDSv2
](#instance-metadata-retrieval-examples)
+ [

## Esempi per IMDSv1
](#instance-metadata-retrieval-examples-imdsv1)

## Funzionamento di Servizio di metadati dell'istanza Versione 2
<a name="instance-metadata-v2-how-it-works"></a>

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 le istanze EC2 tramite 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](instance-types.md#instance-hypervisor-type) in una [sottorete IPv6 supportata](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) (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) oppure `token` (istanze Windows)
+ Richiede gli elementi di metadati di livello superiore utilizzando il token

### Esempio per Linux
<a name="how-imdsv2-works-example-linux"></a>

È 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
```

### Esempio per Windows
<a name="how-imdsv2-works-example-windows"></a>

```
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 si utilizza IMDSv2 per richiedere i metadati dell'istanza, la richiesta deve includere quanto segue:

1. Utilizza una richiesta `PUT` per inizializzare una sessione al servizio di metadati dell'istanza. La richiesta `PUT` restituisce un token che deve essere incluso nelle richieste `GET` successive al servizio di metadati dell'istanza. Il token è obbligatorio per accedere ai metadati utilizzando IMDSv2.

1. Includi il token in tutte le richieste `GET` inviate all'IMDS. Quando l'uso del token è impostato su `required`, le richieste senza una token valido o con un token scaduto ricevono un codice di errore HTTP `401 - 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 `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](instancedata-data-retrieval.md#instancedata-throttling).

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](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) AWS CLI 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](configuring-IMDS-existing-instances.md).

## Usa un AWS SDK supportato
<a name="use-a-supported-sdk-version-for-imdsv2"></a>

Per utilizzare IMDSv2, le istanze EC2 devono utilizzare una AWS versione SDK che supporti l'utilizzo. IMDSv2 Le versioni più recenti di tutto il supporto che utilizza. AWS SDKs 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](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) nella *AWS SDKs and Tools Reference Guide*.

Di seguito sono riportate le versioni minime che supportano l'utilizzo di IMDSv2:
+ [AWS CLI](https://github.com/aws/aws-cli) - 1.16.289
+ [AWS Tools for Windows PowerShell](https://github.com/aws/aws-tools-for-powershell) – 4,0.1.0
+ [AWS SDK per .NET](https://github.com/aws/aws-sdk-net) - 3.3.634.1
+ [AWS SDK per C\$1\$1](https://github.com/aws/aws-sdk-cpp) - 1.7.229
+ [AWS SDK per Go](https://github.com/aws/aws-sdk-go) - 1.25.38
+ [AWS SDK per Go v2](https://github.com/aws/aws-sdk-go-v2) — 0.19.0
+ [AWS SDK per Java](https://github.com/aws/aws-sdk-java) - 1.11.678
+ [AWS SDK for Java 2.x](https://github.com/aws/aws-sdk-java-v2) - 2.10.21
+ [AWS SDK](https://github.com/aws/aws-sdk-js) per in Node.js — 2.722.0 JavaScript 
+ [AWS SDK per Kotlin](https://github.com/awslabs/aws-sdk-kotlin) - 1.1.4
+ [AWS SDK per PHP](https://github.com/aws/aws-sdk-php) - 3.147.7
+ [AWS SDK per Python (Botocore](https://github.com/boto/botocore)) — 1.13.25
+ [AWS SDK per Python (Boto3)](https://github.com/boto/boto3) - 1.12.6
+ [AWS SDK per Ruby](https://github.com/aws/aws-sdk-ruby) - 3.79.0

## Esempi per IMDSv2
<a name="instance-metadata-retrieval-examples"></a>

Esegui i seguenti esempi sulla tua istanza Amazon EC2 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.

**Topics**
+ [

### Recupero delle versioni disponibili dei metadati dell'istanza
](#instance-metadata-ex-1)
+ [

### Recupero degli elementi di metadati di primo livello
](#instance-metadata-ex-2)
+ [

### Ottenimento dei valori per gli elementi di metadati
](#instance-metadata-ex-2a)
+ [

### Recupero dell'elenco di chiavi pubbliche disponibili
](#instance-metadata-ex-3)
+ [

### Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
](#instance-metadata-ex-4)
+ [

### Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
](#instance-metadata-ex-5)
+ [

### Recupero dell'ID della sottorete per un'istanza
](#instance-metadata-ex-6)
+ [

### Ottenere i tag dell'istanza per un'istanza
](#instance-metadata-ex-7)

### Recupero delle versioni disponibili dei metadati dell'istanza
<a name="instance-metadata-ex-1"></a>

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.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
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/
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
<a name="instance-metadata-ex-2"></a>

Questo esempio recupera gli elementi di metadati di primo livello. Per ulteriori informazioni sugli elementi nella risposta, consulta [Categorie di metadati dell'istanza](ec2-instance-metadata.md#instancedata-data-categories).

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](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

------
#### [ cURL ]

```
[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/
```

------
#### [ PowerShell ]

```
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/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
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
<a name="instance-metadata-ex-2a"></a>

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.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri 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
<a name="instance-metadata-ex-3"></a>

Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
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/public-keys/
0=my-public-key
```

------

### Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
<a name="instance-metadata-ex-4"></a>

Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
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/public-keys/0/openssh-key
openssh-key
```

------

### Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
<a name="instance-metadata-ex-5"></a>

Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
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/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
<a name="instance-metadata-ex-6"></a>

In questo esempio viene recuperato l'ID della sottorete per un'istanza.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
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/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------

### Ottenere i tag dell'istanza per un'istanza
<a name="instance-metadata-ex-7"></a>

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](work-with-tags-in-IMDS.md#retrieve-tags-from-IMDS).

## Esempi per IMDSv1
<a name="instance-metadata-retrieval-examples-imdsv1"></a>

Esegui i seguenti esempi sulla tua istanza Amazon EC2 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.

**Topics**
+ [

### Recupero delle versioni disponibili dei metadati dell'istanza
](#instance-metadata-ex-1-imdsv1)
+ [

### Recupero degli elementi di metadati di primo livello
](#instance-metadata-ex-2-imdsv1)
+ [

### Ottenimento dei valori per gli elementi di metadati
](#instance-metadata-ex-2a-imdsv1)
+ [

### Recupero dell'elenco di chiavi pubbliche disponibili
](#instance-metadata-ex-3-imdsv1)
+ [

### Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
](#instance-metadata-ex-4-imdsv1)
+ [

### Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
](#instance-metadata-ex-5-imdsv1)
+ [

### Recupero dell'ID della sottorete per un'istanza
](#instance-metadata-ex-6-imdsv1)
+ [

### Ottenere i tag dell'istanza per un'istanza
](#instance-metadata-ex-7-imdsv1)

### Recupero delle versioni disponibili dei metadati dell'istanza
<a name="instance-metadata-ex-1-imdsv1"></a>

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.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri 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
<a name="instance-metadata-ex-2-imdsv1"></a>

Questo esempio recupera gli elementi di metadati di primo livello. Per ulteriori informazioni sugli elementi nella risposta, consulta [Categorie di metadati dell'istanza](ec2-instance-metadata.md#instancedata-data-categories).

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](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

------
#### [ cURL ]

```
[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/
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/    
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
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
<a name="instance-metadata-ex-2a-imdsv1"></a>

Questi esempi consentono di recuperare i valori di alcuni degli elementi di metadati di primo livello che sono stati ottenuti nell'esempio precedente.

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
PS C:\> Invoke-RestMethod -uri 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
<a name="instance-metadata-ex-3-imdsv1"></a>

Questo esempio recupera l'elenco delle chiavi pubbliche disponibili.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key
```

------

### Visualizzazione dei formati in cui è disponibile la chiave pubblica 0
<a name="instance-metadata-ex-4-imdsv1"></a>

Questo esempio mostra i formati in cui è disponibile la chiave pubblica 0.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/
openssh-key
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
openssh-key
```

------

### Recupero della chiave pubblica 0 (nel formato di chiave OpenSSH)
<a name="instance-metadata-ex-5-imdsv1"></a>

Questo esempio recupera la chiave pubblica 0 (nel formato di chiave OpenSSH).

------
#### [ cURL ]

```
[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
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri 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
<a name="instance-metadata-ex-6-imdsv1"></a>

In questo esempio viene recuperato l'ID della sottorete per un'istanza.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri 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
<a name="instance-metadata-ex-7-imdsv1"></a>

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](work-with-tags-in-IMDS.md#retrieve-tags-from-IMDS).

# Passaggio all'utilizzo di Servizio di metadati dell'istanza Versione 2
<a name="instance-metadata-transition-to-version-2"></a>

Se desideri configurare le tue istanze in modo che accettino solo chiamate Instance Metadata Service Version 2 (IMDSv2), ti consigliamo di utilizzare i seguenti strumenti e il percorso di transizione.

**Topics**
+ [

## Strumenti per la transizione a IMDSv2
](#tools-for-transitioning-to-imdsv2)
+ [

## Percorso consigliato per la richiesta IMDSv2
](#recommended-path-for-requiring-imdsv2)

## Strumenti per la transizione a IMDSv2
<a name="tools-for-transitioning-to-imdsv2"></a>

I seguenti strumenti possono aiutarti a identificare, monitorare e gestire la transizione del tuo software da IMDSv1 a IMDSv2. Per le istruzioni su come utilizzare questi strumenti, vedere[Percorso consigliato per la richiesta IMDSv2](#recommended-path-for-requiring-imdsv2).

**AWS software**  
Le versioni più recenti degli AWS CLI AWS SDK supportano IMDSv2. Per utilizzare IMDSv2, aggiorna le tue istanze EC2 per utilizzare le versioni più recenti. Per le versioni AWS SDK minime supportate, consulta. IMDSv2 [Usa un AWS SDK supportato](configuring-instance-metadata-service.md#use-a-supported-sdk-version-for-imdsv2)  
Supportano tutti i pacchetti software Amazon Linux 2 e Amazon Linux 2023 IMDSv2. Amazon Linux 2023 viene disabilitato IMDSv1 per impostazione predefinita.

**IMDS Packet Analyzer**  
IMDS Packet Analyzer è uno strumento open source che identifica e registra le IMDSv1 chiamate durante la fase di avvio e le operazioni di runtime dell'istanza. Analizzando questi log, puoi identificare con precisione il software che effettua IMDSv1 chiamate sulle tue istanze e determinare cosa deve essere aggiornato per supportare solo le tue istanze. IMDSv2 Puoi eseguire IMDS Packet Analyzer da una riga di comando o installarlo come servizio. Per ulteriori informazioni, vedere on. [AWS ImdsPacketAnalyzer*GitHub*](https://github.com/aws/aws-imds-packet-analyzer)

**CloudWatch**  
CloudWatch fornisce le due metriche seguenti per il monitoraggio delle istanze:  
`MetadataNoToken`— IMDSv2 utilizza sessioni supportate da token, mentre non lo fa. IMDSv1 La `MetadataNoToken` metrica tiene traccia del numero di chiamate all'Instance Metadata Service (IMDS) utilizzate. IMDSv1 Monitorando questo parametro a zero, puoi determinare se e quando tutto il software è stato aggiornato per utilizzare IMDSv2.  
`MetadataNoTokenRejected`— Dopo aver disabilitato IMDSv1, puoi utilizzare la `MetadataNoTokenRejected` metrica per tenere traccia del numero di volte in cui una IMDSv1 chiamata è stata tentata e rifiutata. Monitorando questa metrica, puoi verificare se il tuo software deve essere aggiornato per essere utilizzato. IMDSv2  
Per ogni istanza EC2, queste metriche si escludono a vicenda. Quando IMDSv1 è abilitato (`httpTokens = optional`), emette solo. `MetadataNoToken` Quando IMDSv1 è disabilitato (`httpTokens = required`), `MetadataNoTokenRejected` emette solo. Per quando utilizzare queste metriche, consulta. [Percorso consigliato per la richiesta IMDSv2](#recommended-path-for-requiring-imdsv2)  
Per ulteriori informazioni, consulta [Parametri dell'istanza](viewing_metrics_with_cloudwatch.md#ec2-cloudwatch-metrics).

**Avvio APIs**  
**Nuove istanze:** utilizza l'[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API per avviare nuove istanze che richiedono l'uso di. IMDSv2 Per ulteriori informazioni, consulta [Configurazione delle opzioni dei metadati dell'istanza per le nuove istanze](configuring-IMDS-new-instances.md).  
**Istanze esistenti:** utilizza l'[ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html)API per richiedere l'utilizzo IMDSv2 su istanze esistenti. Per ulteriori informazioni, consulta [Modifica delle opzioni dei metadati dell'istanza per le istanze esistenti](configuring-IMDS-existing-instances.md).  
**Nuove istanze lanciate dai gruppi Auto Scaling**: per richiedere l'uso IMDSv2 di su tutte le nuove istanze lanciate dai gruppi Auto Scaling, i gruppi Auto Scaling possono utilizzare un modello di avvio o una configurazione di avvio. Quando [crei un modello di avvio](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) o [una configurazione di avvio](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/create-launch-configuration.html), devi configurare i parametri `MetadataOptions` per richiedere l'utilizzo di IMDSv2. Il gruppo con scalabilità automatica avvia le nuove istanza tramite il nuovo modello di avvio o configurazione di avvio, senza coinvolgere le istanze esistenti.   
**Istanze esistenti in un gruppo Auto Scaling**: utilizzate l'API per richiedere [ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html)l'utilizzo IMDSv2 su istanze esistenti oppure terminate le istanze e il gruppo Auto Scaling lancerà nuove istanze sostitutive con le impostazioni delle opzioni dei metadati dell'istanza definite nel nuovo modello di avvio o nella nuova configurazione di avvio.

**AMIs**  
AMIs configurato con il `ImdsSupport` parametro impostato per avviare le istanze che lo richiedono per impostazione predefinita. `v2.0` IMDSv2 Amazon Linux 2023 è configurato con`ImdsSupport = v2.0`.  
**Nuovo AMIs:** utilizza il comando CLI [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) per impostare `ImdsSupport` il parametro su quando si crea una nuova `v2.0` AMI.  
**Esistente AMIs:** utilizza il comando [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html)CLI per impostare il `ImdsSupport` parametro su `v2.0` quando si modifica un'AMI esistente.  
Per ulteriori informazioni, consulta [Configurazione dell'AMI](configuring-IMDS-new-instances.md#configure-IMDS-new-instances-ami-configuration).

**Controlli a livello di account**  
Puoi configurare i valori predefiniti per tutte le opzioni dei metadati dell'istanza a livello di account. I valori predefiniti vengono applicati automaticamente all'avvio di un'istanza. Per ulteriori informazioni, vedere. [Imposta IMDSv2 come impostazione predefinita per l'account](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults)  
Puoi anche imporre il requisito di utilizzo a IMDSv2 livello di account. Quando l'IMDSv2 applicazione è abilitata:  
+ **Nuove istanze: le** istanze configurate per l'avvio con IMDSv1 abilitato non verranno avviate
+ **Istanze esistenti IMDSv1 disattivate:** i tentativi di attivazione IMDSv1 sulle istanze esistenti verranno impediti.
+ **Istanze esistenti con IMDSv1 opzione abilitata:** le istanze esistenti con istanze IMDSv1 già abilitate non verranno modificate.
Per ulteriori informazioni, consulta [Applica a livello di account IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

**Politiche IAM e SCPs**  
Puoi utilizzare una policy IAM o una policy AWS Organizations di controllo dei servizi (SCP) per controllare gli utenti come segue:  
+ Non è possibile avviare un'istanza utilizzando l'[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API a meno che l'istanza non sia configurata per l'uso IMDSv2.
+ Impossibile modificare un'istanza esistente utilizzando l'[ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html)API per IMDSv1 riattivarla.
La policy IAM o SCP deve contenere le chiavi di condizione IAM indicate di seguito:  
+ `ec2:MetadataHttpEndpoint`
+ `ec2:MetadataHttpPutResponseHopLimit`
+ `ec2:MetadataHttpTokens`
Se un parametro nella chiamata API o CLI non corrisponde allo stato specificato nella policy che contiene la chiave di condizione, la chiamata API o CLI ha esito negativo e viene generata una risposta. `UnauthorizedOperation`  
Inoltre, puoi scegliere un livello aggiuntivo di protezione per imporre la modifica da IMDSv1 a IMDSv2. A livello di gestione degli accessi rispetto alle API richiamate tramite le credenziali EC2 Role, puoi utilizzare una chiave di condizione nelle policy IAM o nelle policy di controllo dei AWS Organizations servizi (). SCPs In particolare, utilizzando la chiave di condizione `ec2:RoleDelivery` con un valore pari `2.0` a nelle politiche IAM, le chiamate API effettuate con le credenziali EC2 Role ottenute da IMDSv1 riceveranno una risposta. `UnauthorizedOperation` Lo stesso può essere ottenuto su scala più ampia con tale condizione richiesta da un SCP. Ciò garantisce che le credenziali fornite tramite IMDSv1 non possano essere effettivamente utilizzate per la chiamata, APIs poiché qualsiasi chiamata API che non corrisponde alla condizione specificata riceverà un errore. `UnauthorizedOperation`  
Per esempi di policy IAM, consulta [Utilizzo dei metadati delle istanze](ExamplePolicies_EC2.md#iam-example-instance-metadata). Per ulteriori informazioni SCPs, consulta le [politiche di controllo del servizio](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) nella *Guida per l'AWS Organizations utente*.

**Politiche dichiarative**  
Utilizza le politiche dichiarative (una funzionalità di AWS Organizations) per impostare centralmente le impostazioni predefinite degli account IMDS, inclusa l' IMDSv2 applicazione, in tutta l'organizzazione. *Per un esempio di politica, consulta la scheda **Metadati delle istanze** nella sezione [Politiche dichiarative supportate](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative_syntax.html#declarative-policy-examples) della Guida per l'utente.AWS Organizations *

## Percorso consigliato per la richiesta IMDSv2
<a name="recommended-path-for-requiring-imdsv2"></a>

**Topics**
+ [

### Fase 1: Identifica le istanze con IMDSv2 =optional e verifica l'utilizzo IMDSv1
](#path-step-1)
+ [

### Passaggio 2: Aggiornare il software a IMDSv2
](#path-step-2)
+ [

### Fase 3: Richiedere nessuna istanza IMDSv2
](#path-step-3)
+ [

### Passaggio 4: Imposta IMDSv2 =required come predefinito
](#path-step-4)
+ [

### Fase 5: Imporre le istanze a richiedere IMDSv2
](#path-step-5)

### Fase 1: Identifica le istanze con IMDSv2 =optional e verifica l'utilizzo IMDSv1
<a name="path-step-1"></a>

Per valutare l'ambito IMDSv2 della migrazione, identifica le istanze configurate per consentire IMDSv1 o meno e verifica le IMDSv2 chiamate. IMDSv1

1. **Identifica le istanze configurate per consentire una delle due o: IMDSv1 IMDSv2**

------
#### [ Amazon EC2 console ]

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

   1. Per visualizzare solo le istanze configurate per consentire IMDSv1 o IMDSv2, aggiungi il filtro **IMDSv2 =** opzionale.

   1. **In alternativa, per vedere se IMDSv2 è **facoltativo** o **obbligatorio** per tutte le istanze, apri la finestra **Preferenze** (icona a forma di ingranaggio), attiva e scegli **IMDSv2**Conferma.** **In questo modo la **IMDSv2**colonna viene aggiunta alla tabella Istanze.**

------
#### [ AWS CLI ]

   Utilizzate il comando [describe-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-metadata-options.html) e filtrate per, come segue: `metadata-options.http-tokens = optional`

   ```
   aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text
   ```

------

1. ** IMDSv1 Chiamate di controllo su ogni istanza:**

   Usa la CloudWatch metrica`MetadataNoToken`. Questa metrica mostra il numero di IMDSv1 chiamate all'IMDS sulle tue istanze. [Per ulteriori informazioni, consulta Metriche delle istanze.](https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics)

1. **Identifica il software sulle tue istanze che IMDSv1 effettuano chiamate:**

   Utilizza l'[IMDS Packet Analyzer](https://github.com/aws/aws-imds-packet-analyzer) open source per identificare e registrare le IMDSv1 chiamate durante la fase di avvio e le operazioni di runtime dell'istanza. Utilizza queste informazioni per identificare il software da aggiornare e preparare solo le istanze all'uso. IMDSv2 Puoi eseguire IMDS Packet Analyzer da una riga di comando o installarlo come servizio.

### Passaggio 2: Aggiornare il software a IMDSv2
<a name="path-step-2"></a>

Aggiorna tutto SDKs il CLIs software e il software che utilizzano le credenziali Role sulle tue istanze a versioni IMDSv2 compatibili. Per ulteriori informazioni sull’aggiornamento dell’interfaccia a riga di comando (CLI), consulta [Installing or updating to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) nella *Guida per l’utente di AWS Command Line Interface *.

### Fase 3: Richiedere nessuna istanza IMDSv2
<a name="path-step-3"></a>

Dopo aver confermato l'assenza di IMDSv1 chiamate tramite la `MetadataNoToken` metrica, configura le istanze esistenti su require. IMDSv2 Inoltre, configura tutte le nuove istanze da richiedere. IMDSv2 In altre parole, disabilita IMDSv1 su tutte le istanze esistenti e nuove.

1. **Configura le istanze esistenti per richiedere: IMDSv2**

------
#### [ Amazon EC2 console ]

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

   1. Selezionare l'istanza.

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

   1. Per **IMDSv2**, scegli **Obbligatorio.**

   1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

   Usa il comando [modify-instance-metadata-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-metadata-options.html)CLI per specificare che deve essere IMDSv2 usato solo. 

------
**Nota**  
È possibile modificare questa impostazione sulle istanze in esecuzione. La modifica ha effetto immediato senza che sia necessario riavviare l'istanza.

   Per ulteriori informazioni, consulta [Richiedi l'uso di IMDSv2](configuring-IMDS-existing-instances.md#modify-require-IMDSv2).

1. **Monitora i problemi dopo la IMDSv1 disabilitazione:**

   1. Tieni traccia del numero di volte in cui una IMDSv1 chiamata è stata tentata e rifiutata con la `MetadataNoTokenRejected` CloudWatch metrica.

   1. Se la `MetadataNoTokenRejected` metrica registra IMDSv1 le chiamate su un'istanza che presenta problemi software, ciò indica che il software richiede un aggiornamento per essere utilizzato. IMDSv2

1. **Configura nuove istanze per richiedere: IMDSv2**

------
#### [ Amazon EC2 console ]

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Segui i passaggi per [avviare un'istanza](ec2-launch-instance-wizard.md).

   1. Espandi **i dettagli avanzati** e, per la **versione Metadata**, scegli **solo V2 (è richiesto il token)**.

   1. Nel pannello **Summary** (Riepilogo), verifica la configurazione dell'istanza, quindi scegli **Launch instance** (Avvia istanza).

      Per ulteriori informazioni, consulta [Configurazione dell'istanza all'avvio](configuring-IMDS-new-instances.md#configure-IMDS-new-instances-instance-settings).

------
#### [ AWS CLI ]

   AWS CLI: utilizzate il comando [run-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/run-instances.html) e specificate che è richiesto. IMDSv2

------

### Passaggio 4: Imposta IMDSv2 =required come predefinito
<a name="path-step-4"></a>

Puoi impostare IMDSv2 =required come configurazione predefinita a livello di account o di organizzazione. Ciò garantisce che tutte le istanze appena avviate siano automaticamente configurate in modo da richiedere. IMDSv2

1. **Imposta il valore predefinito a livello di account:**

------
#### [ Amazon EC2 console ]

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Nel pannello di navigazione seleziona **Pannello di controllo**.

   1. Nella scheda **Attributi dell'account**, in **Impostazioni**, scegli **Protezione e sicurezza dei dati**.

   1. **In **Impostazioni predefinite IMDS**, scegli Gestisci.**

   1. **Ad **esempio, servizio di metadati**, scegli Abilitato.**

   1. Per la **versione dei metadati**, scegli **solo la V2 (è richiesto il token)**.

   1. Scegliere **Aggiorna**.

------
#### [ AWS CLI ]

   Utilizzate il comando [modify-instance-metadata-defaults](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-metadata-defaults.html)CLI e specificate `--http-tokens required` e. `--http-put-response-hop-limit 2`

------

   Per ulteriori informazioni, consulta [Imposta IMDSv2 come impostazione predefinita per l'account](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults).

1. **In alternativa, imposta il valore predefinito a livello di organizzazione utilizzando una politica dichiarativa:**

   Utilizza una politica dichiarativa per impostare come obbligatorio l'impostazione predefinita dell'organizzazione. IMDSv2 *Per una politica di esempio, consulta la scheda **Metadati dell'istanza** nella sezione [Politiche dichiarative supportate](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative_syntax.html#declarative-policy-examples) della Guida per l'AWS Organizations utente.*

### Fase 5: Imporre le istanze a richiedere IMDSv2
<a name="path-step-5"></a>

Dopo aver verificato che non vi è alcuna dipendenza IMDSv1 da nessuna delle tue istanze, ti consigliamo di IMDSv2 applicarla a tutte le nuove istanze.

Utilizza una delle seguenti opzioni per applicare: IMDSv2

1. **Applica IMDSv2 con una proprietà dell'account**

   Puoi imporre l'uso di IMDSv2 a livello di account per ciascuno di essi. Regione AWS Se applicate, le istanze possono essere avviate solo se sono configurate in modo da richiedere. IMDSv2 Questa applicazione si applica indipendentemente dalla configurazione dell'istanza o dell'AMI. Per ulteriori informazioni, consulta [Applica a livello di account IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level). Per applicare questa impostazione a livello di organizzazione, imposta una politica dichiarativa. *Per un esempio di politica, consulta la scheda **Metadati dell'istanza** nella sezione [Politiche dichiarative supportate](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative_syntax.html#declarative-policy-examples) della Guida per l'AWS Organizations utente.*

   Per evitare un'inversione dell'applicazione, è necessario utilizzare una policy IAM per impedire l'accesso all'API. [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html) Per ulteriori informazioni, consulta [Utilizzo di una policy IAM](configuring-IMDS-new-instances.md#configure-IMDS-new-instances-iam-policy).
**Nota**  
Questa impostazione non modifica la versione IMDS delle istanze esistenti, ma blocca l'attivazione IMDSv1 sulle istanze esistenti attualmente disattivate. IMDSv1 
**avvertimento**  
Se IMDSv2 l'applicazione è abilitata e non `httpTokens` è impostata né `required` nella configurazione dell'istanza all'avvio, né nelle impostazioni dell'account o nella configurazione AMI, l'avvio dell'istanza avrà esito negativo. Per informazioni sulla risoluzione dei problemi, consulta [L'avvio di un' IMDSv1istanza abilitata non riesce](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails).

1. **In alternativa, esegui l'applicazione IMDSv2 utilizzando le seguenti chiavi di condizione IAM o SCP:**
   + `ec2:MetadataHttpTokens`
   + `ec2:MetadataHttpPutResponseHopLimit`
   + `ec2:MetadataHttpEndpoint`

   Questi tasti condizionali controllano l'uso di [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)e [ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html) APIs e corrispondenti. CLIs Se viene creata una policy e un parametro nella chiamata API non corrisponde allo stato specificato nella policy utilizzando la chiave di condizione, la chiamata all'API o alla CLI non va a buon e viene restituita la risposta `UnauthorizedOperation`.

   Per esempi di policy IAM, consulta [Utilizzo dei metadati delle istanze](ExamplePolicies_EC2.md#iam-example-instance-metadata).

# Limitazione dell'accesso al servizio di metadati di istanza
<a name="instance-metadata-limiting-access"></a>

Puoi valutare se utilizzare regole firewall locali per disabilitare l'accesso al servizio di metadati di istanza (IMDS) da alcuni processi o da tutti.

Per le [istanze basate su Nitro](instance-types.md#instance-hypervisor-type), l'IMDS potrebbe essere raggiungibile dalla rete quando un'appliance di rete all'interno del VPC, ad esempio un router virtuale, inoltra i pacchetti all'indirizzo IMDS e il [controllo dell'origine/della destinazione](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck) predefinito sull'istanza è disabilitato. Per evitare che una fonte esterna al tuo VPC raggiunga l'IMDS, ti consigliamo di modificare la configurazione dell'appliance di rete in modo che rilasci pacchetti con l' IPv4indirizzo di destinazione dell'IMDS `169.254.169.254` e, se hai abilitato l' IPv6endpoint, l'indirizzo dell'IMDS. IPv6 `[fd00:ec2::254]`

## Limitazione dell'accesso all'IMDS per le istanze Linux
<a name="instance-metadata-limiting-access-linux"></a>

**Utilizzo di iptables per limitare l'accesso**

L'esempio seguente utilizza iptables Linux e il relativo modulo `owner` per impedire al server Web Apache (basato sul suo ID utente di installazione predefinito di `apache`) di accedere a 169.254.169.254. Utilizza una *regola di negazione* per rifiutare tutte le richieste di metadati delle istanze (indipendentemente dal fatto che siano IMDSv1 o meno) provenienti da qualsiasi processo in esecuzione come tale utente. IMDSv2

```
$ sudo iptables --append OUTPUT --proto tcp --destination 169.254.169.254 --match owner --uid-owner apache --jump REJECT
```

Oppure, puoi valutare di consentire l'accesso solo a utenti o gruppi particolari, utilizzando *regole che autorizzano*. Le regole che autorizzano potrebbero essere più facili da gestire dal punto di vista della sicurezza, perché richiedono di prendere una decisione sul software che deve poter accedere ai metadati dell'istanza. Se utilizzi *regole che autorizzano*, è meno probabile che venga accidentalmente concesso al software l'accesso al servizio di metadati (a cui non intendevi accedere) se in seguito modifichi il software o la configurazione su un'istanza. Puoi anche combinare l'utilizzo dei gruppi con le regole che autorizzano, in modo da poter aggiungere e rimuovere utenti da un gruppo autorizzato senza la necessità di modificare la regola firewall.

L'esempio seguente impedisce a tutti i processi di accedere all'IMDS, tranne a quelli in esecuzione nell'account utente `trustworthy-user`.

```
$ sudo iptables --append OUTPUT --proto tcp --destination 169.254.169.254 --match owner ! --uid-owner trustworthy-user --jump REJECT
```

**Nota**  
Per utilizzare regole firewall locali, è necessario adattare i comandi dell'esempio precedente in base alle proprie esigenze. 
Per impostazione predefinita, le regole iptables non vengono mantenute tra riavvii del sistema. Possono essere rese persistenti utilizzando funzionalità del sistema operativo non descritte in questo argomento.
Il modulo `owner` iptables corrisponde all'appartenenza al gruppo solo se il gruppo è quello primario di un determinato utente locale. Altri gruppi non corrispondono.

**Utilizzo di PF o IPFW per limitare l'accesso**

Se utilizzi FreeBSD o OpenBSD, puoi anche considerare l'utilizzo di PF o IPFW. Gli esempi seguenti limitano l'accesso all'IMDS al solo utente root.

**PF**

```
$ block out inet proto tcp from any to 169.254.169.254
```

```
$ pass out inet proto tcp from any to 169.254.169.254 user root
```

**IPFW**

```
$ allow tcp from any to 169.254.169.254 uid root
```

```
$ deny tcp from any to 169.254.169.254
```

**Nota**  
L'ordine dei comandi PF e IPFW è importante. PF è preimpostato sull'ultima regola corrispondente e IPFW è preimpostato sulla prima regola corrispondente.

## Limitazione dell'accesso all'IMDS per le istanze Windows
<a name="instance-metadata-limiting-access-windows"></a>

**Utilizzo del firewall Windows per limitare l'accesso**

L' PowerShell esempio seguente utilizza il firewall integrato di Windows per impedire al server Web di Internet Information Server (in base all'ID utente di installazione predefinito di`NT AUTHORITY\IUSR`) di accedere a 169.254.169.254. Utilizza una *regola di negazione* per rifiutare tutte le richieste di metadati dell'istanza (indipendentemente dal fatto che siano IMDSv1 o) da qualsiasi processo in esecuzione come tale utente. IMDSv2

```
PS C:\> $blockPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("NT AUTHORITY\IUSR")
PS C:\> $BlockPrincipalSID = $blockPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value
PS C:\> $BlockPrincipalSDDL = "D:(A;;CC;;;$BlockPrincipalSID)"
PS C:\> New-NetFirewallRule -DisplayName "Block metadata service from IIS" -Action block -Direction out `
-Protocol TCP -RemoteAddress 169.254.169.254 -LocalUser $BlockPrincipalSDDL
```

Oppure, puoi valutare di consentire l'accesso solo a utenti o gruppi particolari, utilizzando *regole che autorizzano*. Le regole che autorizzano potrebbero essere più facili da gestire dal punto di vista della sicurezza, perché richiedono di prendere una decisione sul software che deve poter accedere ai metadati dell'istanza. Se utilizzi *regole che autorizzano*, è meno probabile che venga accidentalmente concesso al software l'accesso al servizio di metadati (a cui non intendevi accedere) se in seguito modifichi il software o la configurazione su un'istanza. Puoi anche combinare l'utilizzo dei gruppi con le regole che autorizzano, in modo da poter aggiungere e rimuovere utenti da un gruppo autorizzato senza la necessità di modificare la regola firewall.

L'esempio seguente impedisce l'accesso ai metadati dell'istanza da tutti i processi in esecuzione su un gruppo OS specificato nella variabile `blockPrincipal` (in questo esempio, il gruppo Windows `Everyone`), ad eccezione dei processi specificati in `exceptionPrincipal` (in questo esempio, un gruppo denominato `trustworthy-users`). È necessario specificare entrambi i principali di rifiuto e di autorizzazione perché Windows Firewall, a differenza della regola `! --uid-owner trustworthy-user` in iptables Linux, non fornisce un meccanismo di scelta rapida per consentire solo un principale particolare (utente o gruppo) rifiutando tutti gli altri.

```
PS C:\> $blockPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Everyone")
PS C:\> $BlockPrincipalSID = $blockPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value
PS C:\> $exceptionPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("trustworthy-users")
PS C:\> $ExceptionPrincipalSID = $exceptionPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value
PS C:\> $PrincipalSDDL = "O:LSD:(D;;CC;;;$ExceptionPrincipalSID)(A;;CC;;;$BlockPrincipalSID)"
PS C:\> New-NetFirewallRule -DisplayName "Block metadata service for $($blockPrincipal.Value), exception: $($exceptionPrincipal.Value)" -Action block -Direction out `
-Protocol TCP -RemoteAddress 169.254.169.254 -LocalUser $PrincipalSDDL
```

**Nota**  
Per utilizzare regole firewall locali, è necessario adattare i comandi dell'esempio precedente in base alle proprie esigenze. 

**Utilizzo di regole netsh per limitare l'accesso**

Puoi considerare di bloccare tutto il software utilizzando regole `netsh`, ma queste sono molto meno flessibili.

```
C:\> netsh advfirewall firewall add rule name="Block metadata service altogether" dir=out protocol=TCP remoteip=169.254.169.254 action=block
```

**Nota**  
Per utilizzare regole firewall locali, è necessario adattare i comandi dell'esempio precedente in base alle proprie esigenze. 
Le regole `netsh` devono essere impostate da un prompt dei comandi con privilegi elevati e non possono essere impostate per rifiutare o autorizzare principali particolari.

# Configurazione delle opzioni del servizio di metadati di istanza
<a name="configuring-instance-metadata-options"></a>

Il servizio di metadati di istanza (IMDS) viene eseguito localmente su ogni istanza EC2. Le *opzioni relative ai metadati dell'istanza* si riferiscono a un insieme di configurazioni che controllano l'accessibilità e il comportamento dell'IMDS su un'istanza EC2.

Per ciascuna istanza puoi configurare le seguenti opzioni dei metadati di istanza:

**Servizio di metadati di istanza (IMDS)**: `enabled` \$1 `disabled`  
È possibile abilitare o disabilitare l'IMDS su un'istanza. Se disabilitato, né tu né alcun codice sarete in grado di accedere ai metadati di istanza dell'istanza.  
L'IMDS ha due endpoint su un'istanza: IPv4 (`169.254.169.254`) e IPv6 (). `[fd00:ec2::254]` Quando si abilita l'IMDS, l' IPv4 endpoint viene abilitato automaticamente. Se si desidera abilitare l' IPv6 endpoint, è necessario farlo in modo esplicito.

**Endpoint IMDS: \$1 IPv6 ** `enabled` `disabled`  
È possibile abilitare esplicitamente l'endpoint IPv6 IMDS su un'istanza. Quando l'IPv6 endpoint è abilitato, l'endpoint rimane abilitato. IPv4 L' IPv6endpoint è supportato solo su [istanze basate su Nitro](instance-types.md#instance-hypervisor-type) in [sottoreti IPv6 supportate (dual stack](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) o solo). IPv6 

**Versione dei metadati**: `IMDSv1 or IMDSv2 (token optional)` \$1 `IMDSv2 only (token required)`  
Quando si richiedono i metadati dell'istanza, le chiamate richiedono un token. IMDSv2 IMDSv1le chiamate non richiedono un token. È possibile configurare un'istanza per consentire entrambe IMDSv1 IMDSv2 le chiamate (dove un token è facoltativo) o per consentire solo IMDSv2 le chiamate (dove è richiesto un token).

**Limite di hop di risposta dei metadati**: `1`–`64`  
Il limite di hop è il numero di hop di rete che la risposta PUT può effettuare. È possibile impostare il limite di hop su un minimo di `1` e un massimo di `64`. In un ambiente container, un limite di hop di `1` può causare problemi. Per informazioni su come mitigare questi problemi, consulta le informazioni sugli ambienti container in [Considerazioni sull'accesso ai metadati dell'istanza](instancedata-data-retrieval.md#imds-considerations).

**Accesso ai tag nei metadati di istanza**: `enabled` \$1 `disabled`  
È possibile abilitare o disabilitare l'accesso ai tag di un'istanza dai metadati dell'istanza. Per ulteriori informazioni, consulta [Visualizza i tag per le istanze EC2 utilizzando i metadati dell'istanza](work-with-tags-in-IMDS.md).

Per visualizzare la configurazione corrente di un’istanza, consulta [Esegui una query sulle opzioni dei metadati dell'istanza per le istanze esistenti](instancedata-data-retrieval.md#query-IMDS-existing-instances).

## Dove configurare le opzioni dei metadati di istanza
<a name="where-to-configure-instance-metadata-options"></a>

Le opzioni dei metadati di istanza possono essere configurate a diversi livelli, come segue:
+ **Account**: è possibile impostare valori predefiniti per le opzioni dei metadati di istanza a livello di account per ciascuna Regione AWS. All'avvio di un'istanza, le opzioni dei metadati dell'istanza vengono impostate automaticamente sui valori a livello di account. Puoi modificare questi valori al momento dell'avvio. I valori predefiniti a livello di account non influiscono sulle istanze esistenti.
+ **AMI**: quando registri o modifichi un'AMI, puoi impostare il parametro `imds-support` su `v2.0`. Quando un'istanza viene avviata con questa AMI, la versione dei metadati dell'istanza viene impostata automaticamente su IMDSv2 e il limite di hop è impostato su 2.
+ **Istanza**: puoi modificare tutte le opzioni dei metadati dell'istanza su un'istanza all'avvio, ignorando le impostazioni predefinite. È inoltre possibile modificare le opzioni dei metadati dell'istanza dopo l'avvio su un'istanza in esecuzione o interrotta. Tieni presente che le modifiche possono essere limitate da una policy IAM o SCP.

Per ulteriori informazioni, consultare [Configurazione delle opzioni dei metadati dell'istanza per le nuove istanze](configuring-IMDS-new-instances.md) e [Modifica delle opzioni dei metadati dell'istanza per le istanze esistenti](configuring-IMDS-existing-instances.md).

## Ordine di precedenza per le opzioni dei metadati di istanza
<a name="instance-metadata-options-order-of-precedence"></a>

Il valore per ciascuna opzione dei metadati di istanza viene determinato all'avvio dell'istanza, seguendo un ordine gerarchico di precedenza. La gerarchia, con la precedenza più alta nella parte superiore, è la seguente:
+ **Precedenza 1: configurazione dell'istanza all'avvio**: i valori possono essere specificati nel modello di avvio o nella configurazione dell'istanza. Tutti i valori qui specificati sostituiscono i valori specificati a livello di account o nell'AMI.
+ **Precedenza 2: impostazioni dell'account:** se non viene specificato un valore all'avvio dell'istanza, viene determinato dalle impostazioni a livello di account (impostate per ciascuna di esse). Regione AWS Le impostazioni a livello di account includono un valore per ciascuna opzione di metadati o non indicano alcuna preferenza.
+ **Precedenza 3: configurazione dell'AMI:** se un valore non è specificato all'avvio dell'istanza o a livello di account, viene determinato dalla configurazione dell'AMI. Questo vale solo per gli eventi `HttpTokens` e `HttpPutResponseHopLimit`.

Ciascuna opzione di metadati viene valutata separatamente. L'istanza può essere configurata con una combinazione di configurazione diretta dell'istanza, impostazioni predefinite a livello di account e configurazione dall'AMI.

È possibile modificare il valore di qualsiasi opzione di metadati dopo l'avvio su un'istanza in esecuzione o interrotta, a meno che le modifiche non siano limitate da una policy IAM o SCP.

**Nota**  
L'impostazione di IMDSv2 applicazione a livello di account viene valutata dopo che l'ordine di precedenza ha determinato le impostazioni IMDS dell'istanza. Quando l' IMDSv2imposizione è abilitata, le istanze abilitate con avranno esito negativo. IMDSv1 Per ulteriori informazioni sull'applicazione, consulta[Applica a livello di account IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

**avvertimento**  
Se IMDSv2 l'applicazione è abilitata e `httpTokens` non è stata impostata né `required` nella configurazione dell'istanza all'avvio, né nelle impostazioni dell'account o nella configurazione AMI, l'avvio avrà esito negativo.

**Esempio 1: determinare i valori per le opzioni dei metadati**

In questo esempio, un'istanza EC2 viene avviata in una regione in cui `HttpPutResponseHopLimit` è impostato su `1` a livello di account. L'AMI specificata ha `ImdsSupport` impostato su `v2.0`. Nessuna opzione di metadati viene specificata direttamente sull'istanza al momento dell'avvio. L'istanza viene avviata con le seguenti opzioni di metadati:

```
"MetadataOptions": {
    ...
    "HttpTokens": "required",
    "HttpPutResponseHopLimit": 1,
    ...
```

Questi valori sono stati determinati nel modo seguente:
+ **Nessuna opzione di metadati specificata all'avvio:** durante l'avvio dell'istanza, i valori specifici per le opzioni di metadati non sono stati forniti né nei parametri di avvio dell'istanza né nel modello di avvio.
+ **Le impostazioni dell'account hanno priorità successiva:** in assenza di valori specifici indicati all'avvio, le impostazioni a livello di account all'interno della Regione hanno la precedenza. Ciò significa che vengono applicati i valori predefiniti configurati a livello di account. In questo caso, `HttpPutResponseHopLimit` era impostato su `1`.
+ **Le impostazioni AMI hanno priorità per ultime:** in assenza di un valore specifico indicato all'avvio o a livello di account per `HttpTokens` (la versione dei metadati di istanza), viene applicata l'impostazione dell'AMI. In questo caso, l'impostazione `ImdsSupport: v2.0` dell'AMI ha determinato che `HttpTokens` era impostato su `required`. Tieni presente che, sebbene l'impostazione `ImdsSupport: v2.0` dell'AMI sia progettata per essere impostata su `HttpPutResponseHopLimit: 2`, è stata sostituita dall'impostazione `HttpPutResponseHopLimit: 1` a livello di account, che ha una priorità più alta.

**Esempio 2 — Determinazione dei valori per le opzioni dei metadati**

In questo esempio, l'istanza EC2 viene avviata con le stesse impostazioni del precedente Esempio 1, ma con `HttpTokens` impostato su `optional` direttamente sull'istanza al momento dell'avvio. L'istanza viene avviata con le seguenti opzioni di metadati:

```
"MetadataOptions": {
    ...
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    ...
```

Il valore di `HttpPutResponseHopLimit` è determinato nello stesso modo dell'Esempio 1. Tuttavia, il valore di `HttpTokens` è determinato come segue: le opzioni di metadati configurate sull'istanza al momento dell'avvio hanno la priorità. Anche se l'AMI era configurata con `ImdsSupport: v2.0` (in altre parole, `HttpTokens` è impostato su `required`), il valore specificato nell'istanza all'avvio (`HttpTokens` impostato su `optional`) aveva la precedenza.

**Esempio 3 — Determinare i valori per le opzioni dei metadati con l'opzione abilitata HttpTokensEnforced **

In questo esempio, l'account nella regione dispone di `HttpTokens = required` e`HttpTokensEnforced = enabled`.

Considera i seguenti tentativi di avvio di un'istanza EC2:
+ Tentativo di avvio `HttpTokens` impostato su`optional`: l'avvio fallisce perché l'applicazione a livello di account è abilitata (`HttpTokensEnforced = enabled`) e il parametro di avvio ha la precedenza sul valore predefinito dell'account.
+ Tentativo di avvio con `HttpTokens` set to`required`: l'avvio ha esito positivo perché è conforme all'applicazione a livello di account. 
+ Tentativo di avvio senza `HttpTokens` valore specificato: l'avvio ha esito positivo perché il valore predefinito è basato sulle impostazioni dell'account. `required` 

### Configurazione della versione dei metadati di istanza
<a name="metadata-version-order-of-precedence"></a>

Quando viene avviata un'istanza, il valore per la *versione dei metadati* dell'istanza è **IMDSv1 o IMDSv2 (token opzionale) (`httpTokens=optional`)** o **IMDSv2only (token richiesto) (**). `httpTokens=required`

All'avvio dell'istanza, è possibile specificare manualmente il valore per la versione dei metadati o utilizzare il valore predefinito. Se specifichi manualmente il valore, esso sostituisce qualsiasi valore predefinito. Se scegliete di non specificare manualmente il valore, questo verrà determinato da una combinazione di impostazioni predefinite.

Il seguente diagramma di flusso mostra come la versione dei metadati per un'istanza al momento del lancio è determinata dalle impostazioni ai diversi livelli della configurazione e da dove viene valutata l'applicazione. La tabella che segue fornisce le impostazioni specifiche per ogni livello.

![\[Un diagramma di flusso che mostra i punti di valutazione per la versione e IMDSv2 l'applicazione dei metadati dell'istanza.\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/images/imds-defaults-launch-flow.png)


La tabella mostra come la versione dei metadati per un'istanza all'avvio (indicata dalla **Configurazione dell'istanza risultante** nella colonna 4) è determinata dalle impostazioni ai diversi livelli di configurazione. L'ordine di precedenza va da sinistra a destra, dove la prima colonna ha la priorità più alta, come segue:
+ Colonna 1: **parametro di avvio**: rappresenta l'impostazione sull'istanza specificata manualmente all'avvio.
+ Colonna 2: **livello di account predefinito**: rappresenta l'impostazione dell'account.
+ Colonna 3: **AMI predefinita**: rappresenta l'impostazione sull'AMI.


| Parametro di avvio | Livello di account predefinito | AMI predefinita | Configurazione dell'istanza risultante | 
| --- | --- | --- | --- | 
| Solo V2 (token richiesto) | Nessuna preferenza | Solo V2 | Solo V2 | 
| Solo V2 (token richiesto) | Solo V2 | Solo V2 | Solo V2 | 
| Solo V2 (token richiesto) | V1 o V2 | Solo V2 | Solo V2 | 
| V1 o V2 (token facoltativo) | Nessuna preferenza | Solo V2 | V1 o V2 | 
| V1 o V2 (token facoltativo) | Solo V2 | Solo V2 | V1 o V2 | 
| V1 o V2 (token facoltativo) | V1 o V2 | Solo V2 | V1 o V2 | 
| Non impostato | Nessuna preferenza | Solo V2 | Solo V2 | 
| Non impostato | Solo V2 | Solo V2 | Solo V2 | 
| Non impostato | V1 o V2 | Solo V2 | V1 o V2 | 
| Solo V2 (token richiesto) | Nessuna preferenza | null | Solo V2 | 
| Solo V2 (token richiesto) | Solo V2 | null | Solo V2 | 
| Solo V2 (token richiesto) | V1 o V2 | null | Solo V2 | 
| V1 o V2 (token facoltativo) | Nessuna preferenza | null | V1 o V2 | 
| V1 o V2 (token facoltativo) | Solo V2 | null | V1 o V2 | 
| V1 o V2 (token facoltativo) | V1 o V2 | null | V1 o V2 | 
| Non impostato | Nessuna preferenza | null | V1 o V2 | 
| Non impostato | Solo V2 | null | Solo V2 | 
| Non impostato | V1 o V2 | null | V1 o V2 | 

## Utilizza le chiavi di condizione IAM per limitare le opzioni dei metadati di istanza
<a name="iam-condition-keys-and-imds"></a>

È possibile utilizzare le chiavi di condizione IAM in una policy IAM o SCP come riportato di seguito:
+ Consentire il lancio di un'istanza solo se è configurata per richiedere l'uso di IMDSv2
+ Limitare il numero di hop consentiti
+ Disattivazione dell'accesso ai metadati dell'istanza

**Topics**
+ [

## Dove configurare le opzioni dei metadati di istanza
](#where-to-configure-instance-metadata-options)
+ [

## Ordine di precedenza per le opzioni dei metadati di istanza
](#instance-metadata-options-order-of-precedence)
+ [

## Utilizza le chiavi di condizione IAM per limitare le opzioni dei metadati di istanza
](#iam-condition-keys-and-imds)
+ [

# Configurazione delle opzioni dei metadati dell'istanza per le nuove istanze
](configuring-IMDS-new-instances.md)
+ [

# Modifica delle opzioni dei metadati dell'istanza per le istanze esistenti
](configuring-IMDS-existing-instances.md)

**Nota**  
È opportuno procedere con cautela e condurre test accurati prima di apportare qualsiasi modifica. Prendi nota di quanto segue:  
Se si impone l'uso di IMDSv2, le applicazioni o gli agenti che utilizzano, ad IMDSv1 esempio, i metadati verranno interrotti.
Se disattivi tutto l'accesso ai metadati dell'istanza, applicazioni o agenti il cui funzionamento si basa sull'accesso ai metadati dell'istanza verranno interrotti.
Infatti IMDSv2, è necessario utilizzarlo `/latest/api/token` quando si recupera il token.
(Solo Windows) Se la PowerShell versione in uso è precedente alla 4.0, è necessario [eseguire l'aggiornamento a Windows Management Framework 4.0](https://devblogs.microsoft.com/powershell/windows-management-framework-wmf-4-0-update-now-available-for-windows-server-2012-windows-server-2008-r2-sp1-and-windows-7-sp1/) per richiedere l'uso di. IMDSv2

# Configurazione delle opzioni dei metadati dell'istanza per le nuove istanze
<a name="configuring-IMDS-new-instances"></a>

Puoi configurare le seguenti opzioni dei metadati di istanza per le nuove istanze.

**Topics**
+ [

## Richiede l'uso di IMDSv2
](#configure-IMDS-new-instances)
+ [

## Abilita l'IMDS IPv4 e gli endpoint IPv6
](#configure-IMDS-new-instances-ipv4-ipv6-endpoints)
+ [

## Disattivazione dell'accesso ai metadati dell'istanza
](#configure-IMDS-new-instances--turn-off-instance-metadata)
+ [

## Per consentire l'accesso ai tag nei metadati delle istanze
](#configure-IMDS-new-instances-tags-in-instance-metadata)

**Nota**  
Le impostazioni per queste opzioni sono configurate a livello di account, direttamente nell'account o utilizzando una policy dichiarativa. Devono essere configurate in ogni Regione AWS in cui si desidera configurare le opzioni dei metadati di istanza. L'utilizzo di una policy dichiarativa consente di applicare le impostazioni contemporaneamente su più regioni, nonché su più account. Quando viene utilizzata una policy dichiarativa, non è possibile modificare le impostazioni direttamente all'interno di un account. Questo argomento illustra la modalità di configurazione delle impostazioni direttamente all'interno di un account. Per informazioni sull'utilizzo delle policy dichiarative, consulta [Policy dichiarative](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) nella *Guida per l'utente di AWS Organizations *.

## Richiede l'uso di IMDSv2
<a name="configure-IMDS-new-instances"></a>

È possibile utilizzare i seguenti metodi per richiedere l'utilizzo di IMDSv2 sulle nuove istanze.

**Topics**
+ [

### Imposta IMDSv2 come impostazione predefinita per l'account
](#set-imdsv2-account-defaults)
+ [

### Applica a livello di account IMDSv2
](#enforce-imdsv2-at-the-account-level)
+ [

### Configurazione dell'istanza all'avvio
](#configure-IMDS-new-instances-instance-settings)
+ [

### Configurazione dell'AMI
](#configure-IMDS-new-instances-ami-configuration)
+ [

### Utilizzo di una policy IAM
](#configure-IMDS-new-instances-iam-policy)

### Imposta IMDSv2 come impostazione predefinita per l'account
<a name="set-imdsv2-account-defaults"></a>

È possibile impostare la versione predefinita per l'Instance Metadata Service (IMDS) a livello di account per ciascuno di essi. Regione AWS Ciò significa che quando si avvia una *nuova* istanza, la versione dei metadati dell'istanza viene impostata automaticamente sul valore predefinito a livello di account. Tuttavia, è possibile sovrascrivere manualmente il valore all'avvio o dopo l'avvio. Per ulteriori informazioni su come le impostazioni a livello di account e le sostituzioni manuali influiscono su un'istanza, consulta [Ordine di precedenza per le opzioni dei metadati di istanza](configuring-instance-metadata-options.md#instance-metadata-options-order-of-precedence).

**Nota**  
La configurazione dell'impostazione predefinita a livello di account non ripristina le istanze *esistenti*. Ad esempio, se imposti l'impostazione predefinita a livello di account su IMDSv2, le eventuali istanze esistenti impostate su non ne risentiranno. IMDSv1 Se desideri modificare il valore sulle istanze esistenti, devi modificare manualmente il valore sulle istanze stesse.

È possibile impostare l'account predefinito per la versione dei metadati dell'istanza in IMDSv2 modo che tutte le *nuove* istanze nell'account vengano avviate come IMDSv2 richiesto e vengano disabilitate. IMDSv1 Con questa impostazione predefinita dell'account, all'avvio un'istanza, i valori predefiniti dell'istanza sono i seguenti:
+ Console: la **versione dei metadati** è impostata su **Solo V2 (è richiesto il token)** e il **limite di hop di risposta dei metadati** è impostato su **2**.
+ AWS CLI: `HttpTokens` è impostato su `required` e `HttpPutResponseHopLimit` è impostato su `2`. 

**Nota**  
Prima di impostare l'account predefinito su IMDSv2, assicurati che le tue istanze non dipendano da. IMDSv1 Per ulteriori informazioni, consulta [Percorso consigliato per la richiesta IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2).

------
#### [ Console ]

**Da impostare IMDSv2 come predefinito per l'account per la regione specificata**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Per modificare la Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.

1. Nel pannello di navigazione seleziona **Pannello di controllo**.

1. Nella scheda **Attributi dell'account**, in **Impostazioni**, scegli Protezione e sicurezza **dei dati**.

1. Accanto a **Impostazioni IMDS predefinite**, scegli **Gestisci**.

1. Nella pagina **Gestisci impostazioni IMDS predefinite** procedi come segue:

   1. In **Servizio di metadati dell'istanza** scegli **Abilitato**.

   1. Per **Metadata version** (Versione metadati), seleziona **V2 only (token required)** (Solo V2 [token richiesto]).

   1. Per il **Limite di hop di risposta ai metadati**, specifica **2** se le istanze ospiteranno container. Altrimenti, seleziona **Nessuna preferenza**. Quando non viene specificata alcuna preferenza, il valore predefinito all’avvio è **2** se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è **1**.

   1. Scegliere **Aggiorna**.

------
#### [ AWS CLI ]

**Da impostare IMDSv2 come predefinito per l'account per la regione specificata**  
Usa il [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html)comando e specifica la regione in cui modificare le impostazioni a livello di account IMDS. Includi `--http-tokens` impostato su `required` e `--http-put-response-hop-limit` impostato su `2` se le istanze ospiteranno container. Altrimenti, specifica `-1` per non indicare alcuna preferenza. Quando `-1` (nessuna preferenza) viene specificato, il valore predefinito all’avvio è `2` se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è `1`.

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-put-response-hop-limit 2
```

Di seguito è riportato un output di esempio.

```
{
    "Return": true
}
```

**Per visualizzare le impostazioni predefinite dell'account per le opzioni dei metadati dell'istanza per la regione specificata**  
Usa il [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html)comando e specifica la regione.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

Di seguito è riportato un output di esempio.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpPutResponseHopLimit": 2
    },
    "ManagedBy": "account"
}
```

Il campo `ManagedBy` indica l'entità che ha configurato le impostazioni. In questo esempio, `account` indica che le impostazioni sono state configurate direttamente nell'account. Il valore di `declarative-policy` indicherebbe che le impostazioni sono state configurate in base a una policy dichiarativa. Per ulteriori informazioni, consulta [Policy dichiarative](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) nella *Guida per l'utente di AWS Organizations *.

**Da impostare IMDSv2 come predefinito per l'account per tutte le regioni**  
Utilizzare il [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html)comando per modificare le impostazioni a livello di account IMDS per tutte le regioni. Includi `--http-tokens` impostato su `required` e `--http-put-response-hop-limit` impostato su `2` se le istanze ospiteranno container. Altrimenti, specifica `-1` per non indicare alcuna preferenza. Quando `-1` (nessuna preferenza) viene specificato, il valore predefinito all’avvio è `2` se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è `1`.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens required \
            --http-put-response-hop-limit 2 \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

Di seguito è riportato un output di esempio.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Per visualizzare le impostazioni predefinite dell'account per le opzioni dei metadati dell'istanza per tutte le regioni**  
Utilizza il comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level          Hops    HttpTokens" ; \
echo -e "-------------- \t ------------   ----    ----------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

Di seguito è riportato un output di esempio.

```
Region           Level          Hops    HttpTokens
--------------   ------------   ----    ----------
ap-south-1       ACCOUNTLEVEL   2       required
eu-north-1       ACCOUNTLEVEL   2       required
eu-west-3        ACCOUNTLEVEL   2       required
...
```

------
#### [ PowerShell ]

**Da impostare IMDSv2 come predefinito per l'account per la regione specificata**  
Utilizzare il [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html)cmdlet e specificare la regione in cui modificare le impostazioni a livello di account IMDS. Includi `-HttpToken` impostato su `required` e `-HttpPutResponseHopLimit` impostato su `2` se le istanze ospiteranno container. Altrimenti, specifica `-1` per non indicare alcuna preferenza. Quando `-1` (nessuna preferenza) viene specificato, il valore predefinito all’avvio è `2` se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è `1`.

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

Di seguito è riportato un output di esempio.

```
True
```

**Per visualizzare le impostazioni predefinite dell'account per le opzioni dei metadati dell'istanza per la regione specificata**  
Utilizzare il [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html)cmdlet e specificare la regione.

```
Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List
```

Di seguito è riportato un output di esempio.

```
HttpEndpoint            : 
HttpPutResponseHopLimit : 2
HttpTokens              : required
InstanceMetadataTags    :
```

**Da impostare IMDSv2 come predefinito per l'account per tutte le regioni**  
Utilizzare il [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html)cmdlet per modificare le impostazioni a livello di account IMDS per tutte le regioni. Includi `-HttpToken` impostato su `required` e `-HttpPutResponseHopLimit` impostato su `2` se le istanze ospiteranno container. Altrimenti, specifica `-1` per non indicare alcuna preferenza. Quando `-1` (nessuna preferenza) viene specificato, il valore predefinito all’avvio è `2` se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Output previsto

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Per visualizzare le impostazioni predefinite dell'account per le opzioni dei metadati dell'istanza per tutte le regioni**  
Utilizza il cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Output di esempio

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Applica a livello di account IMDSv2
<a name="enforce-imdsv2-at-the-account-level"></a>

Puoi imporre l'uso di IMDSv2 a livello di account per ciascuno di essi. Regione AWS Se applicate, le istanze possono essere avviate solo se sono configurate in modo da richiedere. IMDSv2 Questa applicazione si applica indipendentemente dalla configurazione dell'istanza o dell'AMI.

**Nota**  
Prima di abilitare l' IMDSv2 applicazione a livello di account, assicurati che le applicazioni e il AMIs supporto siano disponibili IMDSv2. Per ulteriori informazioni, consulta [Percorso consigliato per la richiesta IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2). Se IMDSv2 l'applicazione è abilitata e non `httpTokens` è impostata né `required` nella configurazione dell'istanza all'avvio, né nelle impostazioni dell'account o nella configurazione AMI, l'avvio dell'istanza avrà esito negativo. Per informazioni sulla risoluzione dei problemi, consulta [L'avvio di un' IMDSv1istanza abilitata non riesce](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails).

**Nota**  
Questa impostazione non modifica la versione IMDS delle istanze esistenti, ma blocca l'attivazione IMDSv1 sulle istanze esistenti attualmente disattivate. IMDSv1

------
#### [ Console ]

**Da applicare IMDSv2 per l'account nella regione specificata**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Per modificare la Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.

1. Nel pannello di navigazione seleziona **Pannello di controllo**.

1. Nella scheda **Attributi dell'account**, in **Impostazioni**, scegli **Protezione e sicurezza dei dati**.

1. Accanto a **Impostazioni IMDS predefinite**, scegli **Gestisci**.

1. Nella pagina **Gestisci impostazioni IMDS predefinite** procedi come segue:

   1. Per **Metadata version** (Versione metadati), seleziona **V2 only (token required)** (Solo V2 [token richiesto]).

   1. Per **Enforce IMDSv2**, scegli **Abilitato**.

   1. Scegliere **Aggiorna**.

------
#### [ AWS CLI ]

**IMDSv2 Per applicare l'account nella regione specificata**  
 Usa il [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html)comando e specifica la regione in cui applicare IMDSv2. 

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-tokens-enforced enabled
```

Di seguito è riportato un output di esempio.

```
{
"Return": true
}
```

**Per visualizzare le impostazioni di IMDSv2 applicazione per l'account in una regione specifica**  
Usa il [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html)comando e specifica la regione.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

Di seguito è riportato un output di esempio.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpTokensEnforced": "enabled"
    },
    "ManagedBy": "account"
}
```

Il campo `ManagedBy` indica l'entità che ha configurato le impostazioni. In questo esempio, `account` indica che le impostazioni sono state configurate direttamente nell'account. Il valore di `declarative-policy` indicherebbe che le impostazioni sono state configurate in base a una policy dichiarativa. Per ulteriori informazioni, consulta [le politiche dichiarative](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) nella *AWS Organizations User Guide*.

**IMDSv2 Per applicare l'account in tutte le regioni**  
Usa il [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html)comando per applicarlo IMDSv2 in tutte le regioni.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

Di seguito è riportato un output di esempio.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Per visualizzare le impostazioni di IMDSv2 applicazione per l'account in tutte le regioni**  
Utilizza il comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level           HttpTokensEnforced" ; \
echo -e "-------------- \t ------------   ----------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --query 'AccountLevel.HttpTokensEnforced' \           
            --output text)
        echo -e "$region \t ACCOUNTLEVEL $output" 
    );
done
```

Di seguito è riportato un output di esempio.

```
Region           Level          HttpTokensEnforced
--------------   ------------   ------------------
ap-south-1       ACCOUNTLEVEL   enabled
eu-north-1       ACCOUNTLEVEL   enabled
eu-west-3        ACCOUNTLEVEL   enabled
...
```

------
#### [ PowerShell ]

**IMDSv2 Per applicare l'account nella regione specificata**  
Utilizzare il [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html)cmdlet e specificare la regione in cui applicare. IMDSv2 

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

Di seguito è riportato un output di esempio.

```
@{
    Return = $true
}
```

**Per visualizzare l'impostazione di IMDSv2 applicazione per l'account in una regione specifica**  
Usa il Get-EC2InstanceMetadataDefault comando e specifica la regione.

```
Get-EC2InstanceMetadataDefault -Region us-east-1
```

Di seguito è riportato un output di esempio.

```
@{
    AccountLevel = @{
        HttpTokens = "required"
        HttpTokensEnforced = "enabled"
    }
    ManagedBy = "account"
}
```

Il campo `ManagedBy` indica l'entità che ha configurato le impostazioni. In questo esempio, `account` indica che le impostazioni sono state configurate direttamente nell'account. Il valore di `declarative-policy` indicherebbe che le impostazioni sono state configurate in base a una policy dichiarativa. Per ulteriori informazioni, consulta [le politiche dichiarative](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) nella *AWS Organizations User Guide*.

**IMDSv2 Per applicare l'account in tutte le regioni**  
Usa il [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html)comando per applicarlo IMDSv2 in tutte le regioni.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

Di seguito è riportato un output di esempio.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Da impostare IMDSv2 come predefinito per l'account per tutte le regioni**  
Utilizzare il [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html)cmdlet per modificare le impostazioni a livello di account IMDS per tutte le regioni. Includi `-HttpToken` impostato su `required` e `-HttpPutResponseHopLimit` impostato su `2` se le istanze ospiteranno container. Altrimenti, specifica `-1` per non indicare alcuna preferenza. Quando `-1` (nessuna preferenza) viene specificato, il valore predefinito all’avvio è `2` se l’AMI dispone dell’impostazione `ImdsSupport: v2.0`; in caso contrario, il valore predefinito è `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Output previsto

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Per visualizzare le impostazioni predefinite dell'account per le opzioni dei metadati dell'istanza per tutte le regioni**  
Utilizza il cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Output di esempio

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Configurazione dell'istanza all'avvio
<a name="configure-IMDS-new-instances-instance-settings"></a>

Quando si [avvia un'istanza](ec2-launch-instance-wizard.md), è possibile configurare l'istanza in modo che richieda l'utilizzo IMDSv2 configurando i seguenti campi:
+ Console di Amazon EC2: imposta **Metadata version** (Versione metadati) su **V2 only (token required)** (Solo V2 [token richiesto]).
+ AWS CLI: imposta `HttpTokens` su `required`.

Quando specificate che IMDSv2 è obbligatorio, dovete anche abilitare l'endpoint Instance Metadata Service (IMDS) impostando **Metadata accessibile** su **Enabled** (console) o su (). `HttpEndpoint` `enabled`AWS CLI

In un ambiente container, quando IMDSv2 richiesto, consigliamo di impostare il limite di hop su. `2` Per ulteriori informazioni, consulta [Considerazioni sull'accesso ai metadati dell'istanza](instancedata-data-retrieval.md#imds-considerations).

------
#### [ Console ]

**Per richiedere l'uso di IMDSv2 su una nuova istanza**
+ Quando avvii una nuova istanza nella console Amazon EC2, espandi **Advanced details** (Dettagli avanzati) e procedi come segue:
  + Per **Metadata accessible** (Metadati accessibili), scegli **Enabled** (Abilitato).
  + Per **Metadata version** (Versione metadati), seleziona **V2 only (token required)** (Solo V2 [token richiesto]).
  + (Ambiente container) Per il **Limite di hop di risposta ai metadati**, scegliere **2**.

  Per ulteriori informazioni, consulta [Dettagli avanzati](ec2-instance-launch-parameters.md#liw-advanced-details).

------
#### [ AWS CLI ]

**Per richiedere l'uso di IMDSv2 su una nuova istanza**  
L'esempio [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) avvia un'istanza `c6i.large` con `--metadata-options` impostato su `HttpTokens=required`. Quando si specifica un valore per `HttpTokens`, è necessario impostare `HttpEndpoint` anche su `enabled`. Poiché l'intestazione del token sicuro è impostata `required` per le richieste di recupero dei metadati, è necessario che l'istanza venga utilizzata per la richiesta dei IMDSv2 metadati dell'istanza.

In un ambiente container, quando necessario, consigliamo di impostare IMDSv2 il limite di hop su with. `2` `HttpPutResponseHopLimit=2`

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
	...
    --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
```

------
#### [ PowerShell ]

**Per richiedere l'uso di IMDSv2 su una nuova istanza**  
Il seguente esempio di [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)cmdlet avvia un'`c6i.large`istanza con `MetadataOptions_HttpEndpoint` set to `enabled` e il `MetadataOptions_HttpTokens` parametro to. `required` Quando si specifica un valore per `HttpTokens`, è necessario impostare `HttpEndpoint` anche su `enabled`. Poiché l'intestazione secure token è impostata `required` per le richieste di recupero dei metadati, è necessario che l'istanza venga utilizzata per la richiesta dei metadati dell'istanza. IMDSv2 

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpTokens required
```

------
#### [ CloudFormation ]

*Per specificare le opzioni relative ai metadati per l'utilizzo di un'istanza CloudFormation, consultate la proprietà nella Guida per l'utente. [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html)AWS CloudFormation *

------

### Configurazione dell'AMI
<a name="configure-IMDS-new-instances-ami-configuration"></a>

Quando registri una nuova AMI o modifichi un'AMI esistente, puoi impostare il parametro `imds-support` su `v2.0`. Per le istanze avviate da questa AMI, **Versione metadati** sarà impostato su **Solo V2 (token obbligatorio)** (console) o `HttpTokens` sarà impostato su `required` (AWS CLI). Con queste impostazioni, l'istanza richiede che IMDSv2 venga utilizzata quando si richiedono i metadati dell'istanza.

Tieni presente che quando imposti `imds-support` su `v2.0`, anche per le istanze avviate da questa AMI **Metadata response hop limit** (Limite hop risposta metadati) (console) o `http-put-response-hop-limit` (AWS CLI) sarà impostato su **2**.

**Importante**  
Non utilizzare questo parametro a meno che il software AMI non lo supportiIMDSv2. Dopo aver impostato il valore su `v2.0`, non è possibile annullare l'operazione. L'unico modo per "reimpostare" l'AMI consiste nel creare una nuova AMI dallo snapshot sottostante.

**Per configurare una nuova AMI per IMDSv2**  
Utilizza uno dei seguenti metodi per configurare una nuova AMI perIMDSv2.

------
#### [ AWS CLI ]

L'esempio [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) seguente registra un'AMI utilizzando lo snapshot specificato di un volume root EBS come dispositivo `/dev/xvda`. Specificare `v2.0` il `imds-support` parametro in modo che le istanze avviate da questo AMI richiedano che IMDSv2 venga utilizzato quando si richiedono i metadati dell'istanza.

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
    --architecture x86_64 \
    --imds-support v2.0
```

------
#### [ PowerShell ]

Il seguente esempio di [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html)cmdlet registra un AMI utilizzando l'istantanea specificata di un volume root EBS come dispositivo. `/dev/xvda` Specificare `v2.0` il `ImdsSupport` parametro in modo che le istanze avviate da questo AMI richiedano che IMDSv2 venga utilizzato quando si richiedono i metadati dell'istanza.

```
Register-EC2Image `
    -Name 'my-image' `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping  ( 
    New-Object `
        -TypeName Amazon.EC2.Model.BlockDeviceMapping `
        -Property @{ 
        DeviceName = '/dev/xvda'; 
        EBS        = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ 
                SnapshotId = 'snap-0123456789example'
                VolumeType = 'gp3' 
                } )      
        }  ) `
    -Architecture X86_64 `
    -ImdsSupport v2.0
```

------

**Per configurare un AMI esistente per IMDSv2**  
Utilizza uno dei seguenti metodi per configurare un'AMI esistente perIMDSv2.

------
#### [ AWS CLI ]

L'[modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html)esempio seguente modifica IMDSv2 solo un AMI esistente. Specificare `v2.0` il `imds-support` parametro in modo che le istanze avviate da questo AMI richiedano che IMDSv2 venga utilizzato quando si richiedono i metadati dell'istanza.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --imds-support v2.0
```

------
#### [ PowerShell ]

Il seguente esempio di [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html)cmdlet modifica solo un AMI esistente. IMDSv2 Specificare `v2.0` il `imds-support` parametro in modo che le istanze avviate da questo AMI richiedano che IMDSv2 venga utilizzato quando si richiedono i metadati dell'istanza.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -ImdsSupport 'v2.0'
```

------

### Utilizzo di una policy IAM
<a name="configure-IMDS-new-instances-iam-policy"></a>

Puoi creare una policy IAM che esegua una delle seguenti operazioni:
+ Impedisce agli utenti di avviare nuove istanze a meno che non lo richiedano IMDSv2 sulla nuova istanza.
+ Impedisce agli utenti di chiamare l' ModifyInstanceMetadataOptions API per modificare le opzioni dei metadati di un'istanza in esecuzione. Limita l'accesso alla proprietà ModifyInstanceMetadataOptions HttpTokens per impedire aggiornamenti involontari delle istanze in esecuzione.
+ Impedisci agli utenti di chiamare l' ModifyInstanceMetadataDefaults API per modificare le impostazioni predefinite dell'account di HttpTokens e. httpTokensEnforced La limitazione dell'accesso a queste due proprietà garantirà che solo i ruoli autorizzati possano modificare le impostazioni predefinite dell'account.

**Per imporre l'uso di IMDSv2 su tutte le nuove istanze utilizzando una policy IAM**  
Per garantire che gli utenti possano avviare solo le istanze che richiedono l'uso di IMDSv2 quando richiedono i metadati dell'istanza, procedi come segue:
+ Limita l'accesso sia all'`ModifyInstanceMetadataDefaults`API che alle proprietà `ModifyInstanceMetadataOptions` e, in particolare, alle `httpTokens` proprietà and. `httpTokensEnforced`
+ Quindi, imposta l'account predefinito su `httpTokens = required` and`httpTokensEnforced = enabled`.

  Per un esempio di policy IAM, consulta [Utilizzo dei metadati delle istanze](ExamplePolicies_EC2.md#iam-example-instance-metadata).

## Abilita l'IMDS IPv4 e gli endpoint IPv6
<a name="configure-IMDS-new-instances-ipv4-ipv6-endpoints"></a>

L'IMDS ha due endpoint su un'istanza: IPv4 (`169.254.169.254`) e (). IPv6 `[fd00:ec2::254]` Quando si abilita l'IMDS, l' IPv4endpoint viene abilitato automaticamente. L' IPv6 endpoint rimane disabilitato anche se si avvia un'istanza in una IPv6 sottorete solo. Per abilitare l' IPv6 endpoint, è necessario farlo in modo esplicito. Quando si abilita l' IPv6 endpoint, l' IPv4endpoint rimane abilitato.

È possibile abilitare l' IPv6 endpoint all'avvio dell'istanza o dopo.

**Requisiti per l'abilitazione dell'endpoint IPv6**
+ Il tipo di istanza selezionato è [Istanza basata su Nitro](instance-types.md#instance-hypervisor-type).
+ La sottorete selezionata supporta IPv6, se la sottorete è a [doppio stack o solo](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range). IPv6 

Utilizza uno dei seguenti metodi per avviare un'istanza con l'endpoint IPv6 IMDS abilitato.

------
#### [ Console ]

**Per abilitare l' IPv6 endpoint IMDS all'avvio dell'istanza**
+ [Avvia l'istanza](ec2-launch-instance-wizard.md) nella console di Amazon EC2 con le opzioni specificate di seguito in **Advanced details** (Dettagli avanzati):
  + **Per **Metadata IPv6 endpoint**, scegli Abilitato.**

Per ulteriori informazioni, consulta [Dettagli avanzati](ec2-instance-launch-parameters.md#liw-advanced-details).

------
#### [ AWS CLI ]

**Per abilitare l' IPv6 endpoint IMDS all'avvio dell'istanza**  
Il seguente esempio di [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) avvia un'`c6i.large`istanza con l'endpoint abilitato per l' IPv6 IMDS. Per abilitare l' IPv6 endpoint, specificare per il parametro. `--metadata-options` `HttpProtocolIpv6=enabled` Quando si specifica un valore per `HttpProtocolIpv6`, è necessario impostare `HttpEndpoint` anche su `enabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ...
    --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
```

------
#### [ PowerShell ]

**Per abilitare l' IPv6 endpoint IMDS all'avvio dell'istanza**  
Il seguente esempio di [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)cmdlet avvia un'`c6i.large`istanza con l' IPv6 endpoint abilitato per l'IMDS. Per abilitare l'endpoint, specificare come. IPv6 `MetadataOptions_HttpProtocolIpv6` `enabled` Quando si specifica un valore per `MetadataOptions_HttpProtocolIpv6`, è necessario impostare `MetadataOptions_HttpEndpoint` anche su `enabled`.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpProtocolIpv6 enabled
```

------

## Disattivazione dell'accesso ai metadati dell'istanza
<a name="configure-IMDS-new-instances--turn-off-instance-metadata"></a>

È possibile disattivare l'accesso ai metadati dell'istanza disabilitando l'IMDS all'avvio di un'istanza. È possibile attivare l'accesso in un secondo momento riabilitando l'IMDS. Per ulteriori informazioni, consulta [Attivazione dell'accesso ai metadati dell'istanza](configuring-IMDS-existing-instances.md#enable-instance-metadata-on-existing-instances).

**Importante**  
È possibile scegliere di disabilitare l'IMDS all'avvio o dopo l'avvio. Se disabiliti l'IMDS *all'avvio*, quanto segue potrebbe non funzionare:  
Potresti non disporre dell'accesso SSH all'istanza. La `public-keys/0/openssh-key`, che è la chiave SSH pubblica dell'istanza, non sarà accessibile perché normalmente la chiave viene fornita dai metadati dell'istanza EC2 e l'accesso avviene tramite gli stessi.
I dati utente EC2 non saranno disponibili e non verranno eseguiti all'avvio dell'istanza. I dati utente EC2 sono ospitati sull'IMDS. Se disabiliti l'IMDS, disattivi di fatto l'accesso ai dati utente.
Per accedere a questa funzionalità, è possibile riabilitare l'IMDS dopo l'avvio.

------
#### [ Console ]

**Disattivazione dell'accesso ai metadati dell'istanza all'avvio**
+ [Avvia l'istanza](ec2-launch-instance-wizard.md) nella console di Amazon EC2 con le opzioni specificate di seguito in **Advanced details** (Dettagli avanzati):
  + Per **Metadata accessible** (Metadati accessibili), scegli **Disabled** (Disabilitato).

Per ulteriori informazioni, consulta [Dettagli avanzati](ec2-instance-launch-parameters.md#liw-advanced-details).

------
#### [ AWS CLI ]

**Disattivazione dell'accesso ai metadati dell'istanza all'avvio**  
Avvia l'istanza con `--metadata-options` impostato su `HttpEndpoint=disabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ... 
    --metadata-options "HttpEndpoint=disabled"
```

------
#### [ PowerShell ]

**Disattivazione dell'accesso ai metadati dell'istanza all'avvio**  
Il seguente esempio di [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)cmdlet avvia un'istanza con set to. `MetadataOptions_HttpEndpoint` `disabled`

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint disabled
```

------
#### [ CloudFormation ]

*Per specificare le opzioni relative ai metadati per un'istanza che utilizza CloudFormation, consulta la [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html)proprietà nella Guida per l'utente.CloudFormation * 

------

## Per consentire l'accesso ai tag nei metadati delle istanze
<a name="configure-IMDS-new-instances-tags-in-instance-metadata"></a>

Per impostazione predefinita, non è possibile accedere ai tag dell'istanza nei metadati dell'istanza. Per ogni istanza è necessario consentire l'accesso esplicitamente. Se l'accesso è consentito, le *chiavi* dei tag dell'istanza devono rispettare specifiche restrizioni relative ai caratteri, altrimenti l'avvio dell'istanza avrà esito negativo. Per ulteriori informazioni, consulta [Abilita l’accesso ai tag nei metadati dell’istanza](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

# Modifica delle opzioni dei metadati dell'istanza per le istanze esistenti
<a name="configuring-IMDS-existing-instances"></a>

Puoi modificare le opzioni dei metadati dell'istanza per le istanze esistenti.

Puoi inoltre creare una policy IAM che impedisce agli utenti di modificare le opzioni dei metadati dell'istanza in istanze esistenti. Per controllare quali utenti possono modificare le opzioni dei metadati dell'istanza, specifica una politica che impedisca a tutti gli utenti diversi dagli utenti con un ruolo specifico di utilizzare l'[ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html)API. Per un esempio di policy IAM, consulta [Utilizzo dei metadati delle istanze](ExamplePolicies_EC2.md#iam-example-instance-metadata).

**Nota**  
Se è stata utilizzata una policy dichiarativa per configurare le opzioni dei metadati dell'istanza, non puoi modificarle direttamente all'interno dell'account. Per ulteriori informazioni, consulta [Policy dichiarative](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) nella *Guida per l'utente di AWS Organizations *.

## Richiedi l'uso di IMDSv2
<a name="modify-require-IMDSv2"></a>

Utilizzate uno dei seguenti metodi per modificare le opzioni dei metadati dell'istanza su un'istanza esistente in modo da richiederne l'utilizzo quando IMDSv2 si richiedono i metadati dell'istanza. Quando IMDSv2 è richiesto, IMDSv1 non può essere utilizzato.

**Nota**  
Prima di IMDSv2 richiederlo, assicurati che l'istanza non stia effettuando IMDSv1 chiamate. La `MetadataNoToken` CloudWatch metrica tiene traccia delle IMDSv1 chiamate. Quando `MetadataNoToken` registra un IMDSv1 utilizzo pari a zero per un'istanza, l'istanza è pronta per essere richiesta IMDSv2.

------
#### [ Console ]

**Per richiedere l'uso di IMDSv2 su un'istanza esistente**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Selezionare l'istanza.

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

1. Nella finestra di dialogo **Modifica opzioni dei metadati dell'istanza**, esegui una delle operazioni indicate di seguito:

   1. In **Servizio di metadati dell'istanza**, seleziona **Abilita**.

   1. Per **IMDSv2**, scegli **Obbligatorio**.

   1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Per richiedere l'uso di IMDSv2 su un'istanza esistente**  
Utilizzate il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI e impostate il `http-tokens` parametro su. `required` Quando si specifica un valore per `http-tokens`, è necessario impostare `http-endpoint` anche su `enabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens required \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**Per richiedere l'uso di IMDSv2 su un'istanza esistente**  
Utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet e impostare il `HttpTokens` parametro su. `required` Quando si specifica un valore per `HttpTokens`, è necessario impostare `HttpEndpoint` anche su `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens required `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Ripristina l'uso di IMDSv1
<a name="modify-restore-IMDSv1"></a>

Quando IMDSv2 è richiesto su un'istanza, l'utilizzo di una IMDSv1 richiesta avrà esito negativo. Quando IMDSv2 è facoltativo, allora entrambi IMDSv2 IMDSv1 funzioneranno. Pertanto, per ripristinare IMDSv1, impostate su IMDSv2 optional (`httpTokens = optional`) utilizzando uno dei seguenti metodi.

La proprietà `httpTokensEnforced` IMDS impedisce inoltre i tentativi di attivazione IMDSv1 su un'istanza esistente. Se abilitato per un account in una regione, un tentativo di impostazione su `httpTokens` `optional` genererà un'`UnsupportedOperation`eccezione. Per ulteriori informazioni, vedere[Risoluzione dei problemi](#troubleshoot-modifying-an-imdsv1-enabled-instance-fails).

**Importante**  
Se l'avvio dell'istanza non riesce a causa dell' IMDSv2 imposizione, sono disponibili due opzioni per consentire il corretto avvio dell'istanza:  
**Avvia le istanze solo come IMDSv2 -only**: se il software in esecuzione sulle istanze utilizza IMDSv2 solo le istanze (nessuna dipendenza da IMDSv1), puoi avviare le istanze solo come istanze. IMDSv2 A tale scopo, esegui la configurazione IMDSv2 solo impostando nei parametri di avvio `httpTokens = required` o nei metadati le impostazioni predefinite per l'account nella regione. 
**Disabilita l'applicazione**: se il software dipende ancora da IMDSv1, imposta l'opzione `httpTokensEnforced` `disabled` per l'account nella regione. Per ulteriori informazioni, consulta [Applica a livello di account IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

------
#### [ Console ]

**Per ripristinare l'uso di IMDSv1 su un'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Selezionare l'istanza.

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

1. Nella finestra di dialogo **Modifica opzioni dei metadati dell'istanza**, esegui una delle operazioni indicate di seguito:

   1. In **Servizio di metadati dell'istanza**, assicurati che l'opzione **Abilita** sia selezionata.

   1. Per **IMDSv2**, scegli **Facoltativo**.

   1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Per ripristinare l'uso di IMDSv1 su un'istanza**  
È possibile utilizzare il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI con `http-tokens` set to per `optional` ripristinare l'uso dei metadati dell'istanza IMDSv1 quando si richiedono i metadati dell'istanza.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens optional \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**Per ripristinare l'uso di su un'istanza IMDSv1**  
È possibile utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet con `HttpTokens` set to per `optional` ripristinare l'utilizzo di IMDSv1 quando si richiedono i metadati dell'istanza.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens optional `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Modifica del limite di hop di risposta PUT
<a name="modify-PUT-response-hop-limit"></a>

Per istanze esistenti, puoi modificare le impostazioni del limite di hop della risposta `PUT`.

Attualmente AWS SDKs supporta solo AWS CLI e la modifica del limite dell'hop di risposta PUT.

------
#### [ AWS CLI ]

**Per modificare il limite di hop di risposta PUT**  
Utilizzate il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI e impostate il `http-put-response-hop-limit` parametro sul numero di hop richiesto. Nell'esempio seguente, il limite di hop è impostato su `3`. Tieni presente che quando si specifica un valore per `http-put-response-hop-limit`, è necessario anche impostare `http-endpoint` su `enabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-put-response-hop-limit 3 \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**Per modificare il limite di hop di risposta PUT**  
Utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet e impostare il `HttpPutResponseHopLimit` parametro sul numero di hop richiesto. Nell'esempio seguente, il limite di hop è impostato su `3`. Tieni presente che quando si specifica un valore per `HttpPutResponseHopLimit`, è necessario anche impostare `HttpEndpoint` su `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpPutResponseHopLimit 3 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Abilita l'IMDS e gli endpoint IPv4 IPv6
<a name="enable-ipv6-endpoint-for-existing-instances"></a>

L'IMDS ha due endpoint su un'istanza: IPv4 (`169.254.169.254`) e (). IPv6 `[fd00:ec2::254]` Quando si abilita l'IMDS, l' IPv4endpoint viene abilitato automaticamente. L' IPv6 endpoint rimane disabilitato anche se si avvia un'istanza in una IPv6 sottorete solo. Per abilitare l' IPv6 endpoint, è necessario farlo in modo esplicito. Quando si abilita l' IPv6 endpoint, l' IPv4endpoint rimane abilitato.

È possibile abilitare l' IPv6 endpoint all'avvio dell'istanza o dopo.

**Requisiti per l'abilitazione dell'endpoint IPv6**
+ Il tipo di istanza selezionato è [Istanza basata su Nitro](instance-types.md#instance-hypervisor-type).
+ La sottorete selezionata supporta IPv6, se la sottorete è a [doppio stack o solo](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range). IPv6 

Attualmente AWS SDKs supporta solo l' AWS CLI abilitazione dell' IPv6endpoint IMDS dopo il lancio dell'istanza.

------
#### [ AWS CLI ]

**Per abilitare l' IPv6 endpoint IMDS per la tua istanza**  
Utilizzate il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI e impostate il `http-protocol-ipv6` parametro su. `enabled` Tieni presente che quando si specifica un valore per `http-protocol-ipv6`, è necessario anche impostare `http-endpoint` su `enabled`.

```
aws ec2 modify-instance-metadata-options \
	--instance-id i-1234567890abcdef0 \
	--http-protocol-ipv6 enabled \
	--http-endpoint enabled
```

------
#### [ PowerShell ]

**Per abilitare l' IPv6 endpoint IMDS per la tua istanza**  
Utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet e impostare il parametro su. `HttpProtocolIpv6` `enabled` Tieni presente che quando si specifica un valore per `HttpProtocolIpv6`, è necessario anche impostare `HttpEndpoint` su `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpProtocolIpv6 enabled `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Attivazione dell'accesso ai metadati dell'istanza
<a name="enable-instance-metadata-on-existing-instances"></a>

Puoi attivare l'accesso ai metadati dell'istanza abilitando l'endpoint HTTP del servizio di metadati dell'istanza (IMDS), indipendentemente dalla versione in uso. Puoi invertire questa modifica in qualsiasi momento disabilitando l'endpoint HTTP.

Per attivare l'accesso ai metadati dell'istanza, utilizza uno dei metodi seguenti.

------
#### [ Console ]

**Per attivare l'accesso ai metadati dell'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Selezionare l'istanza.

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

1. Nella finestra di dialogo **Modifica opzioni dei metadati dell'istanza**, esegui una delle operazioni indicate di seguito:

   1. In **Servizio di metadati dell'istanza**, seleziona **Abilita**.

   1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Per attivare l'accesso ai metadati dell'istanza**  
Utilizzate il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI e impostate il `http-endpoint` parametro su. `enabled`

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**Per attivare l'accesso ai metadati dell'istanza**  
Utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet e impostare il `HttpEndpoint` parametro su. `enabled`

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Disattivazione dell'accesso ai metadati dell'istanza
<a name="disable-instance-metadata-on-existing-instances"></a>

Puoi disattivare l'accesso ai metadati dell'istanza disabilitando l'endpoint HTTP del servizio di metadati dell'istanza (IMDS), indipendentemente dalla versione in uso. Puoi invertire questa modifica in qualsiasi momento abilitando l'endpoint HTTP.

Per disattivare l'accesso ai metadati dell'istanza, utilizza uno dei metodi seguenti.

------
#### [ Console ]

**Come disattivare l'accesso ai metadati dell'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Selezionare l'istanza.

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

1. Nella finestra di dialogo **Modifica opzioni dei metadati dell'istanza**, esegui una delle operazioni indicate di seguito:

   1. In **Servizio di metadati dell'istanza**, deseleziona **Abilita**.

   1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Come disattivare l'accesso ai metadati dell'istanza**  
Utilizzate il comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html)CLI e impostate il `http-endpoint` parametro su. `disabled`

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint disabled
```

------
#### [ PowerShell ]

**Come disattivare l'accesso ai metadati dell'istanza**  
Utilizzare il [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html)cmdlet e impostare il `HttpEndpoint` parametro su. `disabled`

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint disabled).InstanceMetadataOptions
```

------

## Per consentire l'accesso ai tag nei metadati delle istanze
<a name="modify-access-to-tags-in-instance-metadata-on-existing-instances"></a>

Puoi consentire l'accesso ai tag nei metadati dell'istanza su un'istanza in esecuzione o interrotta. Per ogni istanza è necessario consentire l'accesso esplicitamente. Se l'accesso è consentito, le *chiavi* dei tag dell'istanza devono rispettare specifiche restrizioni relative ai caratteri, altrimenti si verifica un errore. Per ulteriori informazioni, consulta [Abilita l’accesso ai tag nei metadati dell’istanza](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

## Risoluzione dei problemi
<a name="troubleshoot-modifying-an-imdsv1-enabled-instance-fails"></a>

### La modifica di un' IMDSv1istanza -enabled non riesce
<a name="modifying-an-imdsv1-enabled-instance-fails"></a>

#### Description
<a name="modifying-an-imdsv1-enabled-instance-fails-description"></a>

Viene visualizzato il seguente messaggio di errore:

`You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.`

#### Causa
<a name="modifying-an-imdsv1-enabled-instance-fails-cause"></a>

Questo errore viene generato quando si tenta di modificare un'istanza esistente da IMDSv1 abilitare (`httpTokens = optional`) in un account in cui le impostazioni dell'account EC2 o una politica dichiarativa AWS dell'organizzazione impongono l'uso di (). IMDSv2 `httpTokensEnforced = enabled` 

#### Soluzione
<a name="modifying-an-imdsv1-enabled-instance-fails-solution"></a>

Se hai bisogno di IMDSv1 assistenza su istanze esistenti, dovrai disabilitare l'IMDSv2 applicazione per l'account nella regione. Per disabilitare IMDSv2 l'applicazione, imposta su`HttpTokensEnforced`. `disabled` Per ulteriori informazioni, [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html)consulta Amazon EC2 API Reference. Se preferisci configurare questa impostazione utilizzando la console, consulta[Applica a livello di account IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

Ti consigliamo di utilizzare IMDSv2 only (`httpTokens=required`). Per ulteriori informazioni, consulta [Passaggio all'utilizzo di Servizio di metadati dell'istanza Versione 2](instance-metadata-transition-to-version-2.md).

 

# Esegui i comandi quando avvii un'istanza EC2 con l'input dei dati utente
<a name="user-data"></a>

Quando avvii un'istanza Amazon EC2, puoi trasferire all'istanza i dati utente utilizzati per eseguire attività di configurazione automatizzate di routine o per l'esecuzione di script all'avvio dell'istanza.

Se sei interessato a scenari di automazione più complessi, potresti prendere in considerazione CloudFormation. Per ulteriori informazioni, consulta [Implementazione di applicazioni su Amazon EC2 con CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) nella *Guida per l'utente AWS CloudFormation *.

Su istanze Linux, puoi trasferire due tipi di dati utente a Amazon EC2, ovvero script della shell e direttive cloud-init. Puoi anche trasferire questi dati alla procedura guidata di avvio dell'istanza come testo normale, come un file (utile per avviare le istanze con gli strumenti a riga di comando) oppure come testo con codifica base64 (per le chiamate API).

Su istanze Windows, gli agenti di avvio gestiscono gli script dei dati utente.

**Considerazioni**
+ I dati utente vengono considerati dati opachi, ovvero i dati forniti saranno i dati visualizzati e disponibili. Il modo in cui viene interpretato dipende dall'istanza.
+ I dati utente devono essere codificati con base64. La console Amazon EC2 può eseguire automaticamente la codifica con base64 oppure accettare input codificati con base64. Se recuperi i dati utente usando i metadati dell’istanza o la console, vengono decodificati automaticamente con base64.
+ 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)\$14.
+ I dati utente sono un attributo dell'istanza. Se si crea un'AMI da un'istanza, i dati utente dell'istanza non vengono inclusi nell'AMI.

## I dati degli utenti in Console di gestione AWS
<a name="user-data-console"></a>

Puoi specificare i dati utente dell'istanza al momento dell'avvio dell'istanza. Se il volume root dell'istanza è un volume EBS, puoi anche arrestare l'istanza e aggiornare i relativi dati utente.

### Specifica i dati utente dell'istanza all'avvio con Launch Wizard
<a name="user-data-launch-instance-wizard"></a>

Puoi specificare i dati utente quando si avvia un'istanza con Launch Wizard nella console EC2. Per specificare i dati utente all'avvio, segui la procedura di [avvio di un'istanza](ec2-launch-instance-wizard.md). Il campo **User data** (Dati utente) campo si trova nella sezione [Dettagli avanzati](ec2-instance-launch-parameters.md#liw-advanced-details) della procedura guidata di avvio dell'istanza. Inserisci PowerShell lo script nel campo **Dati utente**, quindi completa la procedura di avvio dell'istanza.

Nel seguente screenshot del campo **Dati utente**, lo script di esempio crea un file nella cartella temporanea di Windows, utilizzando la data e l'orario correnti nel nome del file. Quando includi `<persist>true</persist>`, lo script viene eseguito ogni volta che riavvii o avvii l'istanza. Se lasci vuota la casella di spunta **I dati utente sono già stati codificati in base64**, la console Amazon EC2 esegue la codifica in base64 per te.

![\[Campo di testo dei dati utente in Advanced Details (Dettagli avanzati).\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/images/configure_ec2config_userdata.png)


Per ulteriori informazioni, consulta [Specifica i dati utente dell'istanza all'avvio con Launch Wizard](#user-data-launch-instance-wizard). Per un esempio di Linux che utilizza il AWS CLI, vedi[I dati dell'utente e il AWS CLI](#user-data-api-cli). Per un esempio di Windows che utilizza gli strumenti per Windows PowerShell, vedere[Dati utente e strumenti per Windows PowerShell](#user-data-powershell).

### Visualizzazione e aggiornamento dei dati utente dell'istanza
<a name="user-data-view-change"></a>

Puoi visualizzare i dati utente dell'istanza per qualsiasi istanza, oltre a poter aggiornare i dati utente dell'istanza per un'istanza arrestata.

**Aggiornamento dei dati utente di un'istanza tramite la console**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Selezionare l'istanza e scegliere **Actions (Operazioni)**, **Instance state (Stato istanza)**, **Stop (Arresta)**.
**avvertimento**  
Quando si arresta un'istanza, i dati sui volumi dell'Instance Store vengono persi. Per conservare questi dati, esegui il backup su una memoria persistente.

1. Quando viene richiesta la conferma, selezionare **Stop (Arresta)**. Possono essere necessari alcuni minuti per arrestare l'istanza.

1. Con l'istanza ancora selezionata, selezionare **Actions (Operazioni)**, **Instance Settings (Impostazioni istanza)**, **Edit user data (Modifica i dati utente)**. Non puoi modificare i dati utente se l'istanza è in esecuzione, ma puoi visualizzarli.

1. Nella finestra di dialogo **Edit user data (Modifica i dati utente)**, aggiorna i dati utente, quindi scegli **Save (Salva)**. Per eseguire gli script dei dati utente ogni volta che riavvii o avvii l'istanza, aggiungi `<persist>true</persist>`, come illustrato nell'esempio seguente:  
![\[Finestra di dialogo Edit User Data (Modifica dati utente).\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/images/view-change-user-data.png)

1. Avviare l'istanza. Se hai abilitato l'esecuzione dei dati utente per i riavvii o gli avvii successivi, gli script dei dati utente aggiornati vengono eseguiti come parte del processo di avvio dell'istanza.

## In che modo Amazon EC2 gestisce i dati utente per le istanze Linux
<a name="userdata-linux"></a>

Gli esempi seguenti usano i dati utente per eseguire comandi che configurano un server LAMP all’avvio dell’istanza. In ogni esempio, vengono eseguite le seguenti attività:
+ I pacchetti del software di distribuzione vengono aggiornati.
+ Il server Web, `php`, e i pacchetti `mariadb` vengono installati.
+ Il servizio `httpd` viene avviato e abilitato.
+ L’utente `ec2-user` viene aggiunto al gruppo apache.
+ Vengono configurati la proprietà e le autorizzazioni di file appropriati per la directory Web e i file in essa contenuti.
+ Viene creata una semplice pagina Web per testare il server Web e il motore PHP.

**Topics**
+ [

### Prerequisiti
](#user-data-requirements)
+ [

### Dati utente e script della shell
](#user-data-shell-scripts)
+ [

### Aggiornamento dei dati utente dell'istanza
](#user-data-modify)
+ [

### Dati utente e direttive cloud-init
](#user-data-cloud-init)
+ [

### I dati dell'utente e il AWS CLI
](#user-data-api-cli)
+ [

### Combinazione di script di shell e direttive cloud-init
](#user-data-mime-multi)

### Prerequisiti
<a name="user-data-requirements"></a>

Per gli esempi in questo argomento si presuppone quanto riportato di seguito:
+ L'istanza dispone di un nome DNS pubblico raggiungibile da Internet.
+ Il gruppo di sicurezza associato all'istanza è configurato per consentire il traffico SSH (porta 22) in modo da potersi connettere all'istanza per visualizzare i file di log di output.
+ L’istanza viene avviata tramite un’AMI Amazon Linux. Per altre distribuzioni Linux, i comandi e le direttive potrebbero non funzionare. Per ulteriori informazioni su altre distribuzioni, ad esempio sul relativo supporto delle direttive cloud-init, consulta la documentazione relativa alla distribuzione specifica.

### Dati utente e script della shell
<a name="user-data-shell-scripts"></a>

Se hai familiarità con lo scripting della shell, questo è il modo più semplice e completo per inviare le istruzioni a un'istanza all'avvio. L'aggiunta di queste attività in fase di avvio aumenta il tempo necessario per l'avvio dell'istanza. Ti consigliamo di prevedere alcuni minuti aggiuntivi per il completamento delle attività prima di procedere alla verifica del corretto completamento dello script utente.

**Importante**  
Per impostazione predefinita, gli script di dati utente e le direttive cloud-init vengono eseguiti solo durante il ciclo di avvio quando si avvia un'istanza per la prima volta. È possibile aggiornare la configurazione per garantire che gli script dei dati utente e le direttive cloud-init vengano eseguiti ogni volta che si riavvia l'istanza. Per ulteriori informazioni, consulta [Come posso utilizzare i dati utente per eseguire automaticamente uno script a ogni riavvio della mia istanza Amazon EC2 Linux](https://repost.aws/knowledge-center/execute-user-data-ec2)? nel AWS Knowledge Center.

Gli script della shell relativi ai dati utente devono iniziare con i caratteri `#!` e con il percorso dell'interprete che deve leggere lo script, in genere **/bin/bash)**. Per un'introduzione allo scripting della shell, consulta il [Manuale di riferimento di Bash](https://www.gnu.org/software/bash/manual/bash.html) sul sito Web del *sistema operativo GNU*.

Gli script immessi come dati utente vengono eseguiti come utente root. Non utilizzare pertanto il comando **sudo** nello script. Ricorda che tutti i file creati saranno di proprietà dell'utente root. Se devi concedere l'accesso ai file a utenti non root, devi modificare di conseguenza le autorizzazioni nello script. Inoltre, dal momento che lo script non viene eseguito in modo interattivo, non puoi includere comandi che richiedono il feedback degli utenti, ad esempio il comando **yum update** senza il contrassegno `-y`.

Se utilizzi un' AWS API, inclusa la AWS CLI, in uno script di dati utente, devi utilizzare un profilo di istanza all'avvio dell'istanza. Un profilo di istanza fornisce le AWS credenziali appropriate richieste dallo script dei dati utente per emettere la chiamata API. Per ulteriori informazioni, consulta [Use instance profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) nella Guida per l’utente IAM. Le autorizzazioni assegnate al ruolo IAM dipendono dai servizi chiamati con l'API. Per ulteriori informazioni, consulta [Ruoli IAM per Amazon EC2](iam-roles-for-amazon-ec2.md).

Il file di log dell'output della direttiva cloud-init acquisisce l'output della console in modo da semplificare il debug degli script dopo l'avvio se l'istanza ha un comportamento imprevisto. Per visualizzare il file di log, [connettiti all'istanza](connect-to-linux-instance.md) e apri `/var/log/cloud-init-output.log`.

Quando uno script di dati utente viene elaborato, viene copiato ed eseguito da `/var/lib/cloud/instances/instance-id/`. Lo script non viene eliminato dopo l'esecuzione. Assicurati di eliminare gli script di dati utente da `/var/lib/cloud/instances/instance-id/` prima di creare un'AMI dall'istanza. In caso contrario, lo script esisterà in questa directory su qualsiasi istanza avviata dall'AMI.

### Aggiornamento dei dati utente dell'istanza
<a name="user-data-modify"></a>

Per aggiornare i dati utente dell'istanza, è necessario prima arrestare l'istanza. Se l'istanza è in esecuzione, è possibile visualizzare i dati utente ma non modificarli.

**avvertimento**  
Quando si arresta un'istanza, i dati sui volumi dell'Instance Store vengono persi. Per conservare questi dati, esegui il backup su una memoria persistente.

**Per modificare i dati utente dell'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Seleziona l'istanza e scegli **Instance state (Stato istanza)**, **Stop instance (Arresta istanza)**. Se questa opzione è disabilitata, l’istanza è già arrestata oppure il suo volume root è un volume di archivio dell’istanza.

1. Quando viene richiesta la conferma, selezionare **Stop (Arresta)**. Possono essere necessari alcuni minuti per arrestare l'istanza.

1. Con l'istanza ancora selezionata, selezionare **Actions (Operazioni)**, **Instance Settings (Impostazioni istanza)**, **Edit user data (Modifica i dati utente)**.

1. Modificare i dati utente in base alle esigenze, quindi scegliere **Save (Salva)**.

1. Avviare l'istanza. I nuovi dati utente sono visibili nell'istanza dopo averla avviata. Tuttavia, gli script dei dati utente non vengono eseguiti.

### Dati utente e direttive cloud-init
<a name="user-data-cloud-init"></a>

Il pacchetto cloud-init configura aspetti specifici di una nuova istanza di Amazon Linux quando viene avviata. In particolare, configura il file `.ssh/authorized_keys` per ec2-user in modo da consentirti di eseguire il login utilizzando la tua chiave privata. Per ulteriori informazioni sulle attività di configurazione eseguite dal pacchetto cloud-init per le istanze Linux di Amazon, consulta la seguente documentazione.
+ **Amazon Linux 2023** – [Customized cloud-init](https://docs.aws.amazon.com/linux/al2023/ug/cloud-init.html)
+ **Amazon Linux 2** – [Using cloud-init on Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/amazon-linux-cloud-init.html)

Le direttive utente cloud-init possono essere trasferite a un'istanza all'avvio con le stesse modalità di trasferimento di uno script, anche se la sintassi è diversa. Per ulteriori informazioni su cloud-init, consulta. [https://cloudinit.readthedocs.org/en/latest/index.html](https://cloudinit.readthedocs.org/en/latest/index.html)

**Importante**  
Per impostazione predefinita, gli script di dati utente e le direttive cloud-init vengono eseguiti solo durante il ciclo di avvio quando si avvia un'istanza per la prima volta. È possibile aggiornare la configurazione per garantire che gli script dei dati utente e le direttive cloud-init vengano eseguiti ogni volta che si riavvia l'istanza. Per ulteriori informazioni, consulta [Come posso utilizzare i dati utente per eseguire automaticamente uno script a ogni riavvio della mia istanza Amazon EC2 Linux](https://repost.aws/knowledge-center/execute-user-data-ec2)? nel AWS Knowledge Center.

L'aggiunta di queste attività in fase di avvio aumenta il tempo necessario per l'avvio di un'istanza. Ti consigliamo di prevedere alcuni minuti aggiuntivi per il completamento delle attività prima di procedere alla verifica del corretto completamento delle direttive relative ai dati utente.

**Per trasmettere le direttive cloud-init a un’istanza Amazon Linux**

1. Segui la procedura per l'[avvio di un'istanza](ec2-launch-instance-wizard.md). Il campo **User data** (Dati utente) campo si trova nella sezione [Dettagli avanzati](ec2-instance-launch-parameters.md#liw-advanced-details) della procedura guidata di avvio dell'istanza. Inserisci il testo della direttiva cloud-init nel campo **User data** (Dati utente), quindi completa la procedura di avvio dell'istanza.

   Negli esempi riportati di seguito, le direttive creano e configurano un server Web su Amazon Linux. La riga `#cloud-config` all'inizio è obbligatoria per l'identificazione dei comandi come direttive cloud-init.

------
#### [ AL2023 ]

   ```
   #cloud-config
   package_update: true
   package_upgrade: all
   	
   packages:
   - httpd
   - mariadb105-server
   - php8.1
   - php8.1-mysqlnd
   
   runcmd:
   - systemctl start httpd
   - systemctl enable httpd
   - [ sh, -c, "usermod -a -G apache ec2-user" ]
   - [ sh, -c, "chown -R ec2-user:apache /var/www" ]
   - chmod 2775 /var/www
   - [ find, /var/www, -type, d, -exec, chmod, 2775, {}, \; ]
   - [ find, /var/www, -type, f, -exec, chmod, 0664, {}, \; ]
   - [ sh, -c, 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php' ]
   ```

------
#### [ AL2 ]

   ```
   #cloud-config
   package_update: true
   package_upgrade: all
   	
   packages:
   - httpd
   - mariadb-server
   	
   runcmd:
   - [ sh, -c, "amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2" ]
   - systemctl start httpd
   - systemctl enable httpd
   - [ sh, -c, "usermod -a -G apache ec2-user" ]
   - [ sh, -c, "chown -R ec2-user:apache /var/www" ]
   - chmod 2775 /var/www
   - [ find, /var/www, -type, d, -exec, chmod, 2775, {}, \; ]
   - [ find, /var/www, -type, f, -exec, chmod, 0664, {}, \; ]
   - [ sh, -c, 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php' ]
   ```

------

1. Prevedi tempo aggiuntivo per l'avvio dell'istanza e l'esecuzione delle direttive nei dati utente e quindi verifica se le direttive hanno completato le attività come previsto.

   Nel nostro esempio, in un browser Web, inserisci l'URL del file di test PHP creato dalle direttive. Questo URL è l'indirizzo DNS pubblico dell'istanza, seguito da una barra e dal nome di file.

   ```
   http://my.public.dns.amazonaws.com/phpinfo.php
   ```

   Viene visualizzata la pagina delle informazioni PHP. Se non sei in grado di vedere questa pagina, controlla che il gruppo di sicurezza che stai utilizzando contenga una regola che consenta il traffico HTTP (porta 80). Per ulteriori informazioni, consulta [Configurazione delle regole per i gruppi di sicurezza](changing-security-group.md#add-remove-security-group-rules).

1. (Facoltativo) Se le direttive non hanno completato le attività previste oppure se desideri verificare che siano state completate senza errori, [connettiti all'istanza](connect-to-linux-instance.md), esamina il file di log dell'output (`/var/log/cloud-init-output.log`) e cerca eventuali messaggi di errore nell'output. Per ulteriori informazioni sul debug, è possibile aggiungere la seguente riga alle direttive:

   ```
   output : { all : '| tee -a /var/log/cloud-init-output.log' }
   ```

   Questa direttiva invia l'output del comando **runcmd** a `/var/log/cloud-init-output.log`.

### I dati dell'utente e il AWS CLI
<a name="user-data-api-cli"></a>

È possibile utilizzare i AWS CLI per specificare, modificare e visualizzare i dati utente per l'istanza. Per informazioni sulla visualizzazione dei dati utente dall'istanza tramite metadati dell'istanza, consulta [Accesso ai metadati dell'istanza per un'istanza EC2](instancedata-data-retrieval.md).

In Windows, è possibile utilizzare il AWS Tools for Windows PowerShell anziché utilizzare AWS CLI. Per ulteriori informazioni, consulta [Dati utente e strumenti per Windows PowerShell](#user-data-powershell).

**Esempio: specifica dei dati utente all'avvio**  
Per specificare i dati utente all'avvio di un'istanza, utilizza il comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) con il parametro `--user-data`. Con**run-instances**, AWS CLI esegue la codifica in base64 dei dati utente per te.

L'esempio seguente illustra come specificare uno script come stringa nella riga di comando:

```
aws ec2 run-instances --image-id ami-abcd1234 --count 1 --instance-type m3.medium \
    --key-name my-key-pair --subnet-id subnet-abcd1234 --security-group-ids sg-abcd1234 \
    --user-data echo user data
```

L'esempio seguente illustra come specificare uno script utilizzando un file di testo. Assicurati di utilizzare il prefisso `file://` per specificare il file.

```
aws ec2 run-instances --image-id ami-abcd1234 --count 1 --instance-type m3.medium \
    --key-name my-key-pair --subnet-id subnet-abcd1234 --security-group-ids sg-abcd1234 \
    --user-data file://my_script.txt
```

Di seguito è riportato un esempio di file di testo con uno script della shell.

```
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
```

**Esempio: modifica dei dati utente di un'istanza arrestata**  
È possibile modificare i dati utente di un'istanza interrotta utilizzando il comando. [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) Con**modify-instance-attribute**, AWS CLI non esegue la codifica in base64 dei dati utente per voi.
+ Su un computer **Linux** utilizzare il comando con codifica Base64 per codificare i dati utente.

  ```
  base64 my_script.txt >my_script_base64.txt
  ```
+ Su un computer **Windows**, utilizza il comando certutil per codificare i dati utente. Prima di poter utilizzare questo file con AWS CLI, è necessario rimuovere la prima riga (BEGIN CERTIFICATE) e l'ultima (END CERTIFICATE).

  ```
  certutil -encode my_script.txt my_script_base64.txt
  notepad my_script_base64.txt
  ```

Utilizza i parametri `--attribute` e `--value` per utilizzare il file di testo codificato per specificare i dati utente. Assicurati di utilizzare il prefisso `file://` per specificare il file.

```
aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --attribute userData --value file://my_script_base64.txt
```

**Esempio: cancellazione dei dati utente di un'istanza arrestata**  
Per eliminare i dati utente esistenti, utilizzate il [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html)comando come segue:

```
aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --user-data Value=
```

**Esempio: visualizzazione dei dati utente**  
Per recuperare i dati utente per un'istanza, utilizzate il [describe-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html)comando. Con**describe-instance-attribute**, AWS CLI non esegue la decodifica in base64 dei dati utente per voi.

```
aws ec2 describe-instance-attribute --instance-id i-1234567890abcdef0 --attribute userData
```

L'esempio seguente è l'output contenente i dati utente con codifica base64.

```
{
    "UserData": {
        "Value": "IyEvYmluL2Jhc2gKeXVtIHVwZGF0ZSAteQpzZXJ2aWNlIGh0dHBkIHN0YXJ0CmNoa2NvbmZpZyBodHRwZCBvbg=="
    },
    "InstanceId": "i-1234567890abcdef0"
}
```
+ Su un computer **Linux**, utilizza l'opzione `--query` per recuperare i dati utente codificati e il comando con codifica Base64 per decodificarli.

  ```
  aws ec2 describe-instance-attribute --instance-id i-1234567890abcdef0 --attribute userData --output text --query "UserData.Value" | base64 --decode
  ```
+ Su un computer **Windows**, utilizza l'opzione `--query` per recuperare i dati utente codificati e il comando certutil per decodificarli. Si noti che l'output codificato viene memorizzato in un file, mentre l'output decodificato viene memorizzato in un file diverso.

  ```
  aws ec2 describe-instance-attribute --instance-id i-1234567890abcdef0 --attribute userData --output text --query "UserData.Value" >my_output.txt
  certutil -decode my_output.txt my_output_decoded.txt
  type my_output_decoded.txt
  ```

Di seguito è riportato un output di esempio.

```
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
```

### Combinazione di script di shell e direttive cloud-init
<a name="user-data-mime-multi"></a>

Per impostazione predefinita, nei dati utente puoi includere solo un tipo di contenuto alla volta. Tuttavia, puoi utilizzare tipi di contenuto `text/cloud-config` e `text/x-shellscript` in un file multipart MIME per includere nei dati utente sia uno script di shell che direttive cloud-init.

Di seguito è illustrato il formato multipart MIME.

```
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
	
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
	
#cloud-config
cloud-init directives
	
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
	
#!/bin/bash
shell script commands
--//--
```

Ad esempio, i seguenti dati utente includono direttive cloud-init e uno script di shell bash. Le direttive cloud-init creano un file (`/test-cloudinit/cloud-init.txt`) e scrivono `Created by cloud-init` in tale file. Lo script della shell bash crea un file (`/test-userscript/userscript.txt`) e scrive `Created by bash shell script` in quel file.

```
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
	
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
	
#cloud-config
runcmd:
- [ mkdir, /test-cloudinit ]
write_files:
- path: /test-cloudinit/cloud-init.txt
content: Created by cloud-init
	
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
	
#!/bin/bash
mkdir test-userscript
touch /test-userscript/userscript.txt
echo "Created by bash shell script" >> /test-userscript/userscript.txt
--//--
```

## In che modo Amazon EC2 gestisce i dati utente per le istanze Windows
<a name="ec2-windows-user-data"></a>

Su istanze Windows, l'agente di avvio svolge le attività relative ai dati degli utenti. Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [EC2Avvia v2](ec2launch-v2.md) 
+ [EC2Avvio](ec2launch.md) 
+ [EC2Servizio Config](ec2config-service.md)

[Per esempi di assemblaggio di una `UserData` proprietà in un CloudFormation modello, vedere [Base64 Encoded Property e Base64 Encoded UserData Property with](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-general.html#scenario-userdata-base64) and. UserData AccessKey SecretKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-general.html#scenario-userdata-base64-with-keys)

Per un esempio di esecuzione di comandi su un'istanza all'interno del gruppo Auto Scaling che funzionano con gli hook del ciclo di vita, consulta [Tutorial: configurazione dei dati utente per recuperare lo stato del ciclo di vita obiettivo tramite i metadati dell'istanza](https://docs.aws.amazon.com/autoscaling/ec2/userguide/tutorial-lifecycle-hook-instance-metadata.html) nella *Guida per l'utente di Amazon EC2 Auto Scaling*.

**Topics**
+ [

### Script di dati utente
](#user-data-scripts)
+ [

### Dati utente compressi
](#user-data-compressed)
+ [

### Esecuzione dei dati utente
](#user-data-execution)
+ [

### Dati utente e strumenti per Windows PowerShell
](#user-data-powershell)

### Script di dati utente
<a name="user-data-scripts"></a>

Per l'esecuzione di script da `EC2Config` o `EC2Launch`, è necessario racchiudere lo script all'interno di un tag speciale quando viene aggiunto ai dati utente. Il tag utilizzato dipende dal fatto che i comandi vengano eseguiti in una finestra del prompt dei comandi (comandi batch) o utilizzino Windows. PowerShell

Se si specificano sia uno script batch che uno PowerShell script di Windows, lo script batch viene eseguito per primo e lo PowerShell script di Windows viene eseguito successivamente, indipendentemente dall'ordine in cui vengono visualizzati nei dati utente dell'istanza.

Se si utilizza un' AWS API, inclusa la AWS CLI, in uno script di dati utente, è necessario utilizzare un profilo di istanza all'avvio dell'istanza. Un profilo di istanza fornisce le AWS credenziali appropriate richieste dallo script dei dati utente per effettuare la chiamata API. Per ulteriori informazioni, consulta [Profili delle istanze](iam-roles-for-amazon-ec2.md#ec2-instance-profile). Le autorizzazioni assegnate al ruolo IAM dipendono dai servizi chiamati con l'API. Per ulteriori informazioni, consulta [Ruoli IAM per Amazon EC2](iam-roles-for-amazon-ec2.md).

**Topics**
+ [

#### Sintassi di script batch
](#user-data-batch-scripts)
+ [

#### Sintassi per gli script di Windows PowerShell
](#user-data-powershell-scripts)
+ [

#### Sintassi per gli script di configurazione YAML
](#user-data-yaml-scripts)
+ [

#### Codifica Base64
](#user-data-base64-encoding)

#### Sintassi di script batch
<a name="user-data-batch-scripts"></a>

Specificare uno script batch tramite il tag `script`. Separa i comandi utilizzando le interruzioni di riga, come illustrato nell'esempio seguente.

```
<script>
    echo Current date and time >> %SystemRoot%\Temp\test.log
    echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>
```

Per impostazione predefinita, gli script di dati utente vengono eseguiti una volta all'avvio dell'istanza. Per eseguire gli script di dati utente ogni volta che si riavvia o avvia l'istanza, aggiungere `<persist>true</persist>` ai dati utente.

```
<script>
    echo Current date and time >> %SystemRoot%\Temp\test.log
    echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>
<persist>true</persist>
```

**EC2Avvia l'agente v2**  
Per eseguire uno script di dati utente XML come processo indipendente con l'**executeScript**attività EC2 Launch v2 nello `UserData` stage, aggiungete `<detach>true</detach>` i dati utente.

**Nota**  
Il tag detach non è supportato dai precedenti agenti di avvio.

```
<script>
    echo Current date and time >> %SystemRoot%\Temp\test.log
    echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>
<detach>true</detach>
```

#### Sintassi per gli script di Windows PowerShell
<a name="user-data-powershell-scripts"></a>

 AWS Windows AMIs include [AWS Tools for Windows PowerShell](https://aws.amazon.com/powershell/), quindi è possibile specificare questi cmdlet nei dati utente. Se associ un ruolo IAM alla tua istanza, non è necessario specificare le credenziali per i cmdlet, poiché le applicazioni eseguite sull'istanza utilizzano le credenziali del ruolo per accedere alle AWS risorse (ad esempio, i bucket Amazon S3).

Specificate uno script di Windows utilizzando il tag. PowerShell `<powershell>` Separare i comandi tramite interruzioni di riga. Il tag `<powershell>` rileva la distinzione tra maiuscole e minuscole.

Esempio:

```
<powershell>
    $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
```

Per impostazione predefinita, gli script di dati utente vengono eseguiti una volta all'avvio dell'istanza. Per eseguire gli script di dati utente ogni volta che si riavvia o avvia l'istanza, aggiungere `<persist>true</persist>` ai dati utente.

```
<powershell>
    $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
<persist>true</persist>
```

È possibile specificare uno o più PowerShell argomenti con il `<powershellArguments>` tag. Se non viene passato alcun argomento, EC2 Launch e EC2 Launch v2 aggiungono il seguente argomento per impostazione predefinita:`-ExecutionPolicy Unrestricted`.

**Esempio**:

```
<powershell>
    $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
<powershellArguments>-ExecutionPolicy Unrestricted -NoProfile -NonInteractive</powershellArguments>
```

**EC2Avvia l'agente v2**  
Per eseguire uno script di dati utente XML come processo indipendente con l'**executeScript**attività EC2 Launch v2 nello `UserData` stage, aggiungete `<detach>true</detach>` i dati utente.

**Nota**  
Il tag detach non è supportato dai precedenti agenti di avvio.

```
<powershell>
    $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
<detach>true</detach>
```

#### Sintassi per gli script di configurazione YAML
<a name="user-data-yaml-scripts"></a>

Se utilizzi EC2 Launch v2 per eseguire gli script, puoi usare il formato YAML. Per visualizzare le attività di configurazione, i dettagli e gli esempi per EC2 Launch v2, consulta. [EC2Avvia la configurazione delle attività v2](ec2launch-v2-settings.md#ec2launch-v2-task-configuration)

Specificare uno script YAML con l'attività `executeScript`.

**Esempio di sintassi YAML per eseguire uno script PowerShell ** 

```
version: 1.0
tasks:
- task: executeScript
  inputs:
  - frequency: always
    type: powershell
    runAs: localSystem
    content: |-
      $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
      New-Item $file -ItemType file
```

**Esempio di sintassi YAML per eseguire uno script batch**

```
version: 1.1
tasks:
- task: executeScript
  inputs:
  - frequency: always
    type: batch
    runAs: localSystem
    content: |-
      echo Current date and time >> %SystemRoot%\Temp\test.log
      echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
```

#### Codifica Base64
<a name="user-data-base64-encoding"></a>

Se utilizzi l'API Amazon EC2 o uno strumento che non esegue la codifica base64 dei dati utente, codificare direttamente i dati utente. In caso contrario, verrà registrato un errore sull'impossibilità di individuare i tag `script` o `powershell` da eseguire. Di seguito è riportato un esempio di codifica tramite Windows. PowerShell

```
$UserData = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Script))
```

Di seguito è riportato un esempio che decodifica utilizzando. PowerShell

```
$Script = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($UserData))
```

[Per ulteriori informazioni sulla codifica base64, vedere https://www.ietf. org/rfc/rfc4648.txt.](https://www.ietf.org/rfc/rfc4648.txt)

### Dati utente compressi
<a name="user-data-compressed"></a>

EC2Launch v2 supporta i dati utente compressi come metodo per inviare dati utente superiori al limite di 16 KB imposto da IMDS. Per usare questa funzionalità, comprimi lo script dei dati utente in un archivio `.zip` e passalo all’istanza EC2. Quando EC2 Launch v2 rileva dati utente compressi, decomprime automaticamente lo script di dati utente compressi e lo esegue.

Come per i dati utente standard, se utilizzi l’API Amazon EC2 o uno strumento che non esegue la codifica base64 dei dati utente, codificare direttamente i dati utente compressi. Per ulteriori informazioni sul limite di dimensione dei dati utente e sulla codifica base64, visita consulta [Accesso ai metadati dell'istanza per un'istanza EC2](instancedata-data-retrieval.md).

### Esecuzione dei dati utente
<a name="user-data-execution"></a>

Per impostazione predefinita, in tutte le AWS Windows AMIs è abilitata l'esecuzione dei dati utente per l'avvio iniziale. Puoi specificare che gli script di dati utente vengano eseguiti la prossima volta che l'istanza è riavviata. In alternativa, puoi specificare che gli script di dati utente vengano eseguiti ogni volta che l'istanza è riavviata.

**Nota**  
Per impostazione predefinita, l'esecuzione dei dati utente non è abilitata dopo l'avvio iniziale. Per abilitare l'esecuzione dei dati utente al riavvio o all'avvio dell'istanza, consulta [Esegui gli script durante i riavvii o gli avvii successivi](#user-data-scripts-subsequent).

Gli script di dati utente vengono eseguiti dall'account amministratore locale quando viene generata una password casuale. In caso contrario, gli script di dati utente vengono eseguiti dall'account del sistema.

#### Script di avvio dell'istanza
<a name="user-data-scripts-launch"></a>

Gli script nei dati utente dell'istanza vengono eseguiti durante l'avvio iniziale dell'istanza. Se individui il tag `persist`, l'esecuzione dei dati utente è abilitata per i riavvii successivi. I file di registro per EC2 Launch v2, EC2 Launch e EC2 Config contengono l'output dello standard output e dei flussi di errore standard.

**EC2Avvia v2**  
Il file di registro per EC2 Launch v2 è. `C:\ProgramData\Amazon\EC2Launch\log\agent.log`

**Nota**  
La cartella `C:\ProgramData` potrebbe essere nascosta. Per visualizzare la cartella, è necessario mostrare i file e le cartelle nascosti.

Le informazioni seguenti vengono registrate durante l'esecuzione dei dati utente:
+ `Info: Converting user-data to yaml format` - Se i dati utente sono stati forniti in formato XML
+ `Info: Initialize user-data state` - L'inizio dell'esecuzione dei dati utente
+ `Info: Frequency is: always` - Se l'attività dei dati utente è in esecuzione a ogni avvio
+ `Info: Frequency is: once` - Se l'attività dei dati utente è in esecuzione una sola volta
+ `Stage: postReadyUserData execution completed` - La fine dell'esecuzione dei dati dell'utente

**EC2Avvia**  
Il file di registro di EC2 Launch è`C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log`.

La cartella `C:\ProgramData` potrebbe essere nascosta. Per visualizzare la cartella, è necessario mostrare i file e le cartelle nascosti.

Le informazioni seguenti vengono registrate durante l'esecuzione dei dati utente:
+ `Userdata execution begins` - L'inizio dell'esecuzione dei dati utente
+ `<persist> tag was provided: true` - Se viene individuato il tag persist
+ `Running userdata on every boot` - Se viene individuato il tag persist
+ `<powershell> tag was provided.. running powershell content` - Se viene individuato il tag powershell
+ `<script> tag was provided.. running script content` - Se viene individuato il tag script
+ `Message: The output from user scripts` - Se vengono eseguiti script di dati utente, il loro output viene registrato

**EC2Config**  
Il file di registro per EC2 Config è. `C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log` Le informazioni seguenti vengono registrate durante l'esecuzione dei dati utente:
+ `Ec2HandleUserData: Message: Start running user scripts` - L'inizio dell'esecuzione dei dati utente
+ `Ec2HandleUserData: Message: Re-enabled userdata execution` - Se viene individuato il tag persist
+ `Ec2HandleUserData: Message: Could not find <persist> and </persist>` - Se non viene individuato il tag persist
+ `Ec2HandleUserData: Message: The output from user scripts` - Se vengono eseguiti script di dati utente, il loro output viene registrato

#### Esegui gli script durante i riavvii o gli avvii successivi
<a name="user-data-scripts-subsequent"></a>

Quando aggiorni i dati utente dell’istanza, il contenuto dei dati utente aggiornati viene riflesso automaticamente nei metadati dell’istanza al successivo riavvio o avvio dell’istanza. Tuttavia, a seconda dell’agente di avvio installato, potrebbe essere necessaria una configurazione aggiuntiva per configurare gli script dei dati utente da eseguire ai successivi riavvii o avvii.

Selezionando l’opzione **Arresta con Sysprep**, gli script dei dati utente vengono eseguiti al successivo avvio o riavvio dell’istanza, anche se non hai abilitato l’esecuzione dei dati utente per i riavvii o avvii successivi.

Per istruzioni su come abilitare l’esecuzione dei dati utente, seleziona la scheda corrispondente al tuo agente di avvio.

------
#### [ EC2Launch v2 ]

A differenza di EC2 Launch v1, EC2 Launch v2 valuta l'attività relativa ai dati utente a ogni avvio. Non è necessario pianificare manualmente l’attività relativa ai dati utente. I dati utente vengono eseguiti in base alle opzioni di frequenza o persistenza incluse.

Per gli script dei dati utente in XML  
Per eseguire gli script dei dati utente ad ogni avvio, aggiungi il flag `<persist>true</persist>`. Se il flag persist non è compreso, lo script dei dati utente viene eseguito solo all’avvio iniziale.

Per i dati utente YAML  
+ Per eseguire un’attività nei dati utente all’avvio iniziale, imposta la `frequency` dell’attività su `once`.
+ Per eseguire un’attività nei dati utente ad ogni avvio, imposta l’attività `frequency` su `always`.

------
#### [ EC2Launch ]

1. Connettersi all'istanza Windows.

1. Apri una finestra di PowerShell comando ed esegui uno dei seguenti comandi:

**Esegui una volta**  
Per eseguire i dati utente una volta all’avvio successivo, utilizza il flag `-Schedule`.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```

**Esegui su tutti gli avvii successivi**  
Per eseguire i dati utente su tutti gli avvii successivi, utilizza il flag `-SchedulePerBoot`.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
   ```

1. Disconnettersi dall'istanza Windows. Per eseguire gli script aggiornati al prossimo avvio dell'istanza, arresta l'istanza e aggiorna i dati utente.

------
#### [ EC2Config ]

1. Connettersi all'istanza Windows.

1. Aprire `C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSetting.exe`.

1. Per **Dati utente**, seleziona **Abilita UserData l'esecuzione per il prossimo avvio del servizio**.

1. Disconnettersi dall'istanza Windows. Per eseguire gli script aggiornati al prossimo avvio dell'istanza, arresta l'istanza e aggiorna i dati utente.

------

### Dati utente e strumenti per Windows PowerShell
<a name="user-data-powershell"></a>

È possibile utilizzare gli strumenti per Windows PowerShell per specificare, modificare e visualizzare i dati utente per l'istanza. Per informazioni sulla visualizzazione dei dati utente dall'istanza tramite metadati dell'istanza, consulta [Accesso ai metadati dell'istanza per un'istanza EC2](instancedata-data-retrieval.md). Per informazioni sui dati utente e su AWS CLI, vedere[I dati dell'utente e il AWS CLI](#user-data-api-cli).

**Esempio: Specificare i dati utente dell'istanza all'avvio**  
Creare un file di testo con i dati utente dell'istanza. Per eseguire gli script dei dati utente ogni volta che si riavvia o avvia l'istanza, aggiungere `<persist>true</persist>`, come illustrato nell'esempio seguente:

```
<powershell>
    $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
<persist>true</persist>
```

Per specificare i dati utente dell'istanza all'avvio dell'istanza, utilizza il [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)comando. Questo comando non esegue la codifica base64 al tuo posto dei dati utente. Utilizza i seguenti comandi per codificare i dati utente in un file di testo denominato `script.txt`.

```
PS C:\> $Script = Get-Content -Raw script.txt
PS C:\> $UserData = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Script))
```

Utilizzare il parametro `-UserData` per trasferire i dati utente al comando **New-EC2Instance**.

```
PS C:\> New-EC2Instance -ImageId ami-abcd1234 -MinCount 1 -MaxCount 1 -InstanceType m3.medium \
    -KeyName my-key-pair -SubnetId subnet-12345678 -SecurityGroupIds sg-1a2b3c4d \
    -UserData $UserData
```

**Esempio: Aggiornamento dei dati utente dell'istanza di un'istanza arrestata**  
È possibile modificare i dati utente di un'istanza interrotta utilizzando il [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html)comando.

Creare un file di testo con il nuovo script. Utilizza i seguenti comandi per codificare i dati utente nel file di testo denominato `new-script.txt`.

```
PS C:\> $NewScript = Get-Content -Raw new-script.txt
PS C:\> $NewUserData = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($NewScript))
```

Utilizzare i parametri `-UserData` e `-Value` per specificare i dati utente.

```
PS C:\> Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -Attribute userData -Value $NewUserData
```

**Esempio: Visualizzazione dei dati utente dell'istanza**  
Per recuperare i dati utente per un'istanza, utilizzate il [Get-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceAttribute.html)comando.

```
PS C:\> (Get-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -Attribute userData).UserData
```

Di seguito è riportato un output di esempio. Tieni presente che i dati utente sono codificati.

```
PHBvd2Vyc2hlbGw+DQpSZW5hbWUtQ29tcHV0ZXIgLU5ld05hbWUgdXNlci1kYXRhLXRlc3QNCjwvcG93ZXJzaGVsbD4=
```

Utilizzare i comandi seguenti per archiviare i dati utente codificati in una variabile e poi decodificarli.

```
PS C:\> $UserData_encoded = (Get-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -Attribute userData).UserData
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($UserData_encoded))
```

Di seguito è riportato un output di esempio.

```
<powershell>
    $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
    New-Item $file -ItemType file
</powershell>
<persist>true</persist>
```

**Esempio: rinominare l'istanza per corrispondere al valore di tag**  
È possibile utilizzare il [Get-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Tag.html)comando per leggere il valore del tag, rinominare l'istanza al primo avvio in modo che corrisponda al valore del tag e riavviare. Per eseguire efficacemente questo comando, è necessario disporre di un ruolo con autorizzazioni `ec2:DescribeTags` collegate all'istanza, perché le informazioni sul tag sono recuperate da una chiamata all'API. Per ulteriori informazioni sulle autorizzazioni di impostazioni tramite i ruoli IAM, consulta [Collegamento di un ruolo IAM all'istanza](attach-iam-role.md).

------
#### [ IMDSv2 ]

```
<powershell>
    [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri 'http://169.254.169.254/latest/api/token' -UseBasicParsing
    $instanceId = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri 'http://169.254.169.254/latest/meta-data/instance-id' -UseBasicParsing
	$nameValue = (Get-EC2Tag -Filter @{Name="resource-id";Value=$instanceid},@{Name="key";Value="Name"}).Value
	$pattern = "^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$"
	#Verify Name Value satisfies best practices for Windows hostnames
	If ($nameValue -match $pattern) 
	    {Try
	        {Rename-Computer -NewName $nameValue -Restart -ErrorAction Stop} 
	    Catch
	        {$ErrorMessage = $_.Exception.Message
	        Write-Output "Rename failed: $ErrorMessage"}}
	Else
	    {Throw "Provided name not a valid hostname. Please ensure Name value is between 1 and 15 characters in length and contains only alphanumeric or hyphen characters"}
</powershell>
```

------
#### [ IMDSv1 ]

```
<powershell>
	$instanceId = (Invoke-WebRequest http://169.254.169.254/latest/meta-data/instance-id -UseBasicParsing).content
	$nameValue = (Get-EC2Tag -Filter @{Name="resource-id";Value=$instanceid},@{Name="key";Value="Name"}).Value
	$pattern = "^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$"
	#Verify Name Value satisfies best practices for Windows hostnames
	If ($nameValue -match $pattern) 
	    {Try
	        {Rename-Computer -NewName $nameValue -Restart -ErrorAction Stop} 
	    Catch
	        {$ErrorMessage = $_.Exception.Message
	        Write-Output "Rename failed: $ErrorMessage"}}
	Else
	    {Throw "Provided name not a valid hostname. Please ensure Name value is between 1 and 15 characters in length and contains only alphanumeric or hyphen characters"}
</powershell>
```

------

È inoltre possibile rinominare l'istanza utilizzando i tag nei metadati delle istanze, se l'istanza è configurata su access tags from the instance metadata (accedi ai tag dai metadati dell'istanza). Per ulteriori informazioni, consulta [Visualizza i tag per le istanze EC2 utilizzando i metadati dell'istanza](work-with-tags-in-IMDS.md).

------
#### [ IMDSv2 ]

```
<powershell>
    [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri 'http://169.254.169.254/latest/api/token' -UseBasicParsing
	$nameValue = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri 'http://169.254.169.254/latest/meta-data/tags/instance/Name' -UseBasicParsing
	$pattern = "^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$"
	#Verify Name Value satisfies best practices for Windows hostnames
	If ($nameValue -match $pattern) 
	    {Try
	        {Rename-Computer -NewName $nameValue -Restart -ErrorAction Stop} 
	    Catch
	        {$ErrorMessage = $_.Exception.Message
	        Write-Output "Rename failed: $ErrorMessage"}}
	Else
	    {Throw "Provided name not a valid hostname. Please ensure Name value is between 1 and 15 characters in length and contains only alphanumeric or hyphen characters"}
</powershell>
```

------
#### [ IMDSv1 ]

```
<powershell>
	$nameValue = Get-EC2InstanceMetadata -Path /tags/instance/Name
	$pattern = "^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$"
	#Verify Name Value satisfies best practices for Windows hostnames
	If ($nameValue -match $pattern) 
	    {Try
	        {Rename-Computer -NewName $nameValue -Restart -ErrorAction Stop} 
	    Catch
	        {$ErrorMessage = $_.Exception.Message
	        Write-Output "Rename failed: $ErrorMessage"}}
	Else
	    {Throw "Provided name not a valid hostname. Please ensure Name value is between 1 and 15 characters in length and contains only alphanumeric or hyphen characters"}
</powershell>
```

------

# Identificazione di ciascuna istanza lanciata in una singola richiesta
<a name="AMI-launch-index-examples"></a>

Questo esempio illustra come puoi utilizzare sia i dati utente che i metadati dell'istanza per configurare le istanze Amazon EC2.

**Nota**  
Gli esempi in questa sezione utilizzano l' IPv4 indirizzo dell'IMDS:`169.254.169.254`. Se stai recuperando i metadati dell'istanza per le istanze EC2 tramite 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 su [istanze basate su Nitro](instance-types.md#instance-hypervisor-type) in [sottoreti IPv6 supportate](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) (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-index`indica 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](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 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, ciascuna istanza ha metadati univoci, come mostrato 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 i passaggi seguenti, le IMDSv2 richieste utilizzano il token memorizzato del IMDSv2 comando precedente, supponendo che il token non sia scaduto.

------
#### [ IMDSv1 ]

   ```
   [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-launch-index
   2
   ```

------

1. 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`
   ```

------

1. 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`
   ```

------

1. 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
   ```

------