Cloudflare Workersのシークレット管理を整理した話

Cloudflare Workersでシークレット(APIキーなど秘密の値)を扱う方法を整理します。ローカルと本番で管理方法が異なります。


全体像

環境 方法 保存場所
ローカル開発 .dev.vars ファイルに記載 ローカルのファイル(gitignore)
本番(Cloudflare) wrangler secret put コマンドで登録 Cloudflareが管理

コード内からはどちらも platform.env.変数名 で同じようにアクセスできます。


ローカル開発:.dev.vars

プロジェクトルートに .dev.vars を作成します。wrangler dev が自動で読み込みます。

GITHUB_CLIENT_ID=your_client_id_here
GITHUB_CLIENT_SECRET=your_client_secret_here

.gitignore に必ず追加する

.dev.vars

シークレットをコミットしてしまうとセキュリティ事故になるため、.gitignore への追加は必須です。


本番:wrangler secret put

# 登録(実行するとプロンプトが出るので値を入力してEnter)
npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET

# 登録済みの一覧を確認
npx wrangler secret list

# 削除
npx wrangler secret delete GITHUB_CLIENT_ID

登録した値はCloudflareが管理し、デプロイ済みのWorkerから自動で参照できます。


wrangler.jsonc にシークレットは書かない

wrangler.jsoncvars セクションはGitにコミットされるため、シークレットは書きません。

// ✅ 公開してよい値だけ vars に書く
"vars": {
  "PUBLIC_APP_NAME": "My App",
  "APP_ENV": "production"
}

// ❌ シークレットを vars に書いてはいけない
"vars": {
  "GITHUB_CLIENT_SECRET": "xxxx"  // GitHubに上がってしまう
}

シークレットは wrangler.jsonc に何も書かなくても、.dev.varswrangler secret put で登録した値が platform.env から参照できます。


コードからのアクセス

// +page.server.ts や +server.ts など
export const load = async ({ platform }) => {
  const clientId = platform!.env.GITHUB_CLIENT_ID;
  const clientSecret = platform!.env.GITHUB_CLIENT_SECRET;
  // ...
};

ローカル(.dev.vars)も本番(wrangler secret put)も同じコードでアクセスできます。


まとめ

ローカル  → .dev.vars に書く(.gitignore に追加)
本番      → wrangler secret put で登録
コード内  → platform.env.変数名 でアクセス
wrangler.jsonc → シークレットは書かない(公開値のみ vars に書く)
← トップページに戻る