我需要在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
资源。
答案 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
可能会误导boto3
或botocore
,因为首次创建客户端或资源时会有一些预热时间(服务定义即时加载。