Cloudflare WorkersでKVを使ったAPIをローカル開発する際はPreviewを作ろう

KVを利用したAPIをWorkersで作ろうとした際に、エラーに遭遇したので覚え書き。 wrangler devがエラーになる wrangler devを実行すると、「開発環境でproductionのKVにアクセスしない […]

広告ここから
広告ここまで

目次

    KVを利用したAPIをWorkersで作ろうとした際に、エラーに遭遇したので覚え書き。

    wrangler devがエラーになる

    wrangler devを実行すると、「開発環境でproductionのKVにアクセスしないで(意訳)」と言われます。

    % wrangler dev   
    yarn run v1.22.15
    $ /Users/sandbox/cloudflare/node_modules/.bin/wrangler dev
     ⛅️ wrangler 2.12.3 
    --------------------
    
    ✘ [ERROR] In development, you should use a separate kv namespace than the one you'd use in production. Please create a new kv namespace with "wrangler kv:namespace create <name> --preview" and add its id as preview_id to the kv_namespace "first_kv" in your wrangler.toml

    wrangler devする場合、kv:namespace create --previewを実行しよう

    --previewでKV作れ」と言われるので、作成しましょう。

    % wrangler kv:namespace create first_kv --preview
     ⛅️ wrangler 2.12.3 
    --------------------
    🌀 Creating namespace with title "cloudflare-first_kv_preview"
    ✨ Success!
    Add the following to your configuration file in your kv_namespaces array:
    { binding = "first_kv", preview_id = "9xxxx" }
    ✨  Done in 1.81s.

    Preview用のKVのIDが取得できました。

    wrangler.tomlにある作成済みのKVに、preview_idを追加しましょう。

    kv_namespaces = [
        {binding = "first_kv", id = "2xxxx", preview_id = "9xxxxxx2" }
    ]

    wrangler devwrangler publishでKVのIDが変わる

    1つのBindingにprod / previewのIDを設定しました。

    これで開発モードと本番デプロイでは、それぞれ対応したIDのKVが利用されます。

    % wrangler dev
     ⛅️ wrangler 2.12.3 
    --------------------
    Your worker has access to the following bindings:
    - KV Namespaces:
      - first_kv: 9xxxxxx2
    ⬣ Listening at http://0.0.0.0:8787
    - http://127.0.0.1:8787
    - http://172.30.0.117:8787
    Total Upload: 0.28 KiB / gzip: 0.22 KiB
    ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
    │ [b] open a browser, [d] open Devtools, [l] turn on local mode, [c] clear console, [x] to exit                                                        │
    ╰──────────────────────────────────────────────────────────────────────────────────────────────

    publishは、preview_idではなくidの方につないでくれます。

    % yarn wrangler publish
    yarn run v1.22.15
    $ /Users/okamotohidetaka/sandbox/cloudflare/node_modules/.bin/wrangler publish
     ⛅️ wrangler 2.12.3 
    --------------------
    Your worker has access to the following bindings:
    - KV Namespaces:
      - first_kv: 275329e81c89462095e2f174bfc2c2ef
    Total Upload: 0.28 KiB / gzip: 0.22 KiB
    Uploaded cloudflare (1.05 sec)

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark