2013-08-20 5 views
10

मैं route53 में एक उदाहरण रजिस्टर करने के लिए स्वचालित रूप से उदाहरण बन जाता है, नमक और इस लेख का उपयोग कर एक साधन स्थापित करने के लिए कोशिश कर रहा हूँ: http://cantina.co/2012/01/25/automated-dns-for-aws-instances-using-route-53/एडब्ल्यूएस में इंस्टेंस से आवृत्ति नाम कैसे प्राप्त करें?

लेख का उपयोग करता ec2-metadata उदाहरण-आईडी और और होस्ट नाम मिलता है। मैं सोच रहा हूं कि उदाहरण के भीतर बैश का उपयोग करके, उदाहरण के नाम को पाने के लिए कोई तरीका है या नहीं। ec2-metadata केवल इंस्टेंस-आईडी दिखाता है। अग्रिम में धन्यवाद।

उत्तर

0

यह सुनिश्चित नहीं है कि यह बैश के साथ कैसा दिखता है, लेकिन यदि आप इंस्टेंस आईडी प्राप्त कर सकते हैं तो आप उदाहरण से स्वयं एक एसडीके का उपयोग कर सकते हैं। आप ec2 सहारा पूछेंगे और ec2 इंस्टेंस आईडी में पास करेंगे। गहरे लाल रंग का एसडीके होगा देखने का उपयोग करते हुए ऐसा लगता है जैसे:

i = ec2.instances["i-12345678"] 
puts i.dns_name 
10

सबसे पहले, Amazon EC2उदाहरण मेटाडाटा सेवा भी प्रदान करता है काफी कुछ अन्य नामinstance-id के अलावा, इन हो सकता है अगर आप के लिए क्या देख रहे - देखना Instance Metadata Categories:

  • hostname - उदाहरण के निजी होस्ट नाम। ऐसे मामलों में जहां एकाधिक नेटवर्क इंटरफेस मौजूद हैं, यह eth0 डिवाइस को संदर्भित करता है (डिवाइस जिसके लिए डिवाइस संख्या 0 है)।
  • local-hostname - उदाहरण का निजी DNS होस्टनाम। ऐसे मामलों में जहां एकाधिक नेटवर्क इंटरफेस मौजूद हैं, यह eth0 डिवाइस को संदर्भित करता है (डिवाइस जिसके लिए डिवाइस संख्या 0 है)।
  • public-hostname - उदाहरण का सार्वजनिक DNS। यदि उदाहरण वीपीसी में है, तो यह श्रेणी केवल तभी वापस आती है जब enableDnsHostnames विशेषता सत्य पर सेट हो।

आप देख रहे हैं के लिए नामAWS Management Console हालांकि में उजागर रूप में, आप वास्तव में Tools for Amazon Web Services से एक का उपयोग इसे पुनः प्राप्त करने का सहारा करने की आवश्यकता होगी - कि नाम तथ्य सिर्फ एक नियमित रूप से टैग में है कुंजी नाम (Tagging Your Amazon EC2 Resources देखें), जो कि स्पष्ट उद्देश्य के लिए अधिकांश एडब्ल्यूएस सेवाओं में उपयोग किया जाता है।

यहाँ कैसे (छोड़ने के क्षेत्र और साख) उदाहरण के लिए AWS Command Line Interface साथ इसे पाने के लिए है:

aws ec2 describe-tags \ 
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \ 
--query Tags[].Value --output text 
  • क्या संभव है के साथ --query विकल्प में बनाया से अधिक उन्नत CLI JSON उत्पादन प्रसंस्करण के लिए, आप कर सकते थे jq (का हल्का और लचीला कमांड लाइन JSON प्रोसेसर) का सहारा लें।

  • Overthink's answer अब विरासत Amazon EC2 API Tools के आधार पर एक उदाहरण देता है (कृपया टिप्पणी नोट है, जो सही ढंग से बताते हैं कि आप आजकल अलग ढंग से पहचान के साथ सौदा करना चाहते हैं, Tell the CLI Tools Who You Are और IAM Roles for EC2 instances जानकारी के लिए देखें)।

+3

: किसी अन्य उपयोगकर्ता के क्षेत्र/कुंजी का उपयोग करने की आवश्यकता (एडब्ल्यूएस कंसोल की IAM डैशबोर्ड पर पाया जा सकता), तो आप उन्हें उस फ़ाइल में एक और अनुभाग के लिए इस तरह जोड़ सकते हैं, उदाहरण के [USER2] के लिए और प्रयोग कमान में उदाहरण के नाम को सीधे आउटपुट करने के लिए --output के साथ --query कमांड लाइन पैरामीटर का भी उपयोग कर सकते हैं, उदाहरण के लिए: 'aws ec2 वर्णन-टैग - फ़िल्टर नाम = संसाधन-आईडी, मान = i-abcd1234 नाम = कुंजी, मान = नाम --query टैग []। वैल्यू - आउटपुट टेक्स्ट ' –

+1

@ करलोसपी - मैंने आपके द्वारा प्रस्तावित वास्तव में आसान दृष्टिकोण के साथ उत्तर अपडेट किया है ('--query' विकल्प एडब्ल्यूएस सीएलआई में उपलब्ध नहीं था जाओ जाओ), इस बात को इंगित करने के लिए धन्यवाद! –

-2

पाया कि मेरी कॉन्फ़िगरेशन में काम नहीं कर रहे टैग-टैग, 'अनधिकृत ऑपरेशन' त्रुटि के साथ विफल रहे।इस वर्णन-उदाहरणों के साथ काम मिल गया: ~/.aws/config:

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 

कमान कॉन्फ़िग फ़ाइल के [डिफ़ॉल्ट] अनुभाग वर्तमान उपयोगकर्ता के एडब्ल्यूएस से क्षेत्र और पहुंच कुंजियों का उपयोग। आप

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 
संबंधित मुद्दे