botocoreを使ったAWS設定情報の取得
概要
AWSのcredentialsファイルやconfigファイルの設定情報をbotocoreを使って取得する方法を説明します。また、それらの設定ファイルには独自の項目を追加できます。
AWS設定情報の取得
AWSのcredentials, configが次のような内容だったとします。
[default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[default] region = ap-northeast-1 [profile prodaccess] region = ap-northeast-1 role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole source_profile = default
botocoreを使って設定情報を簡単に取得することができます。get_scoped_config
は関数ですが、full_config
は属性であることに注意してください。
from botocore.session import Session # prodaccessプロファイルのセッションを作成 # (profile引数を省略するとdefaultプロファイルを使用) session = Session(profile='prodaccess') # 指定したプロファイルの設定を取得 scoped_config = session.get_scoped_config() # すべてのプロファイルの設定を取得 full_config = session.full_config
scoped_config
は次のような辞書オブジェクトになっています。
{ "region": "ap-northeast-1", "role_arn": "arn:aws:iam::123456789012:role/ProductionAccessRole", "source_profile": "default" }
full_config
は次のような辞書オブジェクトになっています。指定したプロファイルの設定だけではなく、すべてのプロファイルの設定が取得できています。
{ "profiles": { "default": { "region": "ap-northeast-1", "aws_access_key_id": "AKIAIOSFODNN7EXAMPLE", "aws_secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" }, "prodaccess": { "region": "ap-northeast-1", "role_arn": "arn:aws:iam::123456789012:role/ProductionAccessRole", "source_profile": "default" } } }
独自項目の追加
credentials, configファイルには独自の項目を設定できます。
[profile custom] region = ap-northeast-1 role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole source_profile = default my_custom_parameter = custom value
独自に設定した項目も同じように取得できます。
{ "region": "ap-northeast-1", "role_arn": "arn:aws:iam::123456789012:role/ProductionAccessRole", "source_profile": "default", "my_custom_parameter": "custom value" }
AWSを利用した独自ツールの設定情報として使うとよいかもしれません。
もともとconfigファイルに設定できる既存の項目については次のページに記載されています。独自の項目を設定する場合には、既存の項目と同名にならないように気をつけたほうがよいでしょう。
AWS CLI Configuration Variables - AWS CLI Command Reference https://docs.aws.amazon.com/cli/latest/topic/config-vars.html