2016-04-19 28 views
10

私はAWS_ACCESS_KEY_IDとAWS_SECRET_KEYを持っています。これらはアクティブな資格情報であるため、AWSアカウントに属するアクティブなユーザーに属します。どのようにBoto3を使用すると、このAWSアカウントのIDを見つけることができますか?BotoからAWSアカウントIDを取得

+0

ここで言及したいくつかの方法https://gist.github.com/gene1wood/6d4974b7503336d642c9 [boto3で現在のユーザーアカウントIDを取得]の – Montaro

+0

可能な複製(HTTPS:/ /stackoverflow.com/questions/33332050/getting-the-current-user-account-id-in-boto3) –

+0

@MarnixKloosterこの質問はGoogleの検索「BotoアカウントID」に最初に表示されます。たぶん、他の質問に重複していると印をつけてください。 – Zags

答えて

18

アカウントID get-caller-identity sts関数から取得できます。これは、「アカウント」フィールドを返します。

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

次の関数は、あなたの鍵のペアのためにあなたのアカウントIDを取得します:

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はフォーマット "ARN:AWS:IAM :: ACCOUNT_ID:ユーザー/ USERNAME" であるので、これは動作します。コロンで分割すると、アカウントIDは4番目の項目です(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] 
関連する問題