AWS CLI टूल से AWS खाता नंबर प्राप्त करने का त्वरित तरीका?


99

मेरा खाता संख्या खींचने के लिए एक त्वरित तरीके की तलाश में, मैंने मूल रूप से उपयोग करने के बारे में सोचा था aws iam get-account-authorization-details --max-items 1लेकिन इस तरह से करने के साथ कई मुद्दे हैं। क्या ऐसा करने का कोई तरीका है जो खाते की उत्पत्ति को पार नहीं कर सकता है?

जवाबों:


217

आप निम्नलिखित का उपयोग करके सुरक्षित टोकन सेवा उपकेंद्र से खाता संख्या प्राप्त कर सकते हैं get-caller-identity:

aws sts get-caller-identity --query Account --output text

2
यह सुरक्षा समूहों की तुलना में बहुत अधिक विश्वसनीय होना चाहिए क्योंकि आप डिफ़ॉल्ट सुरक्षा समूह को हटा सकते हैं।
जस्टिन

4
कम आदेश अगर jq को खिलाएंaws sts get-caller-identity|jq -r ".Account"
बीएमडब्ल्यू

एक चर में संग्रहीत करने की आवश्यकता है, लेकिन एक अतिरिक्त लाइन मिल रही थी, यह उसके लिए बेहतर होगाaws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
असीम

मेरे लिए, यह काम करता है जब मैं --query 'Account'भाग निकालता हूं ।
कोलिवेरा

@ बीएमडब्ल्यू आप दुर्भाग्य से हमेशा jqएक सिस्टम में शामिल या स्थापित होने पर भरोसा नहीं कर सकते । कुछ सर्वर सुरक्षा के कारण बाहरी पैकेज स्थापित करते हैं। आप ऐसा कुछ कर सकते हैं, aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'लेकिन यह थोड़ा कष्टप्रद है और आप --query 'Account' --output textउस बिंदु पर भी ऐसा कर सकते हैं ।
एहिमे

33

AWS PowerShell CLI के लिए मेरे संबंधित उत्तर से , आपकी खाता आईडी आपके द्वारा बनाए गए संसाधनों का एक हिस्सा है ... और जो आपके लिए स्वचालित रूप से बनाई गई हैं। कुछ संसाधन आपको एक स्वामी के रूप में भी सूचीबद्ध करेंगे।

डिफ़ॉल्ट सुरक्षा समूह स्वचालित रूप से आपके लिए प्रत्येक क्षेत्र के डिफ़ॉल्ट VPC में आरक्षित सुरक्षा समूह के रूप में बनाया जाता है। से प्रलेखन :

आप एक डिफ़ॉल्ट सुरक्षा समूह को हटा नहीं सकते। यदि आप EC2-Classic डिफ़ॉल्ट सुरक्षा समूह को हटाने का प्रयास करते हैं, तो आपको निम्न त्रुटि मिलेगी: Client.InvalidGroup.Reserved: सुरक्षा समूह 'डिफ़ॉल्ट' आरक्षित है। यदि आप VPC डिफ़ॉल्ट सुरक्षा समूह को हटाने का प्रयास करते हैं, तो आपको निम्न त्रुटि मिलेगी: Client.CannotDelete: निर्दिष्ट समूह: "sg-51530134" नाम: "डिफ़ॉल्ट" उपयोगकर्ता द्वारा हटाया नहीं जा सकता।

यह हमारे खाते आईडी को पुनः प्राप्त करने के लिए एक विश्वसनीय उम्मीदवार बनाता है, जब तक कि आप EC2 क्लासिक में हैं या आपके पास डिफ़ॉल्ट VPC है (यदि आप नहीं करते हैं तो किनारे के मामलों को देखें)।

उदाहरण:

aws ec2 describe-security-groups \
    --group-names 'Default' \
    --query 'SecurityGroups[0].OwnerId' \
    --output text

यह --queryइस अनुरोध के पहले परिणाम के लिए आउटपुट को "स्वामी आईडी" तक फ़िल्टर करने के लिए उपयोग करता है, और फिर --outputअपने खाता आईडी को सादे के रूप में आउटपुट करने के लिए उपयोग करता है:

123456781234

बढ़त के मामले:

(धन्यवाद @kenchew) ध्यान दें कि यदि आपने किसी दिए गए क्षेत्र में अपना डिफ़ॉल्ट VPC हटा दिया है, तो यह सुरक्षा समूह अब मौजूद नहीं है और आपको इनमें से किसी एक वैकल्पिक समाधान का उपयोग करना चाहिए:

आगे की पढाई:


9

यदि आप एक सर्वर पर चल रहे हैं जो एक मान्‍य भूमिका के साथ चल रहा है जिसे आप कॉल नहीं कर सकते aws sts get-caller-identity। इसके अलावा, describe-security-groupsआप हमेशा --group-namesफ़िल्टर का उपयोग नहीं कर सकते (यदि आपके पास डिफ़ॉल्ट VPC नहीं है तो यह काम नहीं करता है), इसलिए पहले सुरक्षा समूह को चुनें। मैंने पाया है कि यह सबसे विश्वसनीय है कि आप किस तरह के प्रमाणीकरण का उपयोग करते हैं या आपके पास किस प्रकार का वीपीसी है।

aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text

इससे सहमत हैं। गेट-कॉलर-पहचान हमेशा उपयोगकर्ता खाते को वापस करने के लिए लगता है, भले ही उन्होंने जो भी भूमिका निभाई हो। यदि आप चाहते हैं कि आप इस तरह की भूमिका का उपयोग करना चाहते हैं, तब भी (२ साल बाद ..)
अनुकूल ge

2

मेरा पसंदीदा तरीका यह है कि aws iam get-user [--profile <profile>]आप इसे काम करने के लिए केवल IAM स्वयं सेवा की भूमिका का उपयोग करें।


3
ध्यान दें कि, यह काम नहीं करता है जब आप
Sanoob
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.