aws-cli
Thequery पैरामीटर
खोज…
टिप्पणियों
--query
पैरामीटर को अक्सर अनदेखा किया जाता है, लेकिन यह अविश्वसनीय रूप से शक्तिशाली है। यह JMESPath क्वेरी भाषा का उपयोग सेवा प्रतिक्रियाओं को ठीक से छानने के लिए करता है जो आप चाहते हैं।
आसान तरीके से पढ़ने के लिए लिस्टिंग उदाहरण
उदाहरणों में बहुत सारे मेटाडेटा होते हैं जो कॉल से describe-instances
वापस आ जाते हैं, लेकिन अक्सर आप मूल बातें देखना चाहते हैं। आप आसानी से पठनीय तरीके से संक्षिप्त जानकारी दिखाने के लिए टेबल आउटपुट के साथ संयुक्त JMESPath क्वेरी का उपयोग कर सकते हैं।
aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType}"
-----------------------------------------------------
| DescribeInstances |
+-----------+---------------+----------+------------+
| Id | Name | State | Type |
+-----------+---------------+----------+------------+
| i-abc123 | None | stopped | m3.large |
| i-def456 | amazon linux | stopped | t2.micro |
| i-ghi789 | proxy | running | t2.micro |
+-----------+---------------+----------+------------+
अब उस टुकड़े को टुकड़े करके तोड़ दें। सबसे पहले, हमारे पास --output table
। यह प्रतिक्रिया का एक रंगीन तालिका प्रतिनिधित्व प्रस्तुत करता है। यह आमतौर पर कमांड के साथ सबसे उपयोगी है जो डेटा के छोटे सेट लौटाता है या जहां आपने डेटा को फ़िल्टर किया है।
अब - --query
। यह एक लंबा दिखता है, लेकिन यह वास्तव में काफी सरल है। पहला भाग Reservations[].Instances[]
। यह सभी लौटे उदाहरणों की एक चपटा सूची देता है।
क्वेरी का अगला भाग .{}
से घिरा हुआ है। यह क्या कर रहा है सूची में प्रत्येक आइटम के लिए एक नया json ऑब्जेक्ट बना रहा है जहां प्रत्येक मान स्रोत ऑब्जेक्ट (इस मामले में, एक उदाहरण) पर लागू होने के लिए एक JMESPath क्वेरी है। इनमें से अधिकांश बहुत सरल हैं, लेकिन Name
थोड़ा अधिक जटिल है।
Name
पाने के लिए पूरी क्वेरी Tags[?Key == 'Name'].Value | [0]
। उस का पहला भाग, Tags[?Key == 'Name']
एक टैग के लिए उदाहरण के टैग खोज रहा है जिसका कुंजी Name
। दूसरी छमाही .Value | [0]
उनमें से प्रत्येक टैग के मूल्यों का चयन कर रहा है और फिर सूची से पहला आइटम ले रहा है (इस मामले में, केवल एक कभी होगा)।
वास्तव में आप उस तालिका में जो चाहते हैं वह पूरी तरह से आपके ऊपर है। यदि आप DNS जानकारी जोड़ना चाहते हैं, उदाहरण के लिए, आप आसानी से एक नई कुंजी जोड़ सकते हैं DNS: PublicDnsName
:
aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType, DNS: PublicDnsName}"
--------------------------------------------------------------------------------------------------------
| DescribeInstances |
+--------------------------------------------------+-----------+---------------+----------+------------+
| DNS | Id | Name | State | Type |
+--------------------------------------------------+-----------+---------------+----------+------------+
| | i-abc123 | None | stopped | m3.large |
| | i-def456 | amazon linux | stopped | t2.micro |
| ec2-192-168-1-1.us-west-2.compute.amazonaws.com | i-ghi789 | proxy | running | t2.micro |
+--------------------------------------------------+-----------+---------------+----------+------------+