EC2 인스턴스 식별 - Amazon Elastic Compute Cloud

EC2 인스턴스 식별

특히 혼합 컴퓨팅 환경이 있는 경우 애플리케이션이 EC2 인스턴스에서 실행되고 있는지 확인해야 할 수 있습니다. 각 인스턴스에는 암호화 방식으로 확인할 수 있는 서명된 인스턴스 ID 문서가 있습니다. 이러한 문서는 라우팅되지 않는 다음 로컬 주소 http://169.254.169.254/latest/dynamic/instance-identity/에서 찾을 수 있습니다. 자세한 내용은 Amazon EC2 인스턴스의 인스턴스 자격 증명 문서 단원을 참조하십시오.

시스템 UUID 검사

시스템 UUID를 가져와 UUID의 첫 번째 8진수에서 EC2(Linux에서는 소문자 ec2일 수 있음)를 찾을 수 있습니다. 이 방법은 빠르지만 EC2 인스턴스가 아닌 시스템에 이러한 문자로 시작하는 UUID가 있을 가능성이 적기 때문에 잠재적으로는 부정확할 수 있습니다. 또한 일부 버전의 SMBIOS는 UUID의 시작 부분에 EC2가 포함되지 않는 little-endian 형식을 사용합니다. 이는 Windows용 SMBIOS 2.4를 사용하는 EC2 인스턴스 또는 자체 SMBIOS 구현이 있는 Amazon Linux 2 이외의 Linux 배포판의 경우에 해당할 수 있습니다.

Linux 예: DMI에서 UUID 가져오기(HVM AMI만 해당)

데스크톱 관리 인터페이스(DMI)를 사용하여 UUID를 가져오려면 다음 명령을 사용합니다.

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

다음 출력 예에서 UUID가 "EC2"로 시작합니다. 이는 시스템이 아마도 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 가져오기(PV AMI만 해당)

다음 명령을 사용하여 하이퍼바이저에서 UUID를 가져옵니다.

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

다음 출력 예에서 UUID가 "ec2"로 시작합니다. 이는 시스템이 아마도 EC2 인스턴스라는 것을 나타냅니다.

ec2e1916-9099-7caf-fd21-012345abcdef
Windows 예: WMI 또는 Windows PowerShell을 사용하여 UUID 가져오기

다음과 같이 Windows Management Instrumentation 명령줄(WMIC)을 사용합니다.

wmic path win32_computersystemproduct get uuid

또는 Windows PowerShell을 사용하는 경우 다음과 같이 Get-WmiObject cmdlet을 사용합니다.

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

다음 출력 예에서 UUID가 "EC2"로 시작합니다. 이는 시스템이 아마도 EC2 인스턴스라는 것을 나타냅니다.

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

SMBIOS 2.4를 사용하는 인스턴스의 경우 UUID를 리틀 엔디안 형식으로 나타낼 수 있습니다. 예를 들면 다음과 같습니다.

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

시스템 가상 머신 생성 식별자 검사

가상 머신 생성 식별자는 암호화 임의의 정수 식별자로 해석되는 128비트의 고유 버퍼로 구성됩니다. 가상 머신 생성 식별자를 검색하여 Amazon Elastic Compute Cloud 인스턴스를 식별할 수 있습니다. 생성 식별자는 ACPI 테이블 항목을 통해 인스턴스의 게스트 운영 체제 내에 노출됩니다. 머신을 복제 또는 복사하거나 VM Import/Export 등을 통해 AWS로 가져오는 경우 값이 변경됩니다.

예: Linux에서 가상 머신 생성 식별자 검색

다음과 같은 명령을 사용하여 Linux를 실행하는 인스턴스에서 가상 머신 생성 식별자를 검색할 수 있습니다.

Amazon Linux 2
  1. 필요하면 다음과 같은 명령을 사용하여 기존 소프트웨어 패키지를 업데이트합니다.

    sudo yum update
  2. 필요한 경우 다음과 같은 명령을 사용하여 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
  3. 필요한 경우 다음과 같은 명령을 사용하여 필수 구성 요소 패키지를 설치합니다.

    sudo yum install busybox.rpm iasl -y
  4. 다음과 같은 iasl 명령을 실행하여 ACPI 테이블에서 출력을 생산합니다.

    sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
  5. 다음과 같은 명령을 실행하여 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
            })
        }
    }
    }
  6. (선택 사항) 다음과 같은 명령으로 나머지 단계에 대한 터미널 권한을 승격합니다.

    sudo -s
  7. 다음과 같은 명령을 사용하여 이전에 수집한 주소 공간을 저장합니다.

    VMGN_ADDR=0xFED01000
  8. 다음과 같은 명령을 사용하여 주소 공간을 반복하고 가상 머신 생성 식별자를 구축합니다.

    for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
  9. 다음과 같은 명령으로 출력 파일에서 가상 머신 생성 식별자를 검색합니다.

    cat vmgenid ; echo

    다음과 유사하게 출력되어야 합니다.

    EC2F335D979132C4165896753E72BD1C
Ubuntu
  1. 필요하면 다음과 같은 명령을 사용하여 기존 소프트웨어 패키지를 업데이트합니다.

    sudo apt update
  2. 필요한 경우 다음과 같은 명령을 사용하여 필수 구성 요소 패키지를 설치합니다.

    sudo apt install busybox iasl -y
  3. 다음과 같은 iasl 명령을 실행하여 ACPI 테이블에서 출력을 생산합니다.

    sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
  4. 다음과 같은 명령을 실행하여 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
            })
        }
    }
    }
  5. (선택 사항) 다음과 같은 명령으로 나머지 단계에 대한 터미널 권한을 승격합니다.

    sudo -s
  6. 다음과 같은 명령을 사용하여 이전에 수집한 주소 공간을 저장합니다.

    VMGN_ADDR=0xFED01000
  7. 다음과 같은 명령을 사용하여 주소 공간을 반복하고 가상 머신 생성 식별자를 구축합니다.

    for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
  8. 다음과 같은 명령으로 출력 파일에서 가상 머신 생성 식별자를 검색합니다.

    cat vmgenid ; echo

    다음과 유사하게 출력되어야 합니다.

    EC2F335D979132C4165896753E72BD1C
예: Windows에서 가상 머신 생성 식별자 검색

샘플 애플리케이션을 생성하여 Windows를 실행하는 인스턴스에서 가상 머신 생성 식별자를 검색할 수 있습니다. 자세한 내용은 Microsoft 설명서의 가상 머신 생성 식별자 얻기 섹션을 참조하세요.