【小ネタ】AWS Python SDK(boto3)からアカウントID・リージョン情報を取得する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSのリクエスト先のアカウントID・リージョン情報を取得する必要がありました。 調査結果を共有します。

アカウントIDを取得

STS の get-caller-identity API を利用します。

In [2]: import boto3

In [3]: boto3.client('sts').get_caller_identity()
Out[3]:
{u'Account': '123456789012',
 u'Arn': 'arn:aws:iam::123456789012:user/dummy',
 'ResponseMetadata': {'HTTPHeaders': {'content-length': '412',
   'content-type': 'text/xml',
   'date': 'Thu, 08 Feb 2018 18:15:54 GMT',
   'x-amzn-requestid': '1a93dda2-0cfc-11e8-82bf-19ff9093cb87'},
  'HTTPStatusCode': 200,
  'RequestId': '1a93dda2-0cfc-11e8-82bf-19ff9093cb87',
  'RetryAttempts': 0},
 u'UserId': 'DUMMY'}

In [4]: boto3.client('sts').get_caller_identity().get('Account')
Out[4]: '123456789012'

この API は AWS CLI からも利用可能です。

$ aws sts get-caller-identity
{
    "Account": "123456789012",
    "UserId": "DUMMY:i-DUMMY",
    "Arn": "arn:aws:sts::123456789012:assumed-role/dummy-ec2/i-DUMMY"
}

過去ににしざわがブログで紹介しております。

【小ネタ】AWS CLIでAWS Account IDが取れるようになりました!

リージョン情報を取得

リージョン情報はセッション情報経由で取得します。

In [5]: boto3.session.Session()
Out[5]: Session(region_name='ap-northeast-1')

In [6]: boto3.session.Session().region_name
Out[6]: 'ap-northeast-1'

参考