環境変数とシークレット
アプリが外部サービスと連携するには、APIキーや接続情報が必要です。これらの値をコードに直接書くのではなく、環境変数として管理することで、安全かつ柔軟に設定を切り替えられます。
このページでは、Keelsonで環境変数とシークレットを設定・管理する方法を説明します。
環境変数の設定方法
Section titled “環境変数の設定方法”Keelsonでは、環境変数を2つの方法で設定できます。
keelson.yaml に記述する
Section titled “keelson.yaml に記述する”keelson.yaml の env フィールドに記述した値は、ビルド時と実行時の両方で利用できます。
slug: my-appruntime: python-slimcommand: "python app.py"env: PORT: "8080" NODE_ENV: "production"秘密にする必要のない設定値(ポート番号、動作モードなど)はここに書きます。
コンソールでシークレットとして設定する
Section titled “コンソールでシークレットとして設定する”APIキーやアクセストークンなどの機密情報は、コンソールからシークレットとして設定します。シークレットは暗号化されてデータベースに保存され、実行時にアプリへ注入されます。
シークレットの値はコンソール上で再表示されません。キー名と最終更新日時のみ確認できます。
シークレットのスコープ
Section titled “シークレットのスコープ”シークレットは、ワークスペース単位とアプリ単位の2つのスコープで設定できます。
ワークスペースシークレット
Section titled “ワークスペースシークレット”コンソールの シークレット ページで設定します。ワークスペース内のすべてのアプリから参照できます。
複数のアプリで共通して使う値(共有APIキーなど)に適しています。
アプリシークレット
Section titled “アプリシークレット”コンソールのアプリ詳細画面で設定します。そのアプリだけに適用されます。
特定のアプリだけ別の値を使いたい場合や、ワークスペースシークレットを上書きしたい場合に使います。
同じキー名の環境変数が複数の場所で設定されている場合、次の順で優先されます。
| 優先度 | 設定場所 | 説明 |
|---|---|---|
| 高 | アプリシークレット | そのアプリだけに適用される |
| 中 | ワークスペースシークレット | ワークスペース全体に適用される |
| 低 | keelson.yaml の env | ソースコードに含まれる静的な値 |
たとえば、ワークスペースシークレットに API_KEY を設定し、特定のアプリだけ別の API_KEY を使いたい場合は、そのアプリにアプリシークレットとして設定すれば上書きできます。
反映タイミング
Section titled “反映タイミング”keelson.yaml の env も同様に、変更後は再デプロイで反映されます。
ビルド時とランタイムの違い
Section titled “ビルド時とランタイムの違い”| タイミング | keelson.yaml の env | シークレット |
|---|---|---|
| ビルド時 | 利用できる | 利用できない |
| 実行時 | 利用できる | 利用できる |
フロントエンドのビルドで環境変数が必要な場合(例: VITE_API_URL)は、keelson.yaml の env に記述してください。シークレットはビルドプロセスには渡されません。
アプリからの参照方法
Section titled “アプリからの参照方法”シークレットと keelson.yaml の env は、どちらも通常の環境変数としてアプリから参照できます。
Python:
import osapi_key = os.environ["API_KEY"]Node.js:
const apiKey = process.env.API_KEY;Go:
apiKey := os.Getenv("API_KEY")シークレットとして管理すべき値
Section titled “シークレットとして管理すべき値”以下のような値は、keelson.yaml ではなくコンソールのシークレットとして設定してください。
- APIキー・アクセストークン
- OAuth クライアントシークレット
- データベース接続文字列
- 外部サービスの認証情報
- Webhook のシークレットキー
システムが自動設定する環境変数
Section titled “システムが自動設定する環境変数”Keelsonは、以下の環境変数を自動的にアプリに設定します。ユーザーが同じキー名で値を設定する必要はありません。
| 変数名 | 内容 |
|---|---|
TZ | タイムゾーン |
KEELSON_APP_ID | アプリの識別子 |
KEELSON_TENANT_ID | ワークスペースの識別子 |
- デプロイする — デプロイの全体フロー
- keelson.yaml リファレンス —
envフィールドの詳細仕様 - アプリURL — デプロイ後のURLの仕組み