Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mendeteksi apakah host adalah sebuah EC2 instance
Anda mungkin perlu tahu apakah aplikasi atau situs web Anda berjalan pada sebuah EC2 instance, terutama jika Anda memiliki lingkungan komputasi campuran. Anda dapat menggunakan salah satu opsi berikut untuk menentukan apakah host untuk aplikasi atau situs web Anda adalah sebuah EC2 instance.
Memeriksa dokumen identitas instans
Setiap instance memiliki dokumen identitas instance yang ditandatangani yang dapat Anda verifikasi secara kriptografi. Anda dapat menemukan dokumen-dokumen ini menggunakan Layanan Metadata Instance ()IMDS.
Untuk informasi selengkapnya, lihat Dokumen identitas instans.
Periksa sistem UUID
Anda bisa mendapatkan sistem UUID dan melihat oktet awal UUID for EC2
(di Linux, ini mungkin huruf kecilec2
). Metode ini cepat, tetapi berpotensi tidak akurat karena ada kemungkinan kecil bahwa sistem yang bukan EC2 instance dapat memiliki UUID yang dimulai dengan karakter ini. Selain itu, beberapa versi SMBIOS menggunakan format endian kecil, yang tidak termasuk EC2
di awal. UUID Ini mungkin terjadi pada EC2 instance yang menggunakan SMBIOS 2.4 untuk Windows, atau untuk distribusi Linux selain Amazon Linux yang memiliki implementasinya sendiri. SMBIOS
Contoh Linux: Dapatkan UUID dari DMI (HVMAMIshanya)
Gunakan perintah berikut untuk mendapatkan UUID menggunakan Desktop Management Interface (DMI):
[ec2-user ~]$
sudo dmidecode --string system-uuid
Dalam contoh output berikut, UUID dimulai dengan "EC2“, yang menunjukkan bahwa sistem mungkin sebuah EC2 instance.
EC2E1916-9099-7CAF-FD21-012345ABCDEF
Dalam contoh output berikut, UUID diwakili dalam format endian kecil.
45E12AEC-DCD1-B213-94ED-012345ABCDEF
Atau, untuk instans yang dibangun di sistem Nitro, Anda dapat menggunakan perintah berikut:
[ec2-user ~]$
cat /sys/devices/virtual/dmi/id/board_asset_tag
Jika output adalah ID instance, sebagai contoh output berikut, sistem adalah sebuah EC2 instance:
i-0af01c0123456789a
Contoh Linux: Dapatkan UUID dari hypervisor (hanya PVAMIs)
Gunakan perintah berikut untuk mendapatkan UUID dari hypervisor:
[ec2-user ~]$
cat /sys/hypervisor/uuid
Dalam contoh output berikut, UUID dimulai dengan “ec2", yang menunjukkan bahwa sistem mungkin sebuah EC2 instance.
ec2e1916-9099-7caf-fd21-012345abcdef
Contoh Windows: Dapatkan UUID penggunaan WMI atau Windows PowerShell
Gunakan baris perintah Instrumentasi Manajemen Windows (WMIC) sebagai berikut:
wmic path win32_computersystemproduct get uuid
Atau, jika Anda menggunakan Windows PowerShell, gunakan Get-WmiObject cmdlet sebagai berikut:
PS C:\>
Get-WmiObject -query "select uuid from Win32_ComputerSystemProduct" | Select UUID
Dalam contoh output berikut, UUID dimulai dengan "EC2“, yang menunjukkan bahwa sistem mungkin sebuah EC2 instance.
EC2AE145-D1DC-13B2-94ED-012345ABCDEF
Untuk contoh menggunakan SMBIOS 2.4, UUID mungkin direpresentasikan dalam format endian kecil; misalnya:
45E12AEC-DCD1-B213-94ED-012345ABCDEF
Periksa pengenal pembuatan mesin virtual sistem
Pengidentifikasi generasi mesin virtual terdiri dari buffer unik 128-bit yang diartikan sebagai pengidentifikasi integer acak kriptografi. Anda dapat mengambil pengenal pembuatan mesin virtual untuk mengidentifikasi instans Amazon Elastic Compute Cloud Anda. Pengidentifikasi generasi diekspos dalam sistem operasi tamu instance melalui entri ACPI tabel. Nilai akan berubah jika mesin Anda diklona, disalin, atau diimpor ke AWS, seperti dengan VM Import/Export.
Contoh: Ambil pengenal generasi mesin virtual dari Linux
Anda dapat menggunakan perintah berikut untuk mengambil pengenal pembuatan mesin virtual dari instans Anda yang menjalankan Linux.
- Amazon Linux 2
-
-
Perbarui paket perangkat lunak yang ada, jika perlu, menggunakan perintah berikut:
sudo yum update
-
Jika perlu, sumber paket busybox dengan perintah berikut ini:
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
-
Jika perlu, instal paket prasyarat menggunakan perintah berikut:
sudo yum install busybox.rpm iasl -y
-
Jalankan iasl
perintah berikut untuk menghasilkan output dari ACPI tabel:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Jalankan perintah berikut untuk meninjau output dari iasl
perintah:
cat SSDT2.dsl
Output harus menghasilkan ruang alamat yang diperlukan untuk mengambil pengenal pembuatan mesin 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
})
}
}
}
-
(Opsional) Tingkatkan izin terminal Anda untuk langkah-langkah yang tersisa dengan perintah berikut:
sudo -s
-
Gunakan perintah berikut untuk menyimpan ruang alamat yang dikumpulkan sebelumnya:
VMGN_ADDR=0xFED01000
-
Gunakan perintah berikut untuk melakukan iterasi melalui ruang alamat dan membuat pengidentifikasi pembuatan mesin virtual:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Ambil pengidentifikasi pembuatan mesin virtual dari file output dengan perintah berikut:
cat vmgenid ; echo
Output Anda harus serupa dengan berikut:
EC2F335D979132C4165896753E72BD1C
- Ubuntu
-
-
Perbarui paket perangkat lunak yang ada, jika perlu, menggunakan perintah berikut:
sudo apt update
-
Jika perlu, instal paket prasyarat menggunakan perintah berikut:
sudo apt install busybox iasl -y
-
Jalankan iasl
perintah berikut untuk menghasilkan output dari ACPI tabel:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
Jalankan perintah berikut untuk meninjau output dari iasl
perintah:
cat SSDT2.dsl
Output harus menghasilkan ruang alamat yang diperlukan untuk mengambil pengenal pembuatan mesin 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
})
}
}
}
-
(Opsional) Tingkatkan izin terminal Anda untuk langkah-langkah yang tersisa dengan perintah berikut:
sudo -s
-
Gunakan perintah berikut untuk menyimpan ruang alamat yang dikumpulkan sebelumnya:
VMGN_ADDR=0xFED01000
-
Gunakan perintah berikut untuk melakukan iterasi melalui ruang alamat dan membuat pengidentifikasi pembuatan mesin virtual:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
Ambil pengidentifikasi pembuatan mesin virtual dari file output dengan perintah berikut:
cat vmgenid ; echo
Output Anda harus serupa dengan berikut:
EC2F335D979132C4165896753E72BD1C
Contoh: Ambil pengenal generasi mesin virtual dari Windows
Anda dapat membuat sampel aplikasi untuk mengambil pengidentifikasi pembuatan mesin virtual dari instans Anda yang menjalankan Windows. Untuk informasi selengkapnya, lihat Mendapatkan pengidentifikasi pembuatan mesin virtual di dokumentasi Microsoft.