始める
Workers KVは、あなたのCloudflare Workersアプリケーションに低遅延、高スループットのグローバルストレージを提供します。Workers KVは、ユーザー設定データ、ルーティングデータ、A/Bテストの設定、認証トークンの保存に最適で、読み取りが多いワークロードに適しています。
このガイドでは、以下の手順を説明します:
- KV名前空間の作成
- Cloudflare WorkerからKV名前空間にキーと値のペアを書き込む
- KV名前空間からキーと値のペアを読み取る
続行するには:
- まだであれば、Cloudflareアカウント ↗にサインアップしてください。
npm↗をインストールします。Node.js↗をインストールします。権限の問題を避け、Node.jsのバージョンを変更するために、Volta ↗やnvm ↗のようなNodeバージョンマネージャを使用してください。Wranglerは、16.13.0以上のNodeバージョンを必要とします。- Wranglerのインストールを最新バージョンに更新します。
KV名前空間に読み書きするための新しいWorkerを作成します。
-
次のコマンドを実行して、
kv-tutorialという名前の新しいプロジェクトを作成します:Terminal window npm create cloudflare@latest -- kv-tutorialTerminal window yarn create cloudflare@latest kv-tutorialTerminal window pnpm create cloudflare@latest kv-tutorialFor setup, select the following options:
- For What would you like to start with?, choose
Hello World example. - For Which template would you like to use?, choose
Hello World Worker. - For Which language do you want to use?, choose
TypeScript. - For Do you want to use git for version control?, choose
Yes. - For Do you want to deploy your application?, choose
No(we will be making some changes before deploying).
これにより、以下のような新しい
kv-tutorialディレクトリが作成されます。ディレクトリkv-tutorial/
ディレクトリnode_modules/
- …
ディレクトリtest/
- …
ディレクトリsrc
- index.ts
- package-lock.json
- package.json
- testconfig.json
- vitest.config.mts
- worker-configuration.d.ts
- wrangler.toml
新しい
kv-tutorialディレクトリには以下が含まれています:index.tsにある「Hello World」Worker。wrangler.toml設定ファイル。wrangler.tomlは、kv-tutorialWorkerがKVデータベースにアクセスする方法です。
- For What would you like to start with?, choose
-
作成したWorkerプロジェクトのディレクトリに移動します:
Terminal window cd kv-tutorial
KV名前空間は、Cloudflareのグローバルネットワークに複製されたキーと値のデータベースです。
Wranglerまたはダッシュボードを介してKV名前空間を作成できます。
Wranglerを使用すると、KV名前空間内のエントリを追加、リスト、取得、削除できます。
Wranglerを介してKV名前空間を作成するには:
-
ターミナルを開き、次のコマンドを実行します:
Terminal window npx wrangler kv namespace create <YOUR_NAMESPACE>npx wrangler kv namespace create <YOUR_NAMESPACE>サブコマンドは、新しいバインディング名を引数として受け取ります。KV名前空間は、あなたのWorkerの名前(wrangler.tomlファイルから)と提供したバインディング名の連結を使用して作成されます。idはランダムに生成されます。Terminal window npx wrangler kv namespace create <YOUR_NAMESPACE>🌀 Creating namespace with title <YOUR_WORKER-YOUR_NAMESPACE>✨ Success!Add the following to your configuration file:kv_namespaces = [{ binding = <YOUR_BINDING>, id = "e29b263ab50e42ce9b637fa8370175e8" }] -
wrangler.tomlファイルに、ターミナルで生成された値を使って以下を追加します:kv_namespaces = [{ binding = "<YOUR_BINDING>", id = "<YOUR_ID>" }]バインディング名は、作成した名前空間に対応する必要はありません。バインディング名は単なる参照です。具体的には:
<YOUR_BINDING>に設定した値(文字列)は、Worker内でこのデータベースを参照するために使用されます。このチュートリアルでは、バインディング名をDBと名付けます。- バインディングは有効なJavaScript変数名 ↗である必要があります。例えば、
binding = "MY_KV"やbinding = "routingConfig"は、どちらもバインディングの有効な名前です。 - あなたのバインディングは、Worker内で
env.<YOUR_BINDING>として利用可能です。
- Cloudflareダッシュボード ↗にログインします。
- Workers & Pages > KVを選択します。
- Create a namespaceを選択します。
- 名前空間の名前を入力します。
- Addを選択します。
Wranglerを介して、または直接WorkersアプリケーションからKV名前空間と相互作用できます。
Wranglerを使用して空のKV名前空間に値を書き込むには:
-
ターミナルで
wrangler kv key putサブコマンドを実行し、それぞれのキーと値を入力します。<KEY>と<VALUE>はあなたの選択した値です。Terminal window npx wrangler kv key put --binding=<YOUR_BINDING> "<KEY>" "<VALUE>"Writing the value "<VALUE>" to key "<KEY>" on namespace e29b263ab50e42ce9b637fa8370175e8.
--bindingの代わりに、--namespace-idを使用して、どのKV名前空間が操作を受け取るかを指定することもできます:
npx wrangler kv key put --namespace-id=e29b263ab50e42ce9b637fa8370175e8 "<KEY>" "<VALUE>"Writing the value "<VALUE>" to key "<KEY>" on namespace e29b263ab50e42ce9b637fa8370175e8.ローカルモードでキーと値を作成するには、コマンドの最後に--localフラグを追加します:
npx wrangler kv key put --namespace-id=xxxxxxxxxxxxxxxx "<KEY>" "<VALUE>" --localWranglerを使用して値にアクセスするには:
-
ターミナルで
wrangler kv key getサブコマンドを実行し、キーの値を入力します:Terminal window # [OPTIONS]を--bindingまたは--namespace-idに置き換えますnpx wrangler kv key get [OPTIONS] "<KEY>"KV名前空間は2つの方法で指定できます:
--bindingを使用してTerminal window npx wrangler kv key get --binding=<YOUR_BINDING> "<KEY>"--namespace-idを使用してTerminal window npx wrangler kv key get --namespace-id=<YOUR_ID> "<KEY>"
プレビュー名前空間と相互作用するために--previewフラグを追加できます。
複数のキーと値のペアを指定されたKV名前空間に書き込むためのkv bulkドキュメントを参照してください。
Worker内からバインディングにアクセスできます。
-
Workerスクリプト内で、
EnvインターフェースにKV名前空間を追加します:interface Env {YOUR_KV_NAMESPACE: KVNamespace;// ... 他のバインディングタイプ} -
YOUR_KV_NAMESPACEのput()メソッドを使用して、新しいキーと値のペアを作成するか、特定のキーの値を更新します:let value = await env.YOUR_KV_NAMESPACE.put(key, value); -
KVの
get()メソッドを使用して、KVデータベースに保存したデータを取得します:let value = await env.YOUR_KV_NAMESPACE.get("KEY");
あなたのWorkerコードは次のようになります:
export interface Env { YOUR_KV_NAMESPACE: KVNamespace;}
export default { async fetch(request, env, ctx): Promise<Response> { try { await env.YOUR_KV_NAMESPACE.put("KEY", "VALUE"); const value = await env.YOUR_KV_NAMESPACE.get("KEY"); if (value === null) { return new Response("Value not found", { status: 404 }); } return new Response(value); } catch (err) { // プロダクションアプリケーションでは、KVの // 読み取りを再試行するか、デフォルトのコードパスにフォールバックすることを選択できます。 console.error(`KV returned error: ${err}`); return new Response(err, { status: 500 }); } },} satisfies ExportedHandler<Env>;上記のコードは:
- KVの
put()メソッドを使用してYOUR_KV_NAMESPACEにキーを書き込みます。 - KVの
get()メソッドを使用して同じキーを読み取り、キーがnullの場合(またはキーが設定されていない場合、または存在しない場合)にエラーを返します。 - JavaScriptの
try...catch↗例外処理を使用して、潜在的なエラーをキャッチします。Workers KVやfetch()を使用した外部APIからの読み書きなど、サービスからの読み書きを行う際には、例外を明示的に処理することを期待するべきです。
プロジェクトをローカルで実行するには、プロジェクトディレクトリ内で次のコマンドを入力します:
npx wrangler devwrangler devを実行すると、WranglerはWorkerを確認するためのURL(通常はlocalhost:8787)を提供します。ブラウザは、Wranglerが提供したURLにアクセスすると、あなたの値を表示します。
-
次のコマンドを実行して、KVをCloudflareのグローバルネットワークにデプロイします:
Terminal window npx wrangler deploy -
新しく作成したWorkers KVアプリケーションのURLにアクセスします。
例えば、新しいWorkerのURLが
kv-tutorial.<YOUR_SUBDOMAIN>.workers.devの場合、https://kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev/にアクセスすると、あなたのWorkerにリクエストが送信され、Workers KVから書き込み(および読み取り)が行われます。
このチュートリアルを完了することで、あなたは:
- KV名前空間を作成しました
- その名前空間に書き込みと読み取りを行うWorkerを作成しました
- プロジェクトをグローバルにデプロイしました。
機能リクエストがある場合やバグを見つけた場合は、Cloudflare DevelopersコミュニティにDiscordで参加して ↗、直接フィードバックを共有してください。
- KV APIについてもっと学びましょう。
- Workers KVでEnvironmentsを使用する方法を理解しましょう。
- Wranglerの
kvコマンドドキュメントを読みましょう。