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
リソースは実際には必要ありません。
STS APIを使用して、アカウントIDを取得できます。
>>> import boto3
>>> boto3.client('sts').get_caller_identity().get('Account')
'012345678901'
編集:呼び出すことができるapiがあります。mixjaの答えを参照してください。
まず、boto3
からアカウントIDを直接取得する方法はありません。それを伝えることができるローカルに保存された情報はなく、ARNのコンテキスト外でそれを返すサービスAPIもありません。そのため、ARNを検査せずにboto3
から取得する方法はありません。
第二に、timeit
を使用することは、boto3
またはbotocore
と非常に誤解を招く可能性があります。定義はその場でロードされます)。