2016-04-19 8 views
10

से AWS खाता आईडी प्राप्त करें मेरे पास AWS_ACCESS_KEY_ID और AWS_SECRET_KEY है। ये सक्रिय प्रमाण-पत्र हैं, इसलिए वे एक सक्रिय उपयोगकर्ता से संबंधित हैं, जो एक एडब्ल्यूएस खाते से संबंधित हैं। कैसे, Boto3 का उपयोग करके, क्या मुझे इस एडब्ल्यूएस खाते की आईडी मिलती है?बोटो

+0

कुछ तरीकों यहाँ उल्लेख https://gist.github.com/gene1wood/6d4974b7503336d642c9 – Montaro

+0

की [boto3 में मौजूदा उपयोगकर्ता खाते-आईडी हो रही] संभावित डुप्लिकेट (https://stackoverflow.com/questions/33332050/getting-the-current-user-account-id-in-boto3) –

+0

@MarnixKlooster यह प्रश्न Google पर पहली बार "बोटो खाता आईडी" खोज के लिए आता है। शायद दूसरे प्रश्न को डुप्लिकेट के रूप में चिह्नित करें। – Zags

उत्तर

18

ACCOUNTID गेट-कॉलर-पहचान एसटीएस फ़ंक्शन से पकड़ा जा सकता है। यह एक "खाता" क्षेत्र देता है:

client = boto3.client("sts", aws_access_key_id=access_key, aws_secret_access_key=secret_key) 
account_id = client.get_caller_identity()["Account"] 
1

निम्नलिखित समारोह अपने कुंजी युग्म के लिए आप खाता आईडी मिल जाएगा:

import boto3 

def get_aws_account_id(access_key, secret_key): 
    sts = boto3.client(
     "sts", aws_access_key_id=access_key, aws_secret_access_key=secret_key, 
    ) 
    user_arn = sts.get_caller_identity()["Arn"] 
    return user_arn.split(":")[4] 

यह काम करता है क्योंकि उपयोगकर्ता ARN प्रारूप "अर्न: एडब्ल्यूएस: iam :: ACCOUNT_ID: उपयोगकर्ता/उपयोगकर्ता नाम" की है। कोलन द्वारा विभाजित, खाता आईडी चौथी वस्तु (0-अनुक्रमित) है।

2

इस तरह काम करेगा:

import boto3 

ACCESS_KEY = 'FOO' 
SECRET_KEY = 'BAR' 

iam = boto3.resource('iam', 
    aws_access_key_id=ACCESS_KEY, 
    aws_secret_access_key=SECRET_KEY, 
) 
account_id = iam.CurrentUser().arn.split(':')[4] 

print account_id 

आप EC2 IAM भूमिकाओं का उपयोग करते हैं, तो आप उपयोग कर सकते/गुप्त कुंजी सामान के सभी को छोड़ सकते हैं और कोड बस हो जाता है:

iam = boto3.resource('iam') 
account_id = iam.CurrentUser().arn.split(':')[4] 
संबंधित मुद्दे