メインコンテンツまでスキップ

シークレット

外部APIのキーやトークンなどの秘匿情報は、シークレットとして管理画面から登録します。 wrangler.jsoncやコード、ZIPには含めないでください。

コードから使う​

シークレットは、他のバインディングと同じくenvから参照します。

app.post('/api/notify', async (ctx) => {
const response = await fetch('https://api.example.com/v1/messages', {
method: 'POST',
headers: { Authorization: `Bearer ${ctx.env.EXAMPLE_API_KEY}` },
body: await ctx.req.text(),
})
return ctx.body(null, response.ok ? 204 : 502)
})

wrangler typesはwrangler.jsoncから型を生成するため、シークレットの型は生成されません。 Envの型に手動で追加してください。

src/env.d.ts
declare global {
interface Env {
EXAMPLE_API_KEY: string
}
}

export {}

登録と更新​

シークレットは、組織管理者が管理画面で登録します。 操作はワーカープラグイン管理を参照してください。

  • ワーカープラグインを登録した後に設定できます。登録前は設定できません。
  • 値は登録後に表示できません。変更する場合は、同じ名前で値を更新します。
  • 追加、更新、削除はすぐに反映されます。ZIPを登録し直す必要はありません。
  • ZIPを登録し直しても、シークレットは残ります。
  • ワーカープラグインを削除すると、シークレットもすべて削除されます。

名前の規則​

  • 英大文字、数字、_を使えます。先頭に数字は使えません。
  • PLUGIN_で始まる名前はプラットフォームが予約しています。
  • wrangler.jsoncで宣言したバインディング(Durable Objects、R2)と同じ名前は使えません。
備考

シークレットを登録した後で、同じ名前のDurable Objectsのバインディングを宣言したZIPを登録すると、そのシークレットは読めなくなります。 管理画面でも更新、削除ができなくなるため、バインディングの名前を変えてZIPを登録し直してください。

ローカルで開発する​

ローカルのpnpm devでは、シークレットを.dev.varsに記述します。

.dev.vars
EXAMPLE_API_KEY=xxxxxxxx

.dev.varsはテンプレートの.gitignoreに含まれており、ZIPにも含まれません。 本番のシークレットの値を.dev.varsに書かず、開発用の値を使ってください。

注意事項​

  • シークレットの値をログに出力しないでください。ログは組織管理者が7日間閲覧できます。
  • シークレットの値を応答に含めたり、配信する静的ファイルに埋め込んだりしないでください。
  • ワーカープラグインのコードは組織のシークレットをすべて読めます。信頼できないコードを含むZIPを登録しないでください。