我有一个AWS_ACCESS_KEY_ID和一个AWS_SECRET_KEY。这些是活动凭据,因此它们属于属于AWS账户的活动用户。如何使用Boto3找到此AWS账户的ID?
答案 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索引)。