উদাহরণের মধ্যে থেকে উদাহরণের অঞ্চলটি দেখার কোনও উপায় আছে কি?
আমি উদাহরণ আইডি সন্ধানের পদ্ধতির অনুরূপ কিছু সন্ধান করছি ।
http://169.254.169.254/latest/meta-data/placement/availability-zone
এবং শেষ অক্ষরটি সরিয়ে ফেলুন।
উদাহরণের মধ্যে থেকে উদাহরণের অঞ্চলটি দেখার কোনও উপায় আছে কি?
আমি উদাহরণ আইডি সন্ধানের পদ্ধতির অনুরূপ কিছু সন্ধান করছি ।
http://169.254.169.254/latest/meta-data/placement/availability-zone
এবং শেষ অক্ষরটি সরিয়ে ফেলুন।
উত্তর:
সেই ইউআরএল ( http://169.254.169.254/latest/dynamic/instance-identity/docament ) আর কাজ করে না বলে মনে হচ্ছে। আমি এটি ব্যবহার করার চেষ্টা করার সময় একটি 404 পাই। আমার কাছে নিম্নলিখিত কোড রয়েছে যা মনে হয় যদিও এটি কাজ করছে:
EC2_AVAIL_ZONE=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
আশাকরি এটা সাহায্য করবে.
সম্পাদনা:sed
মন্তব্যের ভিত্তিতে উন্নত
ec2-metadata
এই API এর কেবল একটি মোড়ক, তবে মূলত একই জিনিসটি করে।
sed 's/[a-z]$//
এটি অর্জনের আরও একটি উপায় রয়েছে:
REGION=`curl http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}'`
echo $REGION
us-east-1
404 - Not Found
চেষ্টা করছি । GET
us-east-1a
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | awk -F\" '/region/ {print $4}'
আপনি যদি ব্যবহারে ঠিক থাকেন তবে আপনি jq
নিম্নলিখিতগুলি চালাতে পারেন:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq .region -r
আমার ধারণা এটি সবচেয়ে পরিষ্কার উপায় way
ec2-metadata --availability-zone | sed 's/.$//'
ডিবিয়ান ভিত্তিক সিস্টেমগুলির জন্য কমান্ডটি ড্যাশ ছাড়াই is
ec2metadata --availability-zone | sed 's/.$//'
ec2-metadata --availability-zone | sed 's/placement: \(.*\).$/\1/'
ec2-metadata
ডিফল্টরূপে উপলভ্য এমন কোনও জিনিস বলে মনে হচ্ছে না - আপনি কি ইনস্টলেশন নির্দেশাবলী অন্তর্ভুক্ত করতে পারেন?
আপনি যদি নিয়মিত অভিব্যক্তি এড়াতে চান, এখানে পাইথনের সাথে করতে পারেন এমন একটি ওয়ান-লাইনার:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | python -c "import json,sys; print json.loads(sys.stdin.read())['region']"
আপনি ec2- মেটাডেটা ব্যবহার করতে পারেন:
ec2-metadata -z | grep -Po "(us|sa|eu|ap)-(north|south|central)?(east|west)?-[0-9]+"
eu-central-1
গেছেন।
central
আমি যখন আমার উত্তর লিখতে শুরু করি তখন উপস্থিত ছিল না। এটি এখন যুক্ত হয়েছে।
awk '{split($2,arr,"-"); print arr[1]"-"arr[2]}'
এজেড নামের প্রথম দুটি উপাদান রাখবে।
eu-west-1
, eu-west-2
এবং eu-west-3
(এছাড়াও us-west-1
এবং us-west-2
) @OP: শুধু ম্যাচিং '[a-z][a-z]-[a-z]*-[0-9][0-9]*'
নিরাপদ বলে মনে হয় (ক মৌলিক Regex যে, এটি একটি বর্ধিত পুনরায়- সঙ্গে খাটো করা যেতে পারে)। (বর্তমান রেজেক্স ca
অঞ্চল, af
অঞ্চল এবং অঞ্চল ভেঙে যাবে me
)
আমি এখন পর্যন্ত সবচেয়ে সহজ খুঁজে পেয়েছি
curl -s 169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/.$//'
খুব সাধারণ একটি লাইনার
export AVAILABILITY_ZONE=`wget -qO- http://instance-data/latest/meta-data/placement/availability-zone`
export REGION_ID=${AVAILABILITY_ZONE:0:${#AVAILABILITY_ZONE} - 1}
curl: (6) Could not resolve host: instance-data; Name or service not known
ত্রুটি ফেরায় ।
আপনি যদি জেকিউ ইনস্টল করে থাকেন তবে আপনি এটির (সম্ভবত সবচেয়ে "করুণ" পদ্ধতি) এভাবেও যেতে পারেন:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -c -r .region
এটি কেবল কোনও সুন্দর-প্রিন্টিং বা অন্য বিন্যাস ছাড়াই "অঞ্চল" এর কাঁচা মান প্রদান করে। তথ্যসূত্র: এডাব্লুএস ফোরাম
আপনি যদি এডাব্লুএস জাভা এসডিকে ব্যবহার করতে সক্ষম হন তবে এখন এমন একটি পদ্ধতি রয়েছে যা বর্তমান অঞ্চলের নামটি ফিরিয়ে দেবে (যেমন "ইউএস-ইস্ট -1", "ইইউ-ওয়েস্ট -1"):
এটি আমি খুঁজে পাওয়া সবচেয়ে পরিষ্কার সমাধান:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document |sed -n 's/ "region" : "\(.*\)"/\1/p'
যেমন,
export REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document |sed -n 's/ "region" : "\(.*\)"/\1/p')
ধন্যবাদ https://unix.stackexchange.com/a/144330/135640 , ব্যাশ 4.2+ সহ আমরা সহজলভ্যতা অঞ্চল থেকে শেষ চরটি কেটে ফেলতে পারি:
$ region=`curl -s 169.254.169.254/latest/meta-data/placement/availability-zone`
$ region=${region::-1}
$ echo $region
us-east-1
এটি ধরে নেয় AWS অঞ্চলটিতে সংযুক্তিযোগ্যতা অঞ্চলগুলির জন্য একটি একক অক্ষর ব্যবহার করে চলেছে।
region=${region%?}
2 টি লাইনার আপনি যতক্ষণ না আপনার অনুসন্ধান ডোমেন হিসাবে ec2.intern ব্যবহার করছেন ততক্ষণ কাজ করে:
az=$(curl -s http://instance-data/latest/meta-data/placement/availability-zone)
region=${az:0:${#az} - 1}
যে কেউ চাইলে ভাল ওল পাওয়ারশেল দিয়ে এটি করতে চান
$var = (curl http://169.254.169.254/latest/dynamic/instance-identity/document | Select-String-Pattern "Zone" | ConvertFrom-Json | Select-Object -ExpandProperty "region")
echo $var
বা উবুন্টু বা এই সরঞ্জামটিকে প্রয়োজনীয়তা তৈরি করবেন না এবং কেবল করুন:
: "${EBS_VOLUME_AVAILABILITY_ZONE:=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)}"
: ${EBS_VOLUME_REGION:="${EBS_VOLUME_AVAILABILITY_ZONE%%*([![:digit:]])}"}
এটি ইউরোপীয় ইউনিয়ন-কেন্দ্রীয় -১ পাশাপাশি বিভিন্ন লেটার জোনের জন্য কাজ করে। (উপরে সিড উত্তরের জবাব দেওয়ার মতো পর্যাপ্ত প্রতিবেদন আমার কাছে নেই)
ec2-metadata --availability-zone | sed 's/[a-z]$//'
ec2metadata --availability-zone | sed 's/.$//'
(কোনও ড্যাশ ছাড়াই)
আপনি লগ ইন করা ইসি 2 সম্পর্কে তথ্য সন্ধানের জন্য, আপনি ইসি 2-মেটাডেটা সরঞ্জামটি ব্যবহার করতে পারেন।
আপনি এই লিঙ্কটি অনুসরণ করে সরঞ্জামটি ইনস্টল করতে পারেন । সরঞ্জামটি ইনস্টল করার পরে, আপনি চালাতে পারেন
# ec2-metadata -z
অঞ্চলটি সন্ধান করতে।
এই সরঞ্জামগুলি সর্বশেষ (10.10) উবুন্টু এএমআই সহ ইনস্টল হয়,
ec2-metadata -z
অঞ্চলটি নয়, কেবল প্রাপ্যতা অঞ্চল দেখায়।
আপনি যদি জেএস ব্যবহার করে অঞ্চল পেতে চাইছেন তবে এটির কাজ করা উচিত:
meta.request("/latest/meta-data/placement/availability-zone",function(err,data){
if(err)
console.log(err);
else{
console.log(data);
str = data.substring(0, data.length - 1);
AWS.config.update({region:str});
ec2 = new AWS.EC2();
}
});
মেটাডেটা এপিআই কলের প্রতিক্রিয়ায় এডাব্লুএস ডোকস থেকে পাওয়া ম্যাপিংটি ছিল, শেষ চরিত্রটি ঠিক কাজ করে tri
eu-west-1a :eu-west-1
eu-west-1b :eu-west-1
eu-west-1c :eu-west-1
us-east-1a :us-east-1
us-east-1b :us-east-1
us-east-1c :us-east-1
us-east-1d :us-east-1
ap-northeast-1a :ap-northeast-1
ap-northeast-1b :ap-northeast-1
us-west-1a :us-west-1
us-west-1b :us-west-1
us-west-1c :us-west-1
ap-southeast-1a :ap-southeast-1
ap-southeast-1b :ap-southeast-1
ec2metadata
(কোনও ড্যাশ নেই) হ'ল বর্তমান ইস্রায়েল কমান্ডটি আপনাকে আপনার ইসি 2 বাক্স সম্পর্কে সমস্ত অ্যাওস হোস্টিংয়ের তথ্য সরবরাহ করে। এটি সর্বাধিক মার্জিত এবং সুরক্ষিত পদ্ধতির। ( ec2-metadata
এটি পুরানো, আর বৈধ আদেশ নয়))
শুধুমাত্র egrep ব্যবহার করে এমন একটি পদ্ধতি যা অতিরিক্ত কোনও সরঞ্জামাদি ইনস্টল না করে বেশিরভাগ লিনাক্স ইনস্ট্যান্সে কাজ করা উচিত। আমি এটি সমস্ত বর্তমান AWS অঞ্চলের তালিকার বিপরীতে পরীক্ষা করেছি এবং সেগুলি সব মিলছে।
curl http://169.254.169.254/latest/meta-data/placement/availability-zone | egrep -o '(\w)+-(\w)+-[0-9]'
region=$(curl http://169.254.169.254/latest/meta-data/placement/availability-zone | egrep -o '(\w)+-(\w)+-[0-9]')
কিছু পয়েন্ট যেহেতু এই উত্তরের এটা হল সবচেয়ে পোস্ট করা হয়েছে এ ডেস্কটপ AWS যুক্তিসংগত জিনিস করেনি এবং একটি নতুন পথ বাস্তবায়িত: latest/meta-data/placement/region
।
এর অর্থ এই অঞ্চলটি পাওয়া যতটা সহজ হওয়া উচিত
REGION="$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/region)"
আপনি এই কার্ল অনুরোধটি ব্যবহার করে উদাহরণ অঞ্চল পেতে পারেন
$ curl http://169.254.169.254/latest/meta-data/placement/region
us-east-1