この記事は公開されてから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"
}
過去ににしざわがブログで紹介しております。
リージョン情報を取得
リージョン情報はセッション情報経由で取得します。
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'