pydantic-settingsを拡張して、以下を実現するexampleです
- Google Secret Managerの指定したsecretに格納されたJSONをparseして設定値として利用する
- developmentではローカルの
.envファイルを利用する
- Python 3.14+ (動作確認環境)
- gcloud CLI
- uv
- 依存関係のインストール
uv sync
- gcloudのログイン
gcloud auth login
settings.pyのPROJECT_IDとSECRET_NAME_PREFIXを適切な値に変更- 指定した
PROJECT_IDの Secret Manager で<SECRET_NAME_PREFIX>-stagingと<SECRET_NAME_PREFIX>-productionの2つのsecretを作成し、以下のようなJSONを格納- staging用secretの中身例
{ "A": "A staging", "B": "B staging" } - production用secretの中身例
{ "A": "A prod", "B": "B prod" }
- staging用secretの中身例
ENV 指定なしでは development として扱われます
uv run main.pyENV を production に指定して実行
ENV=production uv run main.py