概要
セクション付きの設定ファイルから設定情報を取得する Pythonプログラムを作成してみました。標準ライブラリの configparser を使用しています。
実行環境
macOS Monterey 12.3.1
python 3.8.12
設定ファイルの準備
本来なら、「.ini」ファイルだと思いますが、手っ取り早く実施するために「~/.aws/credentials」ファイルを利用します。
.aws/credentials
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = DEPAP77776666KLxvbLA75075OtttJUUU+ch5pr7
[billing]
aws_access_key_id = BBBBBBBBBBBBBBBBBBBB
aws_secret_access_key = BIPAP55554444KLxvbLA53053OtttJUUU+ch3pr5
[iapp]
aws_access_key_id = CCCCCCCCCCCCCCCCCCCC
aws_secret_access_key = IAPAP33332222KLxvbLA31031OtttJUUU+ch1pr3
実行プログラム
GetConfigParser.py
import os
import sys
# 設定元ファイルの確認表示
with open("/Users/myuser/.aws/credentials", "r") as fr:
out = os.path.expandvars(fr.read())
sys.stdout.write(out)
################ ここからが本題、、、、、
import configparser
# 設定ファイルを読み込む準備
config_ini = configparser.ConfigParser()
config_ini.read('/Users/myuser/.aws/credentials', encoding='utf-8')
# セクションを指定しての読み込み
config = config_ini['iapp']
# 変数の読み込み
iam_id = config.get('aws_access_key_id')
iam_key = config.get('aws_secret_access_key')
# ターミナル出力
print('\nid = ', iam_id, ' key = ', iam_key, "\n")
プログラムの実行
## 設定情報の取得
$ python GetConfigParser.py
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = DEPAP77776666KLxvbLA75075OtttJUUU+ch5pr7
[billing]
aws_access_key_id = BBBBBBBBBBBBBBBBBBBB
aws_secret_access_key = BIPAP55554444KLxvbLA53053OtttJUUU+ch3pr5
[iapp]
aws_access_key_id = CCCCCCCCCCCCCCCCCCCC
aws_secret_access_key = IAPAP33332222KLxvbLA31031OtttJUUU+ch1pr3
id = CCCCCCCCCCCCCCCCCCCC key = IAPAP33332222KLxvbLA31031OtttJUUU+ch1pr3
まとめ
環境変数を利用しない方法もありですね。
参考記事
以下の記事を参考にさせていただきました。感謝申し上げます。
Pythonで設定ファイルを読み込む処理をラップしてクラスとして扱うと便利