
AWS खाते में बनाए गए संसाधनों का पता लगाएँ।
यह एक उपकरण है जो किसी खाते में बनाए गए सभी AWS संसाधनों को खोजने का प्रयास करता है। AWS के कई उत्पाद (अर्थात सेवाएँ) हैं, जिनमें लगातार नए जोड़े जा रहे हैं और मौजूदा को नई सुविधाओं के साथ विस्तारित किया जा रहा है। यह पारिस्थितिकी तंत्र उपयोगकर्ताओं को एक अनुकूलित क्लाउड अनुभव बनाने के लिए कई अलग-अलग सेवाओं को जोड़ने की अनुमति देता है। पैमाने पर तुरंत सेवाएँ शुरू करने की क्षमता के साथ प्रबंधनीयता लागत आती है। उपयोग किए जा रहे संसाधनों के लिए AWS खाते का ऑडिट करना जल्दी ही कठिन हो सकता है। यह न केवल बिलिंग उद्देश्यों के लिए महत्वपूर्ण है, बल्कि सुरक्षा के लिए भी। निष्क्रिय संसाधन और अज्ञात संसाधन सुरक्षा कॉन्फ़िगरेशन कमजोरियों के प्रति अधिक संवेदनशील होते हैं। इसके अतिरिक्त, अप्रत्याशित निर्भरताओं वाले संसाधन उपलब्धता, पहुँच नियंत्रण और प्राधिकरण संबंधी समस्याएँ उत्पन्न करते हैं।
यह AWS सेवाओं और उन क्षेत्रों को खोजने के लिए botocore का उपयोग करता है जिनमें वे चलती हैं। इसका उपयोग सेवा APIs को कॉल करने में भी किया जाता है। जिन APIs को कॉल किया जाता है वे वे हैं जिन्हें संसाधनों को सूचीबद्ध या वर्णित करना चाहिए। परिणामों को stdout पर JSON प्रारूप में मुद्रित किया जा सकता है। उन्हें कई फ़ाइलों में भी लिखा जा सकता है:
पहले, Python2.7 स्थापित करें।
प्रगति प्रदर्शित करने के लिए एक छोटा GUI है जो मानक Python Tkinter मॉड्यूल का उपयोग करता है। हालाँकि, Tcl/Tk के लिए अंतर्निहित नेटिव लाइब्रेरी कोड को स्थापित करने के लिए अतिरिक्त चरणों की आवश्यकता हो सकती है। फिर,
pip install -r requirements.txt
Tkinter/Tcl/Tk स्थापित करने के लिए Python इंस्टॉलर का उपयोग करें।
अपने OS पैकेज मैनेजर का उपयोग करें:
sudo apt-get install python-tk
आप स्क्रिप्ट को बिना किसी पैरामीटर के चला सकते हैं। यह आपके AWS क्रेडेंशियल्स को आपके शेल वातावरण, इंस्टेंस मेटाडेटा, कॉन्फ़िगरेशन फ़ाइल, फिर क्रेडेंशियल्स फ़ाइल में खोजेगा। आप कमांडलाइन पर अपने क्रेडेंशियल्स वाली एक CSV फ़ाइल भी प्रदान कर सकते हैं। आपको एक ऐसे उपयोगकर्ता की आवश्यकता होगी जिसके पास AWS प्रबंधित नीति ViewOnlyAccess जैसी अनुमतियाँ हों। यदि आप भाग्यशाली महसूस कर रहे हैं, तो आप टूल के आउटपुट को jq जैसे JSON पार्सर में पाइप कर सकते हैं।
यदि प्रत्येक क्षेत्र में प्रत्येक सेवा के लिए किन संचालनों को कॉल करना है, इस पर कोई प्रतिबंध नहीं लगाया गया है, तो टूल को पूरा होने में लंबा समय (दर्जनों मिनट) लग सकता है। सेवा और क्षेत्र द्वारा फ़िल्टरिंग कमांडलाइन पर की जा सकती है जबकि सेवा संचालन द्वारा फ़िल्टरिंग कॉन्फ़िगरेशन फ़ाइल के माध्यम से की जा सकती है। एक पूर्व-कॉन्फ़िगर फ़ाइल बनाई गई थी और रिपॉजिटरी में चेक इन की गई थी। इसका उपयोग डिफ़ॉल्ट रूप से किया जाएगा।
कमांडलाइन आउटपुट के अलावा, आप परिणामों को स्थानीय रूप से React सिंगल-पेज ऐप में देख सकते हैं। किसी वेब सर्वर की आवश्यकता नहीं है। बस HTML फ़ाइल को ब्राउज़र में खोलें और संकेत मिलने पर उत्पन्न JSON फ़ाइल का चयन करें।
ऐप डेटा को पदानुक्रमित, पेड़-जैसी संरचना में प्रदर्शित करने के लिए jsTree का उपयोग करता है। एक खोज सुविधा भी है।
नोट: APIs को कॉल करते समय, जो अपवाद उठाते हैं, उनका क्षेत्र की परवाह किए बिना दोबारा उपयोग नहीं किया जाता है। अपवादों के ज्ञात कारण हैं:
$ python aws_inventory.py
$ python aws_inventory.py --list-svcs
acm
apigateway
application-autoscaling
appstream
autoscaling
batch
budgets
clouddirectory
cloudformation
cloudfront
.
.
.
$ python aws_inventory.py --list-operations
[shield]
DescribeSubscription
ListAttacks
ListProtections
[datapipeline]
ListPipelines
[firehose]
ListDeliveryStreams
.
.
.
[glacier]
# NONE
[stepfunctions]
ListActivities
ListStateMachines
Total operations to invoke: 4045
$ python aws_inventory.py --debug --dry-run

