Identificar instâncias de EC2 do Linux
É possível precisar determinar se a aplicação está executando em uma instância do EC2.
Para obter informações sobre como identificar as instâncias do Windows, consulte Identify EC2 Windows instances (Identificar instâncias do Windows do EC2) no Guia do usuário do Amazon EC2 para instâncias do Windows.
Inspecione o documento de identidade da instância
Para um método definitivo e criptograficamente verificado de identificação de uma instância do EC2, verifique o documento de identidade da instância, incluindo sua assinatura. Esses documentos estão disponíveis em cada instância do EC2 no endereço local não roteável http://169.254.169.254/latest/dynamic/instance-identity/
. Para ter mais informações, consulte Documentos de identidade da instância.
Inspecione o UUID do sistema
É possível obter o UUID do sistema e procurar pela presença dos caracteres "ec2" ou "EC2" no octeto inicial do UUID. O método para determinar se um sistema é uma instância do EC2 é rápido, mas potencialmente impreciso, pois há uma pequena possibilidade de um sistema que não seja uma instância do EC2 ter um UUID que comece com esses caracteres. Além disso, para instâncias do EC2 que não estão usando o Amazon Linux 2, a implementação de distribuição do SMBIOS pode representar o UUID em formato little-endian e, portanto, os caracteres “EC2” não aparecem no início do UUID.
exemplo : Obter o UUID do DMI (somente AMIs HVM)
Use o seguinte comando para obter o UUID usando a Desktop Management Interface (DMI):
[ec2-user ~]$
sudo dmidecode --string system-uuid
Na próxima saída de exemplo, o UUID começa com "EC2", que indica que o sistema é provavelmente uma instância do EC2.
EC2E1916-9099-7CAF-FD21-012345ABCDEF
No exemplo de saída a seguir, o UUID é representado no formato little-endian.
45E12AEC-DCD1-B213-94ED-012345ABCDEF
Como alternativa, para instâncias criadas no sistema Nitro, é possível usar o seguinte comando:
[ec2-user ~]$
cat /sys/devices/virtual/dmi/id/board_asset_tag
Se a saída for um ID de instância, como a saída de exemplo a seguir, o sistema será uma instância do EC2:
i-0af01c0123456789a
exemplo : Obtenha o UUID do hipervisor (somente AMIs do picovolt)
Use o seguinte comando para obter o UUID do hipervisor:
[ec2-user ~]$
cat /sys/hypervisor/uuid
Na próxima saída de exemplo, o UUID começa com "ec2", que indica que o sistema é provavelmente uma instância do EC2.
ec2e1916-9099-7caf-fd21-012345abcdef
Inspecione o identificador de geração da máquina virtual do sistema
Um identificador de geração de máquina virtual consiste em um buffer exclusivo de 128 bits interpretado como identificador de inteiro aleatório criptográfico. É possível recuperar o identificador de geração de máquina virtual para identificar sua instância do Amazon Elastic Compute Cloud. O identificador de geração é exposto no sistema operacional convidado da instância por meio de uma entrada de tabela ACPI. O valor mudará se sua máquina for clonada, copiada ou importada para AWS, como com VM Import/Export.
exemplo : Recupere o identificador de geração de máquina virtual do Linux
É possível usar os seguintes comandos para recuperar o identificador de geração de máquina virtual de suas instâncias que executem o Linux:
- Amazon Linux 2
-
-
Atualize seus pacotes de software existentes, conforme necessário, usando o seguinte comando:
sudo yum update
-
Se necessário, utilize o pacote busybox com o seguinte 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
-
Se necessário, instale os pacotes de pré-requisitos usando o seguinte comando:
sudo yum install busybox.rpm iasl -y
-
Execute o seguinte iasl
para produzir saída da tabela ACPI:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Execute o seguinte comando para revisar a saída do comando iasl
:
cat SSDT2.dsl
A saída deve gerar o espaço de endereço necessário para recuperar o identificador de geração da máquina virtual:
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
})
}
}
}
-
(Opcional) Eleve suas permissões de terminal para as etapas restantes com o seguinte comando:
sudo -s
-
Use o comando a seguir para armazenar o espaço de endereço coletado anteriormente:
VMGN_ADDR=0xFED01000
-
Use o seguinte comando para iterar pelo espaço de endereço e criar o identificador de geração de máquina virtual:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Recupere o identificador de geração da máquina virtual do arquivo de saída com o seguinte comando:
cat vmgenid ; echo
Sua saída deve ser similar à seguinte:
EC2F335D979132C4165896753E72BD1C
- Ubuntu
-
-
Atualize seus pacotes de software existentes, conforme necessário, usando o seguinte comando:
sudo apt update
-
Se necessário, instale os pacotes de pré-requisitos usando o seguinte comando:
sudo apt install busybox iasl -y
-
Execute o seguinte iasl
para produzir saída da tabela ACPI:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Execute o seguinte comando para revisar a saída do comando iasl
:
cat SSDT2.dsl
A saída deve gerar o espaço de endereço necessário para recuperar o identificador de geração da máquina virtual:
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
})
}
}
}
-
(Opcional) Eleve suas permissões de terminal para as etapas restantes com o seguinte comando:
sudo -s
-
Use os seguintes comandos para armazenar o espaço de endereço coletado anteriormente:
VMGN_ADDR=0xFED01000
-
Use o seguinte comando para iterar pelo espaço de endereço e criar o identificador de geração de máquina virtual:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Recupere o identificador de geração da máquina virtual do arquivo de saída com o seguinte comando:
cat vmgenid ; echo
Sua saída deve ser similar à seguinte:
EC2F335D979132C4165896753E72BD1C