0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.streamlit/secrets.tomlの役割について

Posted at

はじめに

Streamlitアプリケーションで機密情報を安全に管理するための設定ファイルについて解説します。

概要

.streamlit/secrets.tomlは、APIキーやデータベース接続情報などの機密情報を安全に管理するための専用設定ファイルです。

主な用途

このファイルでは、以下のような機密情報を保存します。

  • Google AI Studio APIキー
  • データベース接続情報
  • その他の認証情報

ローカル開発での使用方法

ファイル配置

プロジェクトルート直下に.streamlitディレクトリを作成し、その中に配置します。

プロジェクトルート/
├── .streamlit/
│   └── secrets.toml  # ここに配置
├── app.py
└── ...

記述例

TOML形式で記述します。

# .streamlit/secrets.toml
GOOGLE_API_KEY = "your-actual-api-key-here"

アプリケーションでの読み込み

st.secretsを使って簡単に読み込めます。

import streamlit as st

# secrets.tomlから読み込み
api_key = st.secrets["GOOGLE_API_KEY"]

Streamlit Community Cloudでの使用

ローカルとデプロイ環境での使い分け

ローカル開発時:

  • .streamlit/secrets.tomlに記述
  • Gitにはコミットしない(.gitignoreで除外済み)

Streamlit Community Cloud:

  • Web UIの「Secrets」セクションに同じ内容を入力
  • ファイルをアップロードする必要はありません

.envファイルとの違い

両者の主な違いを整理しましょう。

項目 .env .streamlit/secrets.toml
対象 汎用的な環境変数 Streamlit専用
読み込み方法 os.getenv() st.secrets[]
Streamlit Cloud 手動で設定が必要 専用UIで簡単に設定
フォーマット KEY=value TOML形式

両方の方法に対応した実装

このプロジェクトでは、柔軟性を持たせるため両方の方法に対応しています。

import os
import streamlit as st

# まずst.secretsを試し、なければ環境変数から読み込む
def get_api_key():
    try:
        return st.secrets["GOOGLE_API_KEY"]
    except:
        return os.getenv("GOOGLE_API_KEY")

この実装のメリット

  • ローカル開発: .envまたは.streamlit/secrets.tomlどちらでも利用可能
  • デプロイ環境: Streamlit Cloudの「Secrets」設定を使用

セキュリティ上の注意点

絶対にGitにコミットしない

  • .gitignoreに既に記載済みですが、誤ってコミットしないよう注意してください
  • 特に公開リポジトリでは細心の注意が必要です

公開リポジトリでの対策

  • README.mdにはサンプル設定のみ記載
  • 実際のAPIキーは絶対に含めない

設定手順

実際に設定する流れを見ていきましょう。

ステップ1: ローカルファイル作成

mkdir -p .streamlit
touch .streamlit/secrets.toml

ステップ2: APIキーを記述

GOOGLE_API_KEY = "AIzaSy..."

ステップ3: Streamlit Community Cloudで設定

  1. アプリのダッシュボードを開く
  2. 「Settings」→「Secrets」を選択
  3. 同じ内容をコピー&ペースト

まとめ

.streamlit/secrets.tomlは、開発環境とデプロイ環境の両方で安全にAPIキーを管理するために重要な役割を果たします。特にStreamlit Community Cloudへのデプロイ時には、専用UIで簡単に機密情報を設定できる点が大きなメリットですね。

セキュリティを保ちながら、開発とデプロイの両方で柔軟に対応できる仕組みを理解しておくことが重要です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?