encore-secret について
Encore アプリケーションでシークレットを宣言、読み取り、管理する方法を紹介します。機密設定を扱う開発者向けに、環境ごとの値とローカルでの上書きを説明します。
主な機能
- 01パッケージレベルでのシークレット宣言
- 02関数呼び出しによる値の取得
- 03環境タイプごとのシークレット設定
- 04ローカルファイルによる値の上書き
活用シーン
- 01API リクエスト用トークンの設定
- 02Webhook 署名シークレットの保存
- 03開発環境と本番環境で異なるシークレットを使用
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ encoredev/ skills --skill encore-secretインストール後、Claude Code で/encore-secretを入力して読み込まれたか確認します。
詳細
Encore Secrets
手順
シークレットは、Encore によって管理される暗号化された環境スコープの値です。パッケージレベルで secret(name) を呼び出して宣言し、返された関数を呼び出して読み取ります。
import { secret } from "encore.dev/config";
// Package-level declaration
const stripeKey = secret("StripeSecretKey");
// Read inside a handler
async function chargeCustomer() {
const key = stripeKey(); // <-- function call returns the value
const stripe = new Stripe(key);
// ...
}
シークレット名はアプリケーション全体でグローバルに一意です(同じ名前はどこでも同じ値に解決されます)。
値の設定
# Set per environment type
encore secret set --type prod StripeSecretKey
encore secret set --type dev StripeSecretKey
encore secret set --type local StripeSecretKey
環境タイプ: production(エイリアス prod)、development(エイリアス dev)、preview(エイリアス pr)、local。
ローカル上書き
encore secret set を経由せずにローカル開発を行うには、リポジトリのルートに .secrets.local.cue ファイルを作成します(gitignore に追加してください):
StripeSecretKey: "sk_test_local_..."
GitHubAPIToken: "ghp_local_..."
一般的な使用パターン
// HTTP headers
const githubToken = secret("GitHubAPIToken");
const resp = await fetch("https://api.github.com/user", {
headers: { Authorization: `token ${githubToken()}` },
});
// Webhook signature verification
const stripeWebhookSecret = secret("StripeWebhookSecret");
stripe.webhooks.constructEvent(rawBody, sig, stripeWebhookSecret());
// Connecting to a third-party SDK
const openaiKey = secret("OpenAIKey");
const openai = new OpenAI({ apiKey: openaiKey() });
ガイドライン
secret(...)は常にパッケージレベルで宣言し、関数の内部では決して宣言しないでください。- 読み取りは関数呼び出しで行います:
stripeKey()であり、stripeKeyではありません。 encore secret set --type <env>を使用して、環境ごとに異なる値を設定してください。- シークレットの値を決してコミットしないでください。ローカル上書きには
.secrets.local.cueを使用し、gitignore に追加してください。 - 特に webhook 署名シークレットについては、
encore-webhookスキルも参照してください。
コメント
Markdown 対応