কোনও ই সি 2 উদাহরণের মধ্যে থেকে আইডি কীভাবে পাবেন?


379

আমি কীভাবে instance idইক্য 2 উদাহরণের মধ্য থেকে কোনও ই সি 2 উদাহরণটি খুঁজে পেতে পারি ?

উত্তর:


533

বিষয়টিতে ইসি 2 ডকুমেন্টেশন দেখুন ।

চালান:

wget -q -O - http://169.254.169.254/latest/meta-data/instance-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কোনও পরিচর্যা তৈরি করতে বাধা দেন না তবে ... যত্ন নেওয়া উচিত।
ভ্লাদার

2
জাভা এসডিকে কী হবে? Ur ইউআরএলটিতে জিইটি না করে কী কী পাওয়ার উপায় আছে? এটি এসডিকে না থাকলে অদ্ভুত
কেভিন এম

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
জেডিএস

138

আমাজন লিনাক্স এএমআইতে আপনি এটি করতে পারেন:

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

অথবা, উবুন্টু এবং অন্যান্য কিছু লিনাক্স স্বাদে ec2metadata --instance-id( উবুন্টুতে এই কমান্ডটি ডিফল্টরূপে ইনস্টল করা নাও হতে পারে তবে আপনি এটি দিয়ে যোগ করতে পারেন sudo apt-get install cloud-utils)

এর নাম অনুসারে, আপনি অন্যান্য দরকারী মেটাডেটা পেতে কমান্ডটি ব্যবহার করতে পারেন।


3
আপনি যদি এটি ব্যবহার করার বিষয়ে ভাবছেন তবে এই নিবন্ধটি পড়ার মতো (tldr: কমান্ড লাইনের সরঞ্জামগুলি জাভা এবং জাভা দীর্ঘ প্রারম্ভকালীন সময় ছিল)
জেমস

সেরা উত্তর
চক লে বাট

@ মার্ক নোপ না -পরে ec2। এটিec2metadata --instance-id
ডাউনি 33

5
কমান্ডটি বিভিন্ন লিনাক্সে পৃথক: অ্যামাজন লিনাক্সে এটি ec2-metadataউবুন্টুতে মনে হয় ec2metadata
জেমস

রাইট জেমস, আমি উবুন্টুতে একই ইকোমেটাদাতা কাজ করতে পেলাম।
pyAddict

69

উবুন্টুতে আপনি:

sudo apt-get install cloud-utils

এবং তারপরে আপনি এটি করতে পারেন:

EC2_INSTANCE_ID=$(ec2metadata --instance-id)

আপনি উদাহরণের সাথে সম্পর্কিত বেশিরভাগ মেটাডেটা পেতে পারেন:

ec2metadata - সহায়তা
সিনট্যাক্স: / usr / বিন / ec2metadata [বিকল্পসমূহ]

অনুসন্ধান এবং ইসি 2 মেটাডেটা প্রদর্শন করুন।

কোনও বিকল্প সরবরাহ করা না হলে, সমস্ত বিকল্প প্রদর্শিত হবে

বিকল্প:
    -হ - সাহায্য এই সাহায্য প্রদর্শন করুন show

    --kernel-id কার্নেল আইডি প্রদর্শন করে
    --ramdisk-id ramdisk id প্রদর্শন করে
    --re সংরক্ষণ-id রিজার্ভেশন আইডি প্রদর্শন করে

    --ami-id অ্যামি আইডি প্রদর্শন করে
    --আমি-লঞ্চ-সূচকটি অ্যামি লঞ্চ সূচকটি প্রদর্শন করে
    --ami-manifest-path অমি প্রকাশের পথ প্রদর্শন করে
    --ancestor-ami-ids এ অমি পূর্বপুরুষের আইডি প্রদর্শন করে
    - প্রোডাক্ট-কোডগুলি অ্যামি সম্পর্কিত পণ্য কোডগুলি প্রদর্শন করে
    - উপলব্ধতা-অঞ্চলটি অমি প্লেসমেন্ট জোনটি প্রদর্শন করে

    --instance-id উদাহরণ আইডি প্রদর্শন করে
    --instance- টাইপ উদাহরণ টাইপ প্রদর্শন

    --local-hostname স্থানীয় হোস্ট-নেম প্রদর্শন করে display
    --public- হোস্টনেম সর্বজনীন হোস্ট-নেম প্রদর্শন করে

    --local-ipv4 স্থানীয় ipv4 ip ঠিকানা প্রদর্শন করে
    --public-ipv4 সর্বজনীন ipv4 ip ঠিকানা প্রদর্শন করে

    - ব্লক-ডিভাইস-ম্যাপিং ব্লক ডিভাইস আইডি প্রদর্শন করে
    - সুরক্ষা-গোষ্ঠীগুলি সুরক্ষা দলগুলি প্রদর্শন করে

    --mac উদাহরণ ম্যাক ঠিকানা প্রদর্শন করে
    - প্রোফাইল প্রোফাইল প্রদর্শন করে
    --instance- ক্রিয়া উদাহরণ-ক্রিয়া প্রদর্শন করে

    - -পাবলিক-কিগুলি ওপেনশ পাবলিক কী প্রদর্শন করে
    - ব্যবহারকারী-ডেটা ব্যবহারকারীর ডেটা প্রদর্শন করে (আসলে মেটাডেটা নয়)

উবুন্টু apt-get installলুসিডের অধীনে 0.11-0ubuntu1 সংস্করণটি পুনরুদ্ধার করে যা এই ইউটিলিটিটি ধারণ করে না। এটি প্যাকেজে যুক্ত হয়েছিল ঠিক তারপরে
আরেহ লাইব বৃষ

7
ক্লাব-ইউস প্যাকেজটি উবুন্টু 12.04.1 এলটিএস ক্লাস্টার কম্পিউট এএমআই-এ ডিফল্টরূপে অন্তর্ভুক্ত।
অ্যান্ড্রু

2
মেঘ-ব্যবহারগুলি RHEL / CentOS তেও বলে মনে হচ্ছে
ক্রেগ রিঞ্জার

50

/dynamic/instance-identity/documentইউআরএলটি ব্যবহার করুন যদি আপনার প্রয়োজন আইডির চেয়েও বেশি জিজ্ঞাসা করা দরকার।

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

এটি আপনাকে জেএসওন ডেটা যেমন একটি একক অনুরোধ সহ পাবে

{
    "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
একটি সাধারণ কলটিতে উদাহরণ
টাইপ

1
এই সাধারণ কাজের জন্য অতিরিক্ত প্যাকেজ ইনস্টল না করে মোটামুটি মানক (শুধুমাত্র উইজেট) এবং ওয়ার্কিং লাইন থাকার জন্য (উদাহরণস্বরূপ-ডেটা ইউআরএল আমার জন্য কাজ করে না) on
তিশমা


24

এডাব্লুএস লিনাক্সে:

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

আউটপুট:

i-33400429

ভেরিয়েবলগুলিতে ব্যবহার করা:

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

পরিষ্কার এবং সংক্ষিপ্ত উপায়। উবুন্টু 14

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
সুমিত মুরারি

এসসিএম প্রেরণ-কমান্ড (বা প্রেরণ-এসএসএমকম্যান্ড) দিয়ে ইসি ইনস্ট্যান্ট হিসাবে স্ক্রিপ্ট চালানোর সময় ইনভোক-ওয়েবরয়েস্ট সর্বদা কাজ করে না। এটি ডক্সে সত্যিই বলে না । সম্ভবত এটি অ্যাসিঙ্ক নয় ... যা অদ্ভুত হবে। তবে স্টেফ্যানকন্টারের বিকল্পটি এখন পর্যন্ত কোনও সমস্যা ছাড়াই কাজ করে।
জে-রোল 25'17

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]"

স্থানীয়_ হোস্টনেমের পরিবর্তে আপনি পাবলিক_ হোস্টনেম ব্যবহার করতে পারেন, বা:

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

বোটোটির সমস্ত নতুন সংস্করণ আমি দেখতে পাচ্ছি আপনাকে কী "ইনস্ট্যান্স_আইডি" সরাসরি কল করতে দিন। আমি প্রাসঙ্গিক প্রস্তাবিত সম্পাদনাগুলি করেছি।
স্যাকারিন

8
inst_id = boto.utils.get_instance_metadata () ['দৃষ্টান্ত-আইডি']
আতিসমান

আপনি কি বুঝতে পেরেছেন যে এটি সেই অঞ্চলে পেয়েছে যে উদাহরণটি রয়েছে, উদাহরণস্বরূপ-আইডি নয়, যেমন প্রশ্ন করা হয়েছিল, তাই না?
লুকজিটি

2
যে কেউ ভাবছেন, এটি বোটোতে রয়েছে তবে বোটো 3 এ এখনও নেই। দেখুন stackoverflow.com/a/33733852 একটি ওয়ার্কঅ্যারাউন্ড urllib ব্যবহার করার জন্য। Github.com/boto/boto3/issues/313 এফডাব্লুআইডাব্লুতে একটি মুক্ত বৈশিষ্ট্য অনুরোধ রয়েছে , জেএস এসডিকেও এটি রয়েছে: ডকস.ওএস.আমাজোন.com / এডাব্লু জাভা স্ক্রিপ্ট এসডি কে / স্লেস্ট / এডাব্লুএস /… ব্যবহারnew AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
জিম

20

সমস্ত ইসি 2 মেশিনের জন্য, দৃষ্টান্ত-আইডি ফাইলটিতে পাওয়া যাবে:

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

নিম্নলিখিত কমান্ডটি চালিয়ে আপনি উদাহরণ আইডিটি পেতে পারেন:

    ec2metadata --instance-id

2
এটি একটি খুব পরিষ্কার সমাধান, কোনও HTTP অনুরোধের প্রয়োজন নেই।
ইউরি

সর্বোত্তম সম্ভাব্য উত্তর আসলে
Shlublu

1
দুর্দান্ত উত্তর কিন্তু ডকুমেন্টেশনে আমি এর জন্য কোনও রেফারেন্স খুঁজে পাইনি। আমি জিজ্ঞাসা করতে পারি আপনার রেফারেন্স কি? উদ্বেগটি হ'ল আমরা যদি এই কোডটি উত্পাদনে চালাচ্ছি তবে কীভাবে আমরা জানি যে এটি ভবিষ্যতে পরিবর্তিত হবে না?
শায়া আজ্নার

সমস্ত লিনাক্স ইক্য 2 মেশিন, সম্ভবত, তবে অবশ্যই সমস্ত ইসি 2 মেশিন নেই। উইন্ডোজ এ জাতীয় কোন ফাইল নেই। C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.logউদাহরণ আইডির মধ্যে রয়েছে, তবে অন্যান্য জাঙ্কগুলিও রয়েছে।
জেমস

14

এই পোস্টটি দেখুন - নোট করুন যে প্রদত্ত ইউআরএলটিতে আইপি ঠিকানা ধ্রুবক (যা আমাকে প্রথমে বিভ্রান্ত করেছিল), তবে ফিরে আসা ডেটা আপনার উদাহরণের জন্য নির্দিষ্ট।


লিঙ্কটি আমার জন্য 404 তম
সপ্তাহে

নীচে @ ডিইটিডিভের উত্তরটি দেখুন; আমার উত্তরটি বেশ পুরানো এবং দেখে মনে হচ্ছে লিঙ্কটি নামানো হয়েছে।
গ্যারেথ_উবলস 0

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
ডাব্লুটিএফ ছেলেরা ?! আপনি আমার সম্পাদনা চুরি করেছেন! stackoverflow.com/review/suggested-edits/4035074
kixorz

3
দুঃখিত। কীভাবে বলতে হয় তা জানতাম না "এটি একটি ভাল সম্পাদনা I'm আমি ওপি। এটি গ্রহণ করুন"।
কেভিন মেয়ার

10

আরও একটি সমসাময়িক সমাধান।

অ্যামাজন লিনাক্স থেকে ইক 2-মেটাডেটা কমান্ড ইতিমধ্যে ইনস্টল করা আছে।

টার্মিনাল থেকে

ec2-metadata -help

আপনাকে উপলভ্য বিকল্পগুলি দেবে

ec2-metadata -i

ফিরে আসবে

instance-id: yourid

1
ছদ্ম আইপি উপর নির্ভর করে অনেক ভাল
মাইক ডি

ec2-metadataআপনার motd, ডক্স এখানে একত্রিত করুন: coderwall.com/p/hr_9pw/motds-on-amazon-amis
মাইক ডি

2
উবুন্টু ছবিতে কমান্ডটি হ'ল "ইকোমেটাদাতা - ইনস্ট্যান্স-আইডি" এবং কেবলমাত্র আইডির মানটি ফিরে আসবে
আলবার্তো মেগিয়া


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

একটি সি #। নেট ক্লাস আমি HT এপিআই থেকে ইসি 2 মেটাডেটার জন্য লিখেছি। আমি এটি প্রয়োজন হিসাবে কার্যকারিতা দিয়ে এটি নির্মাণ করব। আপনি এটি পছন্দ করে সঙ্গে চালাতে পারেন।

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

সি ++ এর জন্য (সিআরএল ব্যবহার করে):

    #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
আমি এটি ব্যবহার করবেন না। মেটাডেটা পাওয়ার জন্য অনুমোদিত এইচটিটিপি অনুরোধটি ব্যবহার করা আপনার পক্ষে আরও ভাল।
দাইসুক আরমাকি

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 আমি ইসি 2 মেটাডেটা পরিষেবাটিতে অ্যাক্সেস সরবরাহ করতে একটি FUSE ফাইল সিস্টেম লিখেছি: https://bitbucket.org/dgc/ec2mdfs । আমি এটি সমস্ত কাস্টম এএমআইতে চালিত করি; এটি আমাকে এই আইডিয়ামটি ব্যবহার করতে দেয়: বিড়াল / ইসি 2 / মেটা ডেটা / অ্যামি-আইডি



1

যে প্রশ্নে আপনি ব্যবহারকারীকে মূল হিসাবে উল্লেখ করেছেন, একটি বিষয় আমার উল্লেখ করা উচিত হ'ল দৃষ্টান্ত আইডি ব্যবহারকারীর উপর নির্ভর করে না।

জন্য নোড বিকাশকারী,

var meta  = new AWS.MetadataService();

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


0

আপনি আপনার মেটাডেটা পরামিতিগুলি পেরিয়ে যে কোনও মেটাডেটা জিইটি করার জন্য এইচটিটিপি অনুরোধ করতে পারেন।

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

অথবা

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

মেটাডেটা এবং ব্যবহারকারীর ডেটা পাওয়ার জন্য এইচটিটিপি অনুরোধগুলির জন্য আপনাকে বিল দেওয়া হবে না।

আর

আপনি EC2 ইনস্ট্যান্স মেটাডেটা ক্যোয়ারী টুল ব্যবহার করতে পারেন যা ডকুমেন্টেশনে উল্লিখিত হিসাবে চলমান ইসি 2 ইনস্ট্যান্সের মধ্যে থেকে ইসি 2 ইনস্ট্যান্ট মেটাডেটা জিজ্ঞাসা করতে কার্ল ব্যবহার করে একটি সাধারণ বাশ স্ক্রিপ্ট।

সরঞ্জামটি ডাউনলোড করুন:

$ 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

পিএইচপি জন্য বিকল্প পদ্ধতি:

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

এটি উদাহরণটি সম্পর্কে প্রচুর ডেটা সরবরাহ করবে, সমস্ত সুন্দরভাবে একটি অ্যারেতে প্যাক করা হয়েছে, কোনও বাহ্যিক নির্ভরতা নেই। যেহেতু এটি আমার জন্য কখনই ব্যর্থ বা দেরি না হওয়ার অনুরোধ, এটি সেভাবে করা নিরাপদ হওয়া উচিত, অন্যথায় আমি কার্লের জন্য যেতে পারি ()


0

পিএইচপি জন্য:

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

@ জন প্রতি সম্পাদনা করুন


তবে আপনি যদি পিএইচপি-তে কার্ল এবং নেটিভ ফাংশনগুলি ব্যবহার করেন তবে আপনি কেন সেই উদ্দেশ্যে গুজজিএইচটিপি ব্যবহার করবেন?
জন

এটা আমার পছন্দ। আমি অন্যান্য অনেক কিছুর জন্য গুজল ব্যবহার করি, এটি অন্যান্য অনেক প্যাকেজের জন্যও একটি সাধারণ পূর্বশর্ত।
বিচহাউস

= উদাহরণ = json_decode (ফাইল_জেট_কন্টেন্টস (' 169.254.169.254/latest/dynamic/instance-identity/… ); $ id = $ দৃষ্টান্ত [' উদাহরণস্বরূপ ']; আমি জানি গুজল বিস্তৃত, আমি কখনই এটিকে স্পর্শ করি নি such যেমন একটি সহজ টাস্ক আমি হালকা পদ্ধতির প্রদান চাই।
জন


0

ইসি 2 রিসোর্সের সাথে সম্পর্কিত সমস্ত মেটা ডেটা নিম্নলিখিত কমান্ডটি কার্যকর করার সাথে সাথে ইসি ইনস্ট্যান্স নিজেই অ্যাক্সেস করতে পারে:

সিআরএল:

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

আপনার ক্ষেত্রে: " মেটাডেটা-অনুরোধ " হ'ল ইনস্ট্যান্স-আইডি হওয়া উচিত , " এপিআই-সংস্করণ " সাধারণত সর্বশেষতম যা ব্যবহার করা যায়।

অতিরিক্ত দ্রষ্টব্য: আপনি উপরের কমান্ডটি ব্যবহার করে নীচের ইসি 2 বৈশিষ্ট্য সম্পর্কিতও তথ্য পেতে পারেন।

অ্যামি-আইডি, অ্যামি-লঞ্চ-সূচক, অমি-ম্যানিফেস্ট-পাথ, ব্লক-ডিভাইস-ম্যাপিং /, হোস্টনাম, আইএএম /, উদাহরণ-ক্রিয়া, দৃষ্টান্ত-আইডি, উদাহরণ-प्रकार, স্থানীয়-হোস্টনাম, স্থানীয়-আইপিভি 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

এডাব্লুএস ইলাস্টিক বিয়ানস্টাল ইবি ক্লাইম রানের জন্য eb tags --list

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.