

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à.

# Rileva se un host è un' EC2 istanza
<a name="identify_ec2_instances"></a>

Potrebbe essere necessario sapere se l'applicazione o il sito Web è in esecuzione su un' EC2 istanza, soprattutto se si dispone di un ambiente di elaborazione misto. È possibile utilizzare una delle seguenti opzioni per determinare se l'host dell'applicazione o del sito Web è un' EC2 istanza.

**Topics**
+ [Ispezionare l'Documenti di identità dell'istanza](#inspect-instance-identity-document)
+ [Ispezionare l'UUID del sistema](#inspect-uuid)
+ [Ispezione dell'identificatore di generazione della macchina virtuale del sistema](#vm-generation-id)

## Ispezionare l'Documenti di identità dell'istanza
<a name="inspect-instance-identity-document"></a>

Ogni istanza ha un documento di identità dell'istanza firmato che puoi verificare crittograficamente. Puoi trovare questi documenti utilizzando il servizio di metadati di istanza (IMDS).

Per ulteriori informazioni, consulta [Documenti di identità dell'istanza](instance-identity-documents.md).

## Ispezionare l'UUID del sistema
<a name="inspect-uuid"></a>

Puoi ottenere l'UUID di sistema e verificare la presenza nell'ottetto iniziale dell'UUID per `EC2` (in Linux, potrebbe essere `ec2` in minuscolo). Questo metodo è rapido, ma potenzialmente impreciso perché c'è una piccola possibilità che un sistema diverso da un' EC2 istanza possa avere un UUID che inizia con questi caratteri. Inoltre, alcune versioni di SMBIOS usano il formato *little-endian*, che non include `EC2` all'inizio dell'UUID . Questo potrebbe essere il caso EC2 delle istanze che utilizzano SMBIOS 2.4 per Windows o delle distribuzioni Linux diverse da Amazon Linux che dispongono di una propria implementazione di SMBIOS.

**Esempio Linux: ottieni l'UUID da DMI (solo HVM) AMIs**  
Utilizzare il comando seguente per ottenere l'UUID utilizzando la Desktop Management Interface (DMI):

```
[ec2-user ~]$ sudo dmidecode --string system-uuid
```

Nell'output di esempio seguente, l'UUID inizia con "EC2«, il che indica che il sistema è probabilmente un'istanza. EC2 

```
EC2E1916-9099-7CAF-FD21-012345ABCDEF
```

Nell'esempio seguente di output, l'UUID è rappresentato in formato little-endian.

```
45E12AEC-DCD1-B213-94ED-012345ABCDEF
```

In alternativa, per le istanze create sul sistema Nitro, è possibile utilizzare il seguente comando:

```
[ec2-user ~]$ cat /sys/devices/virtual/dmi/id/board_asset_tag
```

Se l'output è un ID di istanza, come indicato nell'esempio seguente, il sistema è un' EC2 istanza:

```
i-0af01c0123456789a
```

**Esempio Linux: recupera l'UUID dall'hypervisor (solo PV) AMIs**  
Utilizzare il seguente comando per ottenere l'UUID dall'hypervisor:

```
[ec2-user ~]$ cat /sys/hypervisor/uuid
```

Nel seguente esempio di output, l'UUID inizia con «ec2", che indica che il sistema è probabilmente un'istanza. EC2 

```
ec2e1916-9099-7caf-fd21-012345abcdef
```

**Esempio in Windows: ottieni l'UUID utilizzando WMI o Windows PowerShell**  
Utilizza la riga di comando Windows Management Instrumentation (WMIC) nel modo seguente:

```
wmic path win32_computersystemproduct get uuid
```

In alternativa, se si utilizza Windows PowerShell, utilizzare il **Get-WmiObject** cmdlet come segue:

```
PS C:\> Get-WmiObject -query "select uuid from Win32_ComputerSystemProduct" | Select UUID
```

Nell'output di esempio seguente, l'UUID inizia con "EC2«, il che indica che il sistema è probabilmente un'istanza. EC2 

```
EC2AE145-D1DC-13B2-94ED-012345ABCDEF
```

Per istanze che utilizzano SMBIOS 2.4, l'UUID potrebbe essere rappresentato in formato little-endian, ad esempio:

```
45E12AEC-DCD1-B213-94ED-012345ABCDEF
```

## Ispezione dell'identificatore di generazione della macchina virtuale del sistema
<a name="vm-generation-id"></a>

Un identificatore di generazione della macchina virtuale è costituito da un buffer univoco di 128 bit interpretato come identificatore intero casuale crittografico. È possibile recuperare l'identificatore di generazione della macchina virtuale per identificare l'istanza di Amazon Elastic Compute Cloud. L'identificatore di generazione viene esposto all'interno del sistema operativo guest dell'istanza tramite una voce della tabella ACPI. Il valore cambierà se la macchina viene clonata, copiata o importata in AWS, come con [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html).

**Esempio: Recupera l'identificatore di generazione della macchina virtuale da Linux**  
Puoi utilizzare i seguenti comandi per recuperare l'identificatore di generazione della macchina virtuale dalle istanze che eseguono Linux.

------
#### [ Amazon Linux 2 ]

1. Aggiorna i pacchetti software esistenti, se necessario, utilizzando il seguente comando:

   ```
   sudo yum update
   ```

1. Se necessario, utilizza il pacchetto busybox utilizzando il seguente comando:

   ```
   sudo curl https://www.rpmfind.net/linux/epel/next/8/Everything/x86_64/Packages/b/busybox-1.35.0-2.el8.next.x86_64.rpm --output busybox.rpm
   ```

1. Se necessario, installa i pacchetti prerequisiti utilizzando il seguente comando:

   ```
   sudo yum install busybox.rpm iasl -y
   ```

1. Esegui il seguente comando `iasl` per produrre output dalla tabella ACPI:

   ```
   sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
   ```

1. Esegui il comando seguente per esaminare l'output del comando `iasl`:

   ```
   cat SSDT2.dsl
   ```

   L'output deve restituire lo spazio degli indirizzi necessario per recuperare l'identificatore di generazione della macchina virtuale:

   ```
   Intel ACPI Component Architecture
   ASL+ Optimizing Compiler/Disassembler version 20190509
   Copyright (c) 2000 - 2019 Intel Corporation
   
   File appears to be binary: found 32 non-ASCII characters, disassembling
   Binary file appears to be a valid ACPI table, disassembling
   Input file /sys/firmware/acpi/tables/SSDT2, Length 0x7B (123) bytes
   ACPI: SSDT 0x0000000000000000 00007B (v01 AMAZON AMZNSSDT 00000001 AMZN 00000001)
   Pass 1 parse of [SSDT]
   Pass 2 parse of [SSDT]
   Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
   
   Parsing completed
   Disassembly completed
   ASL Output:    ./SSDT2.dsl - 1065 bytes
   $
   /*
   * Intel ACPI Component Architecture
   * AML/ASL+ Disassembler version 20190509 (64-bit version)
   * Copyright (c) 2000 - 2019 Intel Corporation
   *
   * Disassembling to symbolic ASL+ operators
   *
   * Disassembly of /sys/firmware/acpi/tables/SSDT2, Tue Mar 29 16:15:14 2022
   *
   * Original Table Header:
   *     Signature        "SSDT"
   *     Length           0x0000007B (123)
   *     Revision         0x01
   *     Checksum         0xB8
   *     OEM ID           "AMAZON"
   *     OEM Table ID     "AMZNSSDT"
   *     OEM Revision     0x00000001 (1)
   *     Compiler ID      "AMZN"
   *     Compiler Version 0x00000001 (1)
   */
   DefinitionBlock ("", "SSDT", 1, "AMAZON", "AMZNSSDT", 0x00000001)
   {
   Scope (\_SB)
   {
       Device (VMGN)
       {
           Name (_CID, "VM_Gen_Counter")  // _CID: Compatible ID
           Name (_DDN, "VM_Gen_Counter")  // _DDN: DOS Device Name
           Name (_HID, "AMZN0000")  // _HID: Hardware ID
           Name (ADDR, Package (0x02)
           {
               0xFED01000,
               Zero
           })
       }
   }
   }
   ```

1. (Opzionale) Aumenta le autorizzazioni del terminale per i passaggi rimanenti con il seguente comando:

   ```
   sudo -s
   ```

1. Utilizza il comando seguente per archiviare lo spazio degli indirizzi precedentemente raccolto:

   ```
   VMGN_ADDR=0xFED01000
   ```

1. Utilizza il comando seguente per scorrere lo spazio degli indirizzi e creare l'identificatore di generazione della macchina virtuale:

   ```
   for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
   ```

1. Recupera l'identificatore di generazione della macchina virtuale dal file di output con il seguente comando:

   ```
   cat vmgenid ; echo
   ```

   L'output visualizzato dovrebbe essere simile al seguente:

   ```
   EC2F335D979132C4165896753E72BD1C
   ```

------
#### [ Ubuntu ]

1. Aggiorna i pacchetti software esistenti, se necessario, utilizzando il seguente comando:

   ```
   sudo apt update
   ```

1. Se necessario, installa i pacchetti prerequisiti utilizzando il seguente comando:

   ```
   sudo apt install busybox iasl -y
   ```

1. Esegui il seguente comando `iasl` per produrre output dalla tabella ACPI:

   ```
   sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
   ```

1. Esegui il comando seguente per esaminare l'output del comando `iasl`:

   ```
   cat SSDT2.dsl
   ```

   L'output deve restituire lo spazio degli indirizzi necessario per recuperare l'identificatore di generazione della macchina virtuale:

   ```
   Intel ACPI Component Architecture
   ASL+ Optimizing Compiler/Disassembler version 20190509
   Copyright (c) 2000 - 2019 Intel Corporation
   
   File appears to be binary: found 32 non-ASCII characters, disassembling
   Binary file appears to be a valid ACPI table, disassembling
   Input file /sys/firmware/acpi/tables/SSDT2, Length 0x7B (123) bytes
   ACPI: SSDT 0x0000000000000000 00007B (v01 AMAZON AMZNSSDT 00000001 AMZN 00000001)
   Pass 1 parse of [SSDT]
   Pass 2 parse of [SSDT]
   Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
   
   Parsing completed
   Disassembly completed
   ASL Output:    ./SSDT2.dsl - 1065 bytes
   $
   /*
   * Intel ACPI Component Architecture
   * AML/ASL+ Disassembler version 20190509 (64-bit version)
   * Copyright (c) 2000 - 2019 Intel Corporation
   *
   * Disassembling to symbolic ASL+ operators
   *
   * Disassembly of /sys/firmware/acpi/tables/SSDT2, Tue Mar 29 16:15:14 2022
   *
   * Original Table Header:
   *     Signature        "SSDT"
   *     Length           0x0000007B (123)
   *     Revision         0x01
   *     Checksum         0xB8
   *     OEM ID           "AMAZON"
   *     OEM Table ID     "AMZNSSDT"
   *     OEM Revision     0x00000001 (1)
   *     Compiler ID      "AMZN"
   *     Compiler Version 0x00000001 (1)
   */
   DefinitionBlock ("", "SSDT", 1, "AMAZON", "AMZNSSDT", 0x00000001)
   {
   Scope (\_SB)
   {
       Device (VMGN)
       {
           Name (_CID, "VM_Gen_Counter")  // _CID: Compatible ID
           Name (_DDN, "VM_Gen_Counter")  // _DDN: DOS Device Name
           Name (_HID, "AMZN0000")  // _HID: Hardware ID
           Name (ADDR, Package (0x02)
           {
               0xFED01000,
               Zero
           })
       }
   }
   }
   ```

1. (Opzionale) Aumenta le autorizzazioni del terminale per i passaggi rimanenti con il seguente comando:

   ```
   sudo -s
   ```

1. Utilizza i comandi seguenti per archiviare lo spazio degli indirizzi precedentemente raccolto:

   ```
   VMGN_ADDR=0xFED01000
   ```

1. Utilizza il comando seguente per scorrere lo spazio degli indirizzi e creare l'identificatore di generazione della macchina virtuale:

   ```
   for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
   ```

1. Recupera l'identificatore di generazione della macchina virtuale dal file di output con il seguente comando:

   ```
   cat vmgenid ; echo
   ```

   L'output visualizzato dovrebbe essere simile al seguente:

   ```
   EC2F335D979132C4165896753E72BD1C
   ```

------

**Esempio: recupera l'identificatore di generazione della macchina virtuale da Windows**  


È possibile creare un'applicazione di esempio per recuperare l'identificatore di generazione della macchina virtuale dalle istanze che eseguono Windows. Per ulteriori informazioni, consulta [Obtaining the virtual machine generation identifier](https://learn.microsoft.com/en-us/windows/win32/hyperv_v2/virtual-machine-generation-identifier#obtaining-the-virtual-machine-generation-identifier) (Ottenimento dell'identificatore di generazione della macchina virtuale) nella documentazione Microsoft.