从Boto获取AWS账户ID

时间:2016-04-19 05:38:00

标签: python amazon-web-services boto3

我有一个AWS_ACCESS_KEY_ID和一个AWS_SECRET_KEY。这些是活动凭据,因此它们属于属于AWS账户的活动用户。如何使用Boto3找到此AWS账户的ID?

3 个答案:

答案 0 :(得分:30)

可以从get-caller-identity sts函数中获取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 :(得分:1)

这样的事情会起作用:

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]

答案 2 :(得分:0)

以下功能将为您提供密钥对的帐户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:user / USERNAME”。按冒号拆分,帐户ID是第4项(0索引)。