本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
偵測主機是否為EC2執行個體
您可能需要知道您的應用程式或網站是否在執行個EC2體上執行,尤其是當您有混合運算環境時。您可以使用下列其中一個選項來判斷應用程式或網站的主機是否為EC2執行個體。
檢查 執行個體身分文件
每個執行個體都有簽署的執行個體身分識別文件,您可以透過密碼方式 您可以使用執行個體中繼資料服務 (IMDS) 來尋找這些文件。
如需詳細資訊,請參閱執行個體身分文件。
檢查系統 UUID
您可以獲取系統UUID並查看 in 的開頭八位字節EC2
(在 Linux 中,這可能是小寫字母ec2
)。UUID這種方法很快,但可能不準確,因為不是EC2實例的系統很有可能具有以這些字符開頭的可能性。UUID此外,某些版本的SMBIOS使用 little-endian 格式,它不包括EC2
在. UUID 對於使用 SMBIOS 2.4 進行 Windows 的EC2執行個體或具有自己實作的 Amazon Linux 以外的 Linux 發行版,可能就是這種情況SMBIOS。
Linux 示例:UUID從DMI(HVMAMIs僅)獲取
使用下列命令來取得UUID使用桌面管理介面 (DMI):
[ec2-user ~]$
sudo dmidecode --string system-uuid
在下列範例輸出中,以 "EC2" UUID 開頭,表示系統可能是EC2執行個體。
EC2E1916-9099-7CAF-FD21-012345ABCDEF
在下面的例子輸出中UUID,以小端格式表示。
45E12AEC-DCD1-B213-94ED-012345ABCDEF
或者,對於建立在 Nitro 系統上的執行個體,您可以使用下列命令:
[ec2-user ~]$
cat /sys/devices/virtual/dmi/id/board_asset_tag
如果輸出為執行個體 ID,如下列範例輸出所示,則系統為EC2執行個體:
i-0af01c0123456789a
Linux 範例:UUID從虛擬機器管理程序取得 (AMIs僅限 PV)
使用以下命令從管理程序UUID中獲取:
[ec2-user ~]$
cat /sys/hypervisor/uuid
在下列範例輸出中,以「ec2" UUID 開頭,表示系統可能是EC2執行個體。
ec2e1916-9099-7caf-fd21-012345abcdef
視窗範例:取得使UUID用WMI或視窗 PowerShell
使用 Windows 管理檢測指令列 (WMIC),如下所示:
wmic path win32_computersystemproduct get uuid
或者,如果您使用的是 Windows PowerShell,請依照下列方式使用Get-WmiObject指令程式:
PS C:\>
Get-WmiObject -query "select uuid from Win32_ComputerSystemProduct" | Select UUID
在下列範例輸出中,以 "EC2" UUID 開頭,表示系統可能是EC2執行個體。
EC2AE145-D1DC-13B2-94ED-012345ABCDEF
對於使用 SMBIOS 2.4 的實例,UUID可能會以小端格式表示;例如:
45E12AEC-DCD1-B213-94ED-012345ABCDEF
檢查系統虛擬機器產生識別符
虛擬機器產生識別符由 128 位元的專屬緩衝區組成,該緩衝區解譯為加密隨機整數識別符。您可以擷取虛擬機器產生識別符以識別您的 Amazon Elastic Compute Cloud 執行個體。產生識別碼會透過ACPI表格項目在執行個體的客體作業系統中公開。若您的電腦被複製或匯入到 AWS(例如使用 VM Import/Export),那麼值就會改變。
範例:從 Linux 擷取虛擬機器產生識別碼
您可使用以下命令從執行 Linux 的執行個體中擷取虛擬機器產生識別符。
- Amazon Linux 2
-
-
根據需要,使用以下命令更新現有軟體套件:
sudo yum update
-
如有必要,使用下列命令以 busybox 套件作為來源:
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
-
如有必要,使用下列命令安裝必要條件套件:
sudo yum install busybox.rpm iasl -y
-
執行下列iasl
命令以產生ACPI資料表的輸出:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
執行下列命令,以檢閱 iasl
命令的輸出結果:
cat SSDT2.dsl
輸出結果應產生擷取虛擬機器產生識別符所需的地址空間:
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
})
}
}
}
-
(選用) 使用下列命令提升其餘步驟的終端許可:
sudo -s
-
使用下列命令存放先前收集的地址空間:
VMGN_ADDR=0xFED01000
-
使用下列命令重複執行地址空間並建置虛擬機器產生識別符:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
使用下列命令從輸出檔案中擷取虛擬機器產生識別符:
cat vmgenid ; echo
您的輸出應類似以下內容:
EC2F335D979132C4165896753E72BD1C
- Ubuntu
-
-
根據需要,使用以下命令更新現有軟體套件:
sudo apt update
-
如有必要,使用下列命令安裝必要條件套件:
sudo apt install busybox iasl -y
-
執行下列iasl
命令以產生ACPI資料表的輸出:
sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
-
執行下列命令,以檢閱 iasl
命令的輸出結果:
cat SSDT2.dsl
輸出結果應產生擷取虛擬機器產生識別符所需的地址空間:
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
})
}
}
}
-
(選用) 使用下列命令提升其餘步驟的終端許可:
sudo -s
-
使用下列命令存放先前收集的地址空間:
VMGN_ADDR=0xFED01000
-
使用下列命令重複執行地址空間並建置虛擬機器產生識別符:
for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
-
使用下列命令從輸出檔案中擷取虛擬機器產生識別符:
cat vmgenid ; echo
您的輸出應類似以下內容:
EC2F335D979132C4165896753E72BD1C
範例:從 Windows 擷取虛擬機器產生識別碼
您可建立範例應用程式,從執行 Windows 的執行個體中擷取虛擬機器產生識別符。如需詳細資訊,請參閱 Microsoft 文件集中的《取得虛擬機器產生識別符》。