[amazon-ec2] EC2 인스턴스에서 인스턴스 ID를 얻는 방법은 무엇입니까?

instance idec2 인스턴스에서 ec2 인스턴스를 찾으려면 어떻게 해야합니까?



답변

해당 주제에 대한 EC2 설명서를 참조하십시오 .

운영:

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id

스크립트 내에서 인스턴스 ID에 프로그래밍 방식으로 액세스해야하는 경우

die() { status=$1; shift; echo "FATAL: $*"; exit $status; }
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"

고급 사용의 예 (인스턴스 ID 및 가용 영역 및 리전 등) :

EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"

플랫폼에 설치된 내용에 따라을 curl대신 사용할 수도 있습니다 wget.


답변

Amazon Linux AMI에서 다음을 수행 할 수 있습니다.

$ ec2-metadata -i
instance-id: i-1234567890abcdef0

또는 우분투와 다른 리눅스 풍미에서 ec2metadata --instance-id(이 명령은 우분투에는 기본적으로 설치되지 않을 수도 있지만을 사용하여 추가 할 수 있습니다 sudo apt-get install cloud-utils)

이름에서 알 수 있듯이이 명령을 사용하여 다른 유용한 메타 데이터도 얻을 수 있습니다.


답변

우분투에서는 다음을 수행 할 수 있습니다.

sudo apt-get install cloud-utils

그리고 당신은 할 수 있습니다 :

EC2_INSTANCE_ID=$(ec2metadata --instance-id)

이 방법으로 인스턴스와 관련된 대부분의 메타 데이터를 얻을 수 있습니다.

ec2metadata --help
구문 : / usr / bin / ec2metadata [옵션]

EC2 메타 데이터를 쿼리하고 표시합니다.

옵션이 제공되지 않으면 모든 옵션이 표시됩니다

옵션 :
    -h --help이 도움말을 표시합니다

    --kernel-id 커널 ID를 표시합니다
    --ramdisk-id 램 디스크 ID를 표시합니다
    --reservation-id 예약 ID를 표시합니다

    --ami-id는 ami id를 표시합니다
    --ami-launch-index ami 실행 색인을 표시합니다
    --ami-manifest-path ami 매니페스트 경로를 표시합니다
    -조상 -ami-ids는 조상 ID를 표시합니다
    --product-codes는 ami 관련 제품 코드를 표시합니다
    --availability-zone은 ami 배치 영역을 표시합니다

    --instance-id 인스턴스 ID를 표시합니다
    -인스턴스 유형 인스턴스 유형을 표시합니다

    --local-hostname은 로컬 호스트 이름을 표시합니다
    --public-hostname은 공개 호스트 이름을 표시합니다

    --local-ipv4는 로컬 ipv4 ip 주소를 표시합니다
    --public-ipv4는 공개 ipv4 IP 주소를 표시합니다

    --block-device-mapping 블록 장치 ID를 표시합니다
    --security-groups는 보안 그룹을 표시합니다

    --mac 인스턴스 mac 주소를 표시합니다
    --profile 인스턴스 프로파일을 표시합니다
    -인스턴스 액션은 인스턴스 액션을 표시

    --public-keys는 openssh 공개 키를 표시합니다
    --user-data 사용자 데이터를 표시합니다 (실제로는 메타 데이터가 아님).


답변

/dynamic/instance-identity/document인스턴스 ID 이상을 쿼리해야하는 경우 URL을 사용하십시오 .

wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document

이렇게하면 단일 요청 만으로 이와 같은 JSON 데이터 를 얻을 수 있습니다 .

{
    "devpayProductCodes" : null,
    "privateIp" : "10.1.2.3",
    "region" : "us-east-1",
    "kernelId" : "aki-12345678",
    "ramdiskId" : null,
    "availabilityZone" : "us-east-1a",
    "accountId" : "123456789abc",
    "version" : "2010-08-31",
    "instanceId" : "i-12345678",
    "billingProducts" : null,
    "architecture" : "x86_64",
    "imageId" : "ami-12345678",
    "pendingTime" : "2014-01-23T45:01:23Z",
    "instanceType" : "m1.small"
}


답변

.NET사람들을 위해 :

string instanceId = new StreamReader(
      HttpWebRequest.Create("http://169.254.169.254/latest/meta-data/instance-id")
      .GetResponse().GetResponseStream())
    .ReadToEnd();


답변

AWS Linux에서 :

ec2-metadata --instance-id | cut -d " " -f 2

산출:

i-33400429

변수 사용 :

ec2InstanceId=$(ec2-metadata --instance-id | cut -d " " -f 2);
ls "log/${ec2InstanceId}/";


답변

파워 쉘 사람들을 위해 :

(New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")