从 Boto 获取 AWS 账户 ID

Get AWS Account ID from Boto

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

感谢 改进我的初始答案。

这将为您的密钥对获取帐户 ID:

import boto3

sts = boto3.client(
    "sts", aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY,
)
account_id = sts.get_caller_identity()["Account"]

如果您 运行 在具有 IAM role-based permissions or any of boto3's other credential options 的 EC2 实例上,您可以更轻松地做到这一点:

import boto3

account_id = boto3.client("sts").get_caller_identity()["Account"]

像这样的东西会起作用:

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 角色,您可以省略所有 access/secret 关键内容,代码变得简单:

iam = boto3.resource('iam')
account_id = iam.CurrentUser().arn.split(':')[4]

可以从 get-caller-identity sts 函数中获取 AccountID。此 returns 一个 "Account" 字段:

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