获取boto3中的当前用户帐户ID

时间:2015-10-25 16:28:02

标签: boto3 botocore

我需要在account-id脚本中获取“当前用户”的boto3。到目前为止,我最好的解决方案是解析当前用户arn

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

但我想知道是否有更“轻量级”的方法。事实上

>>> timeit.timeit("boto3.resource('iam').CurrentUser().arn",
... 'import boto3', number=10)
4.8895583080002325

我实际上在脚本中不需要CurrentUser资源。

2 个答案:

答案 0 :(得分:61)

您可以使用STS API获取帐户ID:

>>> import boto3
>>> boto3.client('sts').get_caller_identity().get('Account')
'012345678901'

答案 1 :(得分:2)

编辑:现在有一个你可以打电话的api,请看mixja的答案。

首先,无法直接从boto3获取帐户ID。没有本地存储的信息可以告诉您,并且没有服务API将其返回到ARN的上下文之外。因此,如果不检查ARN,就无法从boto3获取它。

其次,使用timeit可能会误导boto3botocore,因为首次创建客户端或资源时会有一些预热时间(服务定义即时加载。