speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

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