Déterminer si un hôte est une instance EC2
Vous pouvez avoir besoin de savoir si votre application ou votre site web s’exécute sur une instance EC2, en particulier si vous disposez d’un environnement informatique mixte. Vous pouvez utiliser l’une des options suivantes pour savoir si l’hôte de votre application ou de votre site web est une instance EC2.
Inspecter le Documents d’identité d’instance
Chaque instance possède un document d’identité d’instance signé que vous pouvez vérifier de manière cryptographique. Vous pouvez trouver ces documents en utilisant le service de métadonnées d’instance (IMDS).
Pour en savoir plus, consultez Documents d’identité d’instance.
Inspecter l’UUID du système
Vous pouvez obtenir l’UUID du système et rechercher l’octet de début de l’UUID pour EC2
(sous Linux, il peut s’agir de ec2
en minuscules). Cette méthode est rapide, mais potentiellement inexacte car il y a une faible chance qu’un système qui n’est pas une instance EC2 puisse avoir un UUID qui commence par ces caractères. De plus, certaines versions de SMBIOS utilisent le format little-endian, qui n’inclut pas EC2
au début de l’UUID. Cela peut être le cas pour les instances EC2 qui utilisent SMBIOS 2.4 pour Windows, ou pour les distributions Linux autres qu’Amazon Linux qui ont leur propre mise en œuvre de SMBIOS.
Exemple Linux : obtenir l’UUID du DMI (AMI HVM uniquement)
Utilisez la commande suivante pour obtenir l’UUID à l’aide de DMI (Desktop Management Interface) :
[ec2-user ~]$
sudo dmidecode --string system-uuid
Dans l’exemple de sortie suivant, l’UUID commence par « EC2 », ce qui indique que le système est probablement une instance EC2.
EC2E1916-9099-7CAF-FD21-012345ABCDEF
Dans l’exemple de sortie qui suit, l’UUID est représenté au format Little Endian :
45E12AEC-DCD1-B213-94ED-012345ABCDEF
Sinon, pour les instances construites sur le système Nitro, vous pouvez utiliser la commande suivante :
[ec2-user ~]$
cat /sys/devices/virtual/dmi/id/board_asset_tag
Si la sortie est un ID d’instance, comme l’exemple de sortie suivant, le système est une instance EC2 :
i-0af01c0123456789a
Exemple Linux : obtenir l’UUID de l’hyperviseur (AMI PV uniquement)
Utilisez la commande suivante pour obtenir l’UUID de l’hyperviseur :
[ec2-user ~]$
cat /sys/hypervisor/uuid
Dans l’exemple de sortie suivant, l’UUID commence par « ec2 », ce qui indique que le système est probablement une instance EC2.
ec2e1916-9099-7caf-fd21-012345abcdef
Exemple Windows : obtenir l’UUID à l’aide de WMI ou de Windows PowerShell
Utilisez l’utilitaire de ligne de commande Windows Management Instrumentation Command Line (WMIC) comme suit :
wmic path win32_computersystemproduct get uuid
Sinon, si vous utilisez Windows PowerShell, utilisez l’applet de commande Get-WmiObject comme suit :
PS C:\>
Get-WmiObject -query "select uuid from Win32_ComputerSystemProduct" | Select UUID
Dans l’exemple de sortie suivant, l’UUID commence par « EC2 », ce qui indique que le système est probablement une instance EC2.
EC2AE145-D1DC-13B2-94ED-012345ABCDEF
Pour les instances utilisant SMBIOS 2.4, l’UUID peut être représenté au format Little Endian. Par exemple :
45E12AEC-DCD1-B213-94ED-012345ABCDEF
Inspecter l’identificateur de génération de machine virtuelle du système
Un identificateur de génération de machine virtuelle consiste en un tampon unique de 128 bits interprété comme un entier unique aléatoire cryptographique. Vous pouvez récupérer l’identificateur de génération de machine virtuelle pour identifier votre instance Amazon Elastic Compute Cloud. L’identificateur de génération est exposé dans le système d’exploitation invité de l’instance via une entrée de table ACPI. La valeur change si votre machine est clonée, copiée ou importée dans AWS, par exemple avec VM Import/Export.
Exemple : récupérer l’identifiant de génération de la machine virtuelle sous Linux
Vous pouvez utiliser les commandes suivantes pour récupérer l’identifiant de génération de machine virtuelle à partir de vos instances exécutant Linux.
- Amazon Linux 2
-
-
Mettez à jour vos packages logiciels existants, le cas échéant, à l’aide de la commande suivante :
sudo yum update
-
Si nécessaire, créez le package busybox à l’aide de la commande suivante :
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
-
Si nécessaire, installez les packages préalables à l’aide de la commande suivante :
sudo yum install busybox.rpm iasl -y
-
Exécutez la commande iasl
suivante pour produire une sortie à partir de la table ACPI :
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Exécutez la commande suivante pour vérifier la sortie de la commande iasl
:
cat SSDT2.dsl
La sortie doit fournir l’espace d’adressage requis pour récupérer l’identificateur de génération de machine virtuelle :
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
})
}
}
}
-
(Facultatif) Augmentez les autorisations de votre terminal pour les étapes restantes à l’aide de la commande suivante :
sudo -s
-
Utilisez la commande suivante pour stocker l’espace d’adressage précédemment collecté :
VMGN_ADDR=0xFED01000
-
Utilisez la commande suivante pour parcourir l’espace d’adressage et créer l’identificateur de génération de machine virtuelle :
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Récupérez l’identificateur de génération de machine virtuelle à partir du fichier de sortie à l’aide de la commande suivante :
cat vmgenid ; echo
Votre sortie doit ressembler à ce qui suit :
EC2F335D979132C4165896753E72BD1C
- Ubuntu
-
-
Mettez à jour vos packages logiciels existants, le cas échéant, à l’aide de la commande suivante :
sudo apt update
-
Si nécessaire, installez les packages préalables à l’aide de la commande suivante :
sudo apt install busybox iasl -y
-
Exécutez la commande iasl
suivante pour produire une sortie à partir de la table ACPI :
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Exécutez la commande suivante pour vérifier la sortie de la commande iasl
:
cat SSDT2.dsl
La sortie doit fournir l’espace d’adressage requis pour récupérer l’identificateur de génération de machine virtuelle :
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
})
}
}
}
-
(Facultatif) Augmentez les autorisations de votre terminal pour les étapes restantes à l’aide de la commande suivante :
sudo -s
-
Utilisez les commandes suivantes pour stocker l’espace d’adressage précédemment collecté :
VMGN_ADDR=0xFED01000
-
Utilisez la commande suivante pour parcourir l’espace d’adressage et créer l’identificateur de génération de machine virtuelle :
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Récupérez l’identificateur de génération de machine virtuelle à partir du fichier de sortie à l’aide de la commande suivante :
cat vmgenid ; echo
Votre sortie doit ressembler à ce qui suit :
EC2F335D979132C4165896753E72BD1C
Exemple : récupérer l’identifiant de génération de la machine virtuelle à partir de Windows
Vous pouvez créer un exemple d’application pour récupérer l’identificateur de génération de machine virtuelle à partir de vos instances exécutant Windows. Pour plus d’informations, consultez Obtention de l’identificateur de génération de l’ordinateur virtuel dans la documentation Microsoft.