कैसे एक ec2 उदाहरण के भीतर से उदाहरण आईडी प्राप्त करने के लिए?


जवाबों:


533

इस विषय पर EC2 प्रलेखन देखें ।

Daud:

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: $?\"`"

अधिक उन्नत उपयोग का एक उदाहरण (उदाहरण आईडी प्राप्त करने के साथ ही उपलब्धता क्षेत्र और क्षेत्र, आदि):

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


@ लिपीड, आप स्पष्ट रूप से अमेज़ॅन के लोगों से बेहतर जानते हैं जिन्होंने ईसी 2 को लागू किया और डॉक्स लिखे। संयोग से, कोई भी नहीं के लिए एक उपनाम बनाने से आप बंद हो जाता है 169.254.169.254में /etc/hosts, कि अगर बनाता है आप और अधिक सुरक्षित महसूस करना चाहिए आप ... देखभाल।
vladr 15

2
जावा एसडीके में क्या है? वहाँ किसी भी तरह से इसे पाने के लिए बिना उस यूआरएल पर एक GET है? अजीब लगता है अगर यह एसडीके में नहीं है
केविन एम

1
बहुत मददगार, धन्यवाद। अंतिम पंक्ति में नियमित अभिव्यक्ति का पता लगाने की कोशिश कर रहे अन्य लोगों के लिए, यहां मैं क्या कर रहा हूं: पंक्ति के अंत में ( $), एक या एक से अधिक अक्षरों के बाद एक या अधिक अंक प्राप्त करें। केवल अंकों के साथ प्रतिस्थापित करें। (बैकस्लैश + कोष्ठक एक विकल्प को याद करने के लिए sed को बताते हैं, जिसे साथ याद किया जाता है \1।) मुझे यह पढ़ने में थोड़ा आसान लगा - केवल बैकस्लैश वे हैं जिन्हें sed द्वारा आवश्यक है EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')":।
मार्क बेरी

66
आप http://instance-data/इसके बजाय जादू की संख्या को समाप्त कर सकते हैं169.254.169.254
जे पी।

20
मैंने 2016-02-04 को इसकी जाँच की। मैंने पाया कि "उदाहरण-डेटा" होस्टनाम है (ए) उस दस्तावेज में सूचीबद्ध नहीं है, और (बी) एक नए ईसी 2 होस्ट पर काम नहीं करता है (मेरे लिए)। प्रलेखन - docs.aws.amazon.com/AWSEC2/latest/UserGuide/… - केवल 169.254 पते का उल्लेख करता है, और "उदाहरण-डेटा" होस्टनाम का कोई उल्लेख नहीं करता है। अर्थात 169.254.169.254/latest/meta-data/instance-id
JDS

138

Amazon Linux AMI पर आप कर सकते हैं:

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

या, उबंटू और कुछ अन्य लिनक्स स्वादों पर, ec2metadata --instance-id(यह आदेश डिफ़ॉल्ट रूप से ubuntu पर स्थापित नहीं किया जा सकता है, लेकिन आप इसे अपने साथ जोड़ सकते हैं sudo apt-get install cloud-utils)

जैसा कि इसके नाम से पता चलता है, आप अन्य उपयोगी मेटाडेटा प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं।


3
यदि आप इसका उपयोग करने के बारे में सोच रहे हैं, तो यह लेख पढ़ने लायक है (tldr: कमांड लाइन टूल जावा हैं, और जावा में एक लंबा स्टार्टअप समय है)
जेम्स

सबसे अच्छा उत्तर
चक ले बट

@ मर्क नोप। के -बाद नहीं ec2। यह हैec2metadata --instance-id
Dawny33

5
अलग-अलग लिनक्स पर कमांड अलग-अलग है: अमेज़ॅन लिनक्स ec2-metadataपर यह उबंटू पर लगता है ec2metadata
जेम्स

सही जेम्स, मुझे वही ec2metadata मिला जो उबंटू में काम कर रहा था।
pyAddict

69

उबंटू पर आप कर सकते हैं:

sudo apt-get install cloud-utils

और फिर आप कर सकते हैं:

EC2_INSTANCE_ID=$(ec2metadata --instance-id)

आप इस तरह से जुड़े अधिकांश मेटाडेटा प्राप्त कर सकते हैं:

ec2metadata --help
सिंटेक्स: / usr / bin / ec2metadata [विकल्प]

क्वेरी और प्रदर्शन EC2 मेटाडेटा।

यदि कोई विकल्प प्रदान नहीं किया जाता है, तो सभी विकल्प प्रदर्शित किए जाएंगे

विकल्प:
    -h --help यह सहायता दिखाएं

    - कर्नेल-आईडी कर्नेल आईडी प्रदर्शित करते हैं
    --ramdisk-id ramdisk id प्रदर्शित करता है
    --reservation-आईडी आरक्षण आईडी प्रदर्शित करते हैं

    --ami-id एमी आईडी प्रदर्शित करते हैं
    --ami-launch-index-ami लॉन्च इंडेक्स प्रदर्शित करता है
    --ami- मैनिफ़ेस्ट-पाथ ami मेनिफ़ेस्ट पाथ प्रदर्शित करते हैं
    --ancestor-ami-ids अमी पूर्वज आईडी प्रदर्शित करते हैं
    -प्रोडक्ट-कोड एमि संबंधित उत्पाद कोड प्रदर्शित करते हैं
    - उपलब्धता जोन में अमीरी-जोन प्रदर्शित होता है

    - आइंस्टीन-आईडी उदाहरण आईडी प्रदर्शित करते हैं
    - आइंस्टीन-प्रकार उदाहरण प्रकार प्रदर्शित करते हैं

    - स्थानीय होस्टनाम प्रदर्शित करें
    -public-hostname सार्वजनिक hostname प्रदर्शित करता है

    -Local-ipv4 स्थानीय ipv4 आईपी पता प्रदर्शित करते हैं
    --public-ipv4 सार्वजनिक ipv4 IP पता प्रदर्शित करते हैं

    -ब्लॉक-डिवाइस-मैपिंग ब्लॉक डिवाइस आईडी प्रदर्शित करते हैं
    - सुरक्षा-समूह सुरक्षा समूहों को प्रदर्शित करते हैं

    --mac उदाहरण मैक पता प्रदर्शित करें
    -प्रोफाइल उदाहरण प्रोफ़ाइल प्रदर्शित करें
    -बिनेंस-एक्शन उदाहरण-एक्शन प्रदर्शित करता है

    - रिपब्लिक-कीज़ ओपनश पब्लिक कीज़ को प्रदर्शित करती है
    --user-data उपयोगकर्ता डेटा प्रदर्शित करता है (वास्तव में मेटाडेटा नहीं)

उबंटू ल्यूसिड के तहत apt-get installसंस्करण 0.11-0ubuntu1 प्राप्त करता है जिसमें यह उपयोगिता नहीं है। इसे बाद में पैकेज में जोड़ा गया था ।
आर्येह लीब तौरोग

7
क्लाउड-यूटिल्स पैकेज को उबंटू 12.04.1 एलटीएस क्लस्टर गणना एएमआई पर डिफ़ॉल्ट रूप से शामिल किया गया है।
एंड्रयू

2
आरएचईएल / सेंटोस में भी क्लाउड-बर्तन लगता है
क्रेग रिंगर

50

/dynamic/instance-identity/documentयदि आपको केवल अपनी इंस्टेंस आईडी से अधिक क्वेरी की आवश्यकता हो तो 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"
}

1
एक सरल कॉल में
InstType

1
इस साधारण कार्य के लिए अतिरिक्त पैकेज स्थापित किए बिना एक काफी मानक (केवल wget केवल) और काम करने की रेखा (उदाहरण-डेटा url ने amazon linux पर मेरे लिए काम नहीं किया) के लिए।
तृष्णा

27

के लिए .NETलोग:

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

24

AWS लिनक्स पर:

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

आउटपुट:

i-33400429

चरों में उपयोग करना:

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

स्वच्छ और संक्षिप्त तरीका। उबंटू 14. के साथ एक उदाहरण के लिए बॉक्स से बाहर काम करना
berbt

22

लोगों को अधिकार देने के लिए:

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

4
बस अलग कमांडेट:$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
सुमित मुरारी

इनवोक-वेबरैस्ट हमेशा एक काम नहीं करता है जब कहा जाता है कि EC2 उदाहरण ssm send-command (या Send-SSMCommand) के साथ है। यह डॉक्स में वास्तव में नहीं कहता है । संभवतः ऐसा नहीं है कि यह async नहीं है ... जो अजीब होगा। लेकिन स्टेफानकंटर का विकल्प अब तक कोई समस्या नहीं है।
जे-रोएल

22

अजगर के लिए:

import boto.utils
region=boto.utils.get_instance_metadata()['local-hostname'].split('.')[1]

जो वन-लाइनर को उबालता है:

python -c "import boto.utils; print boto.utils.get_instance_metadata()['local-hostname'].split('.')[1]"

Local_hostname के बजाय आप public_hostname, या: का भी उपयोग कर सकते हैं

boto.utils.get_instance_metadata()['placement']['availability-zone'][:-1]

बोटो के सभी नए संस्करण मैं आपको कुंजी "Inst_id" को सीधे कॉल करने देता हूं। मैंने प्रासंगिक सुझाए गए संपादन किए।
saccharine

8
inst_id = boto.utils.get_instance_metadata () ['Inst-id']
atmanman

आपको यह महसूस होता है कि यह क्षेत्र उस उदाहरण को प्राप्त करता है, उदाहरण-आईडी के रूप में नहीं, जैसा कि प्रश्न के लिए पूछा गया है, है ना?
ल्यूकगेट

2
किसी को भी आश्चर्य हो रहा है, यह बोटो में है लेकिन अभी तक बोटो 3 में नहीं है। Urllib का उपयोग करके वर्कअराउंड के लिए stackoverflow.com/a/33733852 देखें । Github.com/boto/boto3/issues/313 FWIW पर एक खुली सुविधा का अनुरोध है , JS SDK के पास यह भी है: docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS ()new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
आर्मडिलो जिम

20

सभी ec2 मशीनों के लिए, फ़ाइल में उदाहरण-आईडी पाया जा सकता है:

    /var/lib/cloud/data/instance-id

आप निम्न कमांड को चलाकर इंस्टेंस आईडी प्राप्त कर सकते हैं:

    ec2metadata --instance-id

2
यह एक बहुत ही साफ समाधान है, जिसमें HTTP अनुरोध की आवश्यकता नहीं है।
यूरी

सबसे अच्छा संभव जवाब वास्तव में
Shlublu

1
शानदार जवाब लेकिन मुझे इसके लिए प्रलेखन में संदर्भ नहीं मिला। क्या मैं पूछ सकता हूं कि आपका संदर्भ क्या है? चिंता यह है कि अगर हम उत्पादन में इस कोड को चलाने जा रहे हैं, तो हमें कैसे पता चलेगा कि यह भविष्य में नहीं बदलेगा?
शाय अजनेर

सभी linux ec2 मशीनें, शायद, लेकिन निश्चित रूप से सभी ec2 मशीनें नहीं। विंडोज पर ऐसी कोई फाइल नहीं। C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.logउदाहरण में Id शामिल है, लेकिन इसमें अन्य बहुत सारे कबाड़ भी हैं।
जेम्स

14

इस पोस्ट को देखें - ध्यान दें कि दिए गए URL में IP पता निरंतर है (जो मुझे पहली बार भ्रमित करता है), लेकिन लौटाया गया डेटा आपके उदाहरण के लिए विशिष्ट है।


लिंक मेरे लिए 404 है
repalviglator

नीचे @ DEDDev का उत्तर जांचें; मेरा उत्तर बहुत पुराना है और ऐसा लगता है कि लिंक को नीचे ले जाया गया है।
gareth_bowles

10

रूबी के लिए:

require 'rubygems'
require 'aws-sdk'
require 'net/http'

metadata_endpoint = 'http://169.254.169.254/latest/meta-data/'
instance_id = Net::HTTP.get( URI.parse( metadata_endpoint + 'instance-id' ) )

ec2 = AWS::EC2.new()
instance = ec2.instances[instance_id]

1
WTF लोग ?! तुमने मेरा संपादन चुरा लिया! stackoverflow.com/review/suggested-edits/4035074
kixorz

3
माफ़ करना। पता नहीं कैसे कहा जाए "यह एक अच्छा संपादन है। मैं ओपी हूं। इसे स्वीकार करें"।
केविन मेयर

10

एक अधिक समकालीन समाधान।

अमेज़ॅन लिनक्स से ec2-मेटाडेटा कमांड पहले से इंस्टॉल है।

टर्मिनल से

ec2-metadata -help

आपको उपलब्ध विकल्प देगा

ec2-metadata -i

वापस होगा

instance-id: yourid

1
छद्म आईपी पर निर्भर करता है की तुलना में बेहतर
माइक डी

ec2-metadataअपने साथ motd, डॉक्स यहाँ गठबंधन करें: coderwall.com/p/hr_9pw/motds-on-amazon-amis
माइक डी

2
उबंटू छवि में कमांड "ec2metadata --instance-id" है और केवल उदाहरण आईडी मूल्य
अल्बर्टो मेगिया


9

आप यह कोशिश कर सकते हैं:

#!/bin/bash
aws_instance=$(wget -q -O- http://169.254.169.254/latest/meta-data/instance-id)
aws_region=$(wget -q -O- http://169.254.169.254/latest/meta-data/hostname)
aws_region=${aws_region#*.}
aws_region=${aws_region%%.*}
aws_zone=`ec2-describe-instances $aws_instance --region $aws_region`
aws_zone=`expr match "$aws_zone" ".*\($aws_region[a-z]\)"`

8

एक c # .net वर्ग मैंने http एपीआई से EC2 मेटाडेटा के लिए लिखा था। मैं आवश्यकतानुसार कार्यक्षमता के साथ इसका निर्माण करूंगा। आप चाहें तो इसके साथ दौड़ सकते हैं।

using Amazon;
using System.Net;

namespace AT.AWS
{
    public static class HttpMetaDataAPI
    {
        public static bool TryGetPublicIP(out string publicIP)
        {
            return TryGetMetaData("public-ipv4", out publicIP);
        }
        public static bool TryGetPrivateIP(out string privateIP)
        {
            return TryGetMetaData("local-ipv4", out privateIP);
        }
        public static bool TryGetAvailabilityZone(out string availabilityZone)
        {
            return TryGetMetaData("placement/availability-zone", out availabilityZone);
        }

        /// <summary>
        /// Gets the url of a given AWS service, according to the name of the required service and the AWS Region that this machine is in
        /// </summary>
        /// <param name="serviceName">The service we are seeking (such as ec2, rds etc)</param>
        /// <remarks>Each AWS service has a different endpoint url for each region</remarks>
        /// <returns>True if the operation was succesful, otherwise false</returns>
        public static bool TryGetServiceEndpointUrl(string serviceName, out string serviceEndpointStringUrl)
        {
            // start by figuring out what region this instance is in.
            RegionEndpoint endpoint;
            if (TryGetRegionEndpoint(out endpoint))
            {
                // now that we know the region, we can get details about the requested service in that region
                var details = endpoint.GetEndpointForService(serviceName);
                serviceEndpointStringUrl = (details.HTTPS ? "https://" : "http://") + details.Hostname;
                return true;
            }
            // satisfy the compiler by assigning a value to serviceEndpointStringUrl
            serviceEndpointStringUrl = null;
            return false;
        }
        public static bool TryGetRegionEndpoint(out RegionEndpoint endpoint)
        {
            // we can get figure out the region end point from the availability zone
            // that this instance is in, so we start by getting the availability zone:
            string availabilityZone;
            if (TryGetAvailabilityZone(out availabilityZone))
            {
                // name of the availability zone is <nameOfRegionEndpoint>[a|b|c etc]
                // so just take the name of the availability zone and chop off the last letter
                var nameOfRegionEndpoint = availabilityZone.Substring(0, availabilityZone.Length - 1);
                endpoint = RegionEndpoint.GetBySystemName(nameOfRegionEndpoint);
                return true;
            }
            // satisfy the compiler by assigning a value to endpoint
            endpoint = RegionEndpoint.USWest2;
            return false;
        }
        /// <summary>
        /// Downloads instance metadata
        /// </summary>
        /// <returns>True if the operation was successful, false otherwise</returns>
        /// <remarks>The operation will be unsuccessful if the machine running this code is not an AWS EC2 machine.</remarks>
        static bool TryGetMetaData(string name, out string result)
        {
            result = null;
            try { result = new WebClient().DownloadString("http://169.254.169.254/latest/meta-data/" + name); return true; }
            catch { return false; }
        }

/************************************************************
 * MetaData keys.
 *   Use these keys to write more functions as you need them
 * **********************************************************
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
*************************************************************/
    }
}

7

नवीनतम जावा एसडीके में है EC2MetadataUtils:

जावा में:

import com.amazonaws.util.EC2MetadataUtils;
String myId = EC2MetadataUtils.getInstanceId();

स्काला में:

import com.amazonaws.util.EC2MetadataUtils
val myid = EC2MetadataUtils.getInstanceId

5

C ++ के लिए (cURL का उपयोग करके):

    #include <curl/curl.h>

    //// cURL to string
    size_t curl_to_str(void *contents, size_t size, size_t nmemb, void *userp) {
        ((std::string*)userp)->append((char*)contents, size * nmemb);
        return size * nmemb;
    };

    //// Read Instance-id 
    curl_global_init(CURL_GLOBAL_ALL); // Initialize cURL
    CURL *curl; // cURL handler
    CURLcode res_code; // Result
    string response;
    curl = curl_easy_init(); // Initialize handler
    curl_easy_setopt(curl, CURLOPT_URL, "http://169.254.169.254/latest/meta-data/instance-id");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_to_str);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
    res_code = curl_easy_perform(curl); // Perform cURL
    if (res_code != CURLE_OK) { }; // Error
    curl_easy_cleanup(curl); // Cleanup handler
    curl_global_cleanup(); // Cleanup cURL

3

var/lib/cloud/instanceसिंपलिंक की जांच करें , यह इंगित करना चाहिए कि आपका उदाहरण-आईडी /var/lib/cloud/instances/{instance-id}कहां {instance_id}है।


1
मैं इसका इस्तेमाल नहीं करूंगा। मेटाडेटा प्राप्त करने के लिए अनुमोदित HTTP अनुरोध का उपयोग करने से आप बेहतर हैं।
Daisuke Aramaki

3

यदि आप अजगर में सभी उदाहरण आईडी सूची प्राप्त करना चाहते हैं तो कोड है:

import boto3

ec2=boto3.client('ec2')
instance_information = ec2.describe_instances()

for reservation in instance_information['Reservations']:
   for instance in reservation['Instances']:
      print(instance['InstanceId'])

2

FWIW I ने EC2 मेटाडेटा सेवा तक पहुँच प्रदान करने के लिए एक FUSE फाइल सिस्टम लिखा: https://bitbucket.org/dgc/ec2mdfs । मैं इसे सभी कस्टम एएमआई पर चलाता हूं; यह मुझे इस मुहावरे का उपयोग करने की अनुमति देता है: cat / ec2 / meta-data / ami-id


2

Go में आप goamz पैकेज का उपयोग कर सकते हैं ।

import (
    "github.com/mitchellh/goamz/aws"
    "log"
)

func getId() (id string) {
    idBytes, err := aws.GetMetaData("instance-id")
    if err != nil {
        log.Fatalf("Error getting instance-id: %v.", err)
    }

    id = string(idBytes)

    return id
}

यहाँ GetMetaData स्रोत है।


1

प्रश्न में आपने उपयोगकर्ता को रूट के रूप में उल्लेख किया है, मुझे एक बात का उल्लेख करना चाहिए कि उदाहरण आईडी उपयोगकर्ता पर निर्भर नहीं है।

के लिए नोड डेवलपर्स,

var meta  = new AWS.MetadataService();

meta.request("/latest/meta-data/instance-id", function(err, data){
    console.log(data);
});


0

आप बस अपने मेटाडेटा मापदंडों को पारित करके किसी भी मेटाडेटा को प्राप्त करने के लिए एक HTTP अनुरोध कर सकते हैं।

curl http://169.254.169.254/latest/meta-data/instance-id

या

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

मेटाडेटा और उपयोगकर्ताडेटा प्राप्त करने के लिए आपको HTTP अनुरोधों के लिए बिल नहीं दिया जाएगा।

अन्य

आप EC2 इंस्टेंस मेटाडेटा क्वेरी टूल का उपयोग कर सकते हैं, जो कि एक साधारण बैश स्क्रिप्ट है, जो प्रलेखन के रूप में उल्लिखित EC2 इंस्टेंस मेटाडाटा को चालू करने के लिए कर्ल का उपयोग करता है।

उपकरण डाउनलोड करें:

$ wget http://s3.amazonaws.com/ec2metadata/ec2-metadata

अब आवश्यक डेटा प्राप्त करने के लिए कमांड चलाएं।

$ec2metadata -i

देखें:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

https://aws.amazon.com/items/1825?externalID=1825

मदद करने के लिए खुश.. :)


0

PHP के लिए वैकल्पिक दृष्टिकोण:

$instance = json_decode(file_get_contents('http://169.254.169.254/latest/dynamic/instance-identity/document'),true);
$id = $instance['instanceId'];
print_r($instance);

उदाहरण के बारे में बहुत सारा डेटा प्रदान करेगा, सभी एक सरणी में अच्छी तरह से पैक किए गए, कोई बाहरी निर्भरता नहीं। जैसा कि यह एक अनुरोध है कि मेरे लिए कभी भी असफल या देरी नहीं हुई, इसे इस तरह से करना सुरक्षित होना चाहिए, अन्यथा मैं कर्ल के लिए जाऊंगा ()


0

PHP के लिए:

$instance = json_decode(file_get_contents('http://169.254.169.254/latest/dynamic/instance-identity/document));
$id = $instance['instanceId'];

प्रति @ संपादित करें


यदि आप PHP में कर्ल और देशी कार्य करते हैं तो आप उस उद्देश्य के लिए गुज़्ज़हेट्प का उपयोग क्यों करेंगे?
जॉन

यह मेरी प्राथमिकता है। मैं कई अन्य चीजों के लिए गुझिया का उपयोग करता हूं, यह कई अन्य पैकेजों के लिए भी एक सामान्य शर्त है।
समुद्र

$ इंस्टेंस = json_decode (file_get_contents (' 169.254.169.254/latest/dynamic/instance-identity/… ); $ id = $ इंस्टेंस [' InstId ']; मुझे पता है कि गज़ल व्यापक है, मैंने खुद इसे कभी नहीं छुआ है। एक सरल कार्य मैं सबसे हल्का दृष्टिकोण प्रदान करता हूं।
जॉन


0

EC2 संसाधन से संबंधित सभी मेटा-डेटा को EC2 उदाहरण द्वारा स्वयं प्राप्त किया जा सकता है, निम्नलिखित कमांड की मदद से निष्पादित किया जा सकता है:

CURL:

http://169.254.169.254/<api-version>/meta-data/<metadata-requested>

आपके मामले के लिए: " मेटाडेटा-अनुरोधित " उदाहरण-आईडी होना चाहिए , " एपीआई-संस्करण " आमतौर पर नवीनतम होता है होता है जिसका उपयोग किया जा सकता है।

अतिरिक्त नोट: आप उपरोक्त आदेश का उपयोग करके EC2 विशेषताओं के नीचे से संबंधित जानकारी भी प्राप्त कर सकते हैं।

अमी-आईडी, अमी-लॉन्च-इंडेक्स, अमी-मेनिफेस्ट-पथ, ब्लॉक-डिवाइस-मैपिंग /, होस्टनाम, आईएएम /, उदाहरण-कार्रवाई, उदाहरण-आईडी, उदाहरण-प्रकार, स्थानीय-होस्टनाम, स्थानीय-आईपीवी 4, मैक मेट्रिक्स /, नेटवर्क /, प्लेसमेंट /, प्रोफाइल, पब्लिक-होस्टनाम, पब्लिक-आईपीवी 4, पब्लिक-कीज़ /, रिजर्वेशन-आईडी, सिक्योरिटी-ग्रुप्स, सर्विसेज /,

अधिक जानकारी के लिए कृपया इस लिंक का अनुसरण करें: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html


0

विंडोज उदाहरण के लिए:

(wget http://169.254.169.254/latest/meta-data/instance-id).Content

या

(ConvertFrom-Json (wget http://169.254.169.254/latest/dynamic/instance-identity/document).Content).instanceId

0

AWS के लिए इलास्टिक बीनस्टॉक ईब क्लि रन eb tags --list

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.