🐟

Cloudflare Workersの環境設定

2023/04/12に公開

Cloudflare Workersで環境設定を行う場合、いくつかやりかたがありますが、その内の1つを紹介します。

https://developers.cloudflare.com/workers/platform/environments/

https://developers.cloudflare.com/workers/platform/environment-variables/

wrangler.tomlの設定

ステージとして、dev stg prd を用意してみました。
[dev.*]毎に環境に依存したwrangler.tomlの設定と、[dev.*.vars]で環境設定が出来ます。

compatibility_date = "2023-01-01"

[env.dev]
name = "my-app-dev"
[env.dev.vars]
API_URL = "http://localhost:8080/rest/v1"
API_KEY = "..."

[env.stg]
name = "my-app-stg"
[env.stg.vars]
API_URL = "http://stg.example.com/rest/v1"
API_KEY = "..."

[env.prd]
name = "gem-dev-prd"
[env.prd.vars]
API_URL = "http://example.com/rest/v1"
API_KEY = "..."

ワーカー起動

wrangler dev src/index.ts --env dev

devのところは、stgprdにすることができます。

 ⛅️ wrangler 2.14.0 (update available 2.15.0)
-------------------------------------------------------
Your worker has access to the following bindings:
- Vars:
  - API_URL: "http://localhost:8080/rest/v1"
  - API_KEY: "..."
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.1.2:8787
Total Upload: 157.33 KiB / gzip: 29.06 KiB
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ [b] open a browser, [d] open Devtools, [l] turn on local mode, [c] clear console, [x] to exit                                                                                                                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

- Vars:のところで、設定された環境変数が確認できます。

最後に

環境毎に見えても良い情報については、この方法でも良いですが、API_KEYといったクレデンシャルにあたる情報は、セキュアに扱いたいです。その場合、wrangler.tomlではなく、.dev.varsといったファイルをルートに置くか、以下コマンドで保存することが良いでしょう。

wrangler secret put <key>

.dev.varsを用意すると、以下のようにファイルを見つけて使ってくれるようです。

Using vars defined in .dev.vars
Your worker has access to the following bindings:
- Vars:
  - POSTGREST_URL: "(hidden)"
  - SUPABASE_API_KEY: "(hidden)"
⎔ Starting a local server...
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ [b] open a browser, [d] open Devtools, [l] turn off local mode, [c] clear console, [x] to exit                                                                                                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

https://developers.cloudflare.com/workers/wrangler/configuration/#environmental-variables

https://zenn.dev/mr_ozin/articles/645502f4a621d6

Discussion