Wrangler は任意で設定ファイルを使い、Worker の開発とデプロイの設定をカスタマイズします。
Wrangler の設定ファイルは、Worker 設定の 信頼できる情報源 として扱うのがベストプラクティスです。
{
"$schema": "./node_modules/wrangler/config-schema.json",
// Top-level configuration
"name": "my-worker",
"main": "src/index.js",
// Set this to today's date
"compatibility_date": "2026-09-20",
"workers_dev": false,
"route": {
"pattern": "example.org/*",
"zone_name": "example.org",
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<KV_ID>",
},
],
"env": {
"staging": {
"name": "my-worker-staging",
"route": {
"pattern": "staging.example.org/*",
"zone_name": "example.org",
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<STAGING_KV_ID>",
},
],
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-09-20"
workers_dev = false
[route]
pattern = "example.org/*"
zone_name = "example.org"
[[kv_namespaces]]
binding = "<MY_NAMESPACE>"
id = "<KV_ID>"
[env.staging]
name = "my-worker-staging"
[env.staging.route]
pattern = "staging.example.org/*"
zone_name = "example.org"
[[env.staging.kv_namespaces]]
binding = "<MY_NAMESPACE>"
id = "<STAGING_KV_ID>"Wrangler の environments を使い、Worker に異なる設定を定義できます。 デフォルト(トップレベル)の環境があり、名前付き環境を作って環境固有の設定を指定できます。
これらは [env.<name>] キーの下に定義します。たとえば [env.staging] です。プレビューやデプロイは、npx wrangler deploy --env staging のように wrangler コマンドの -e / --env フラグで行います。
大半のキーは継承可能です。トップレベルの設定を環境でも使えます。Bindings(vars や kv_namespaces など)は継承されません。明示的に定義する必要があります。
さらに、トップレベルにしか置けないキーもいくつかあります。
ベータWrangler は、デプロイ時にリソースを自動でプロビジョニングできます。事前に作成しておく必要はありません。
現在、次のリソースに対応します。KV、R2、D1、Flagship、AI Search、Agent Memory、Dispatch Namespaces、Queues。
この機能を使うには、リソース ID を付けずに設定ファイルへバインディングを追加します。R2 の場合はバケット名も不要です。リソースは、Worker 名をプレフィックスとして作成されます。
{
"kv_namespaces": [
{
"binding": "<MY_KV_NAMESPACE>",
},
],
}[[kv_namespaces]]
binding = "<MY_KV_NAMESPACE>"wrangler dev を実行すると、実行間で残るローカルリソースが自動作成されます。wrangler deploy を実行すると、リソースが作成され、その ID が設定ファイルへ書き戻されます。
ダッシュボードから(たとえば GitHub 経由で)リソース ID なしの Worker をデプロイした場合、リソースは作成されますが、ID はダッシュボードからのみ確認できます。現時点では、これらのリソース ID はリポジトリへ書き戻されません。
トップレベルキーは Worker 全体(したがってすべての環境)に適用されます。名前付き環境内では定義できません。
keep_varsbooleanoptional- デプロイ時に、ダッシュボードで設定した変数を Wrangler が保持するかどうか。信頼できる情報源 を参照してください。
send_metricsbooleanoptional- このプロジェクトについて、Wrangler が利用状況データを Cloudflare へ送るかどうか。デフォルトは
trueです。詳細は データポリシー ↗ を参照してください。
- このプロジェクトについて、Wrangler が利用状況データを Cloudflare へ送るかどうか。デフォルトは
dependencies_instrumentationobjectoptional- Worker バージョンのデプロイまたはアップロード時に、npm パッケージ依存関係の計測を設定します。デフォルトは有効です。
enabledboolean— Wrangler が npm パッケージ依存関係のメタデータ(パッケージ名とバージョン)を収集して送信するかどうか。デフォルトはtrueです。
siteobjectoptional deprecated- 詳細は下記の Workers Sites を参照してください。この方法より、Cloudflare Pages と Workers Assets が推奨されます。
- Cloudflare Vite plugin ではサポートされません。
継承可能なキーはトップレベルで設定でき、環境固有の設定で継承(または上書き)できます。
namestringrequired- Worker の名前。英数字(
a、b、cなど)とハイフン(-)のみです。アンダースコア(_)は使えません。Worker 名は最大 255 文字です。workers.devサブドメイン を使う場合、名前は 63 文字以下で、先頭と末尾をハイフンにできません。
- Worker の名前。英数字(
mainstringrequired- 実行される Worker のエントリポイントへのパスです。例:
./src/index.ts。
- 実行される Worker のエントリポイントへのパスです。例:
compatibility_datestringrequiredyyyy-mm-dd形式の日付です。Workers ランタイムのどのバージョンを使うかを決めます。Compatibility dates を参照してください。
account_idstringoptional- ゾーンに関連付けられたアカウントの ID です。アカウントが複数ある場合があるため、ゾーン / ルートを指定するときは、そのゾーン / ルートに紐づくアカウントの ID を使います。
CLOUDFLARE_ACCOUNT_ID環境変数でも指定できます。
- ゾーンに関連付けられたアカウントの ID です。アカウントが複数ある場合があるため、ゾーン / ルートを指定するときは、そのゾーン / ルートに紐づくアカウントの ID を使います。
compatibility_flagsstring[]optional- Workers ランタイムの今後の機能を有効にするフラグのリストです。通常は
compatibility_dateと一緒に使います。compatibility dates を参照してください。
- Workers ランタイムの今後の機能を有効にするフラグのリストです。通常は
workers_devbooleanoptional*.workers.devサブドメインへの Worker デプロイを有効にします。scheduledイベント専用の Worker ではfalseにできます。デフォルトはtrueです。ルートの種類 を参照してください。
preview_urlsbooleanoptional- Preview URLs を使った Worker のテストを有効にします。デフォルトは
workers_devの値です。Preview URLs を参照してください。
- Preview URLs を使った Worker のテストを有効にします。デフォルトは
routeRouteoptional- Worker をデプロイするルートです。
routesまたはrouteのどちらか一方だけが必要です。ルートの種類 を参照してください。
- Worker をデプロイするルートです。
routesRoute[]optional- Worker をデプロイするルートの配列です。
routesまたはrouteのどちらか一方だけが必要です。ルートの種類 を参照してください。
- Worker をデプロイするルートの配列です。
tsconfigstringoptional- カスタム
tsconfigへのパスです。 - Cloudflare Vite plugin を使う場合は適用されません。
- カスタム
triggersobjectoptional- Worker の
scheduled関数を起動する cron 定義です。トリガー を参照してください。
- Worker の
rulesRuleoptional- どのモジュールを、どの型としてインポートするかを定義するルールの順序付きリストです。
Text、Data、CompiledWasmモジュールを使う場合、または.jsファイルをCommonJSではなくESModuleとして扱いたい場合に指定します。 - Cloudflare Vite plugin を使う場合は適用されません。
- どのモジュールを、どの型としてインポートするかを定義するルールの順序付きリストです。
buildBuildoptional- Wrangler が Worker をビルドするときに実行するカスタムビルドステップを設定します。カスタムビルド を参照してください。
- Cloudflare Vite plugin を使う場合は適用されません。
no_bundlebooleanoptional- 内部ビルドステップをスキップし、Worker スクリプトを直接デプロイします。依存関係のないプレーンな JavaScript Worker が必要です。
- Cloudflare Vite plugin を使う場合は適用されません。
find_additional_modulesbooleanoptionaltrueの場合、Wrangler はbase_dir以下のファイルツリーを走査します。rulesに一致するファイルは、デプロイする Worker に含まれます。no_bundleがtrueのときはデフォルトでtrue、それ以外はfalseです。 Module 形式の Worker でのみ使えます(Service Worker 形式では使えません)。- Cloudflare Vite plugin を使う場合は適用されません。
base_dirstringoptional- 追加ファイルを Worker デプロイに含めるとき(
find_additional_modules経由)、モジュールのrulesを評価するディレクトリです。未指定の場合、Worker のmainエントリポイントを含むディレクトリがデフォルトです。 - Cloudflare Vite plugin を使う場合は適用されません。
- 追加ファイルを Worker デプロイに含めるとき(
preserve_file_namesbooleanoptional- Worker と一緒にバンドルする追加モジュールのファイル名を Wrangler が保持するかどうかを決めます。
デフォルトでは、ファイル名の先頭にコンテンツハッシュを付けます。
例:
34de60b44167af5c5a709e62a4e20c4f18c9e3b6-favicon.ico。 - Cloudflare Vite plugin を使う場合は適用されません。
- Worker と一緒にバンドルする追加モジュールのファイル名を Wrangler が保持するかどうかを決めます。
デフォルトでは、ファイル名の先頭にコンテンツハッシュを付けます。
例:
minifybooleanoptional- アップロード前に Worker スクリプトを minify します。
- Cloudflare Vite plugin を使う場合、
minifyは Vite のbuild.minify↗ に置き換わります。
keep_namesbooleanoptional- Wrangler は開発とデプロイで Worker コードの処理に esbuild を使います。このオプションでは、esbuild がコードに keepNames ↗ ロジックを適用するかどうかを指定できます。デフォルトは
trueです。
- Wrangler は開発とデプロイで Worker コードの処理に esbuild を使います。このオプションでは、esbuild がコードに keepNames ↗ ロジックを適用するかどうかを指定できます。デフォルトは
logpushbooleanoptional- Worker の Workers Trace Events Logpush を有効にします。このプロパティがあるスクリプトは、アカウントに設定された Workers Logpush ジョブが自動で取り込みます。デフォルトは
falseです。Workers Logpush を参照してください。
- Worker の Workers Trace Events Logpush を有効にします。このプロパティがあるスクリプトは、アカウントに設定された Workers Logpush ジョブが自動で取り込みます。デフォルトは
limitsLimitsoptional- ランタイム実行に課す制限を設定します。Limits を参照してください。
observabilityobjectoptional- Worker から出るテレメトリデータの自動オブザーバビリティ設定です。Observability を参照してください。
assetsAssetsoptional- 配信する静的アセットを設定します。詳細は Assets を参照してください。
exportsobjectoptional- この Worker がエクスポートする Durable Object クラスと、そのライフサイクル状態(
created、deleted、renamed、transferred、expecting-transfer)を宣言します。Durable Object class exports を参照してください。migrationsとは排他です。
- この Worker がエクスポートする Durable Object クラスと、そのライフサイクル状態(
migrationsobjectoptional- Durable Object をクラス名からランタイム状態へ対応付ける、レガシーな命令的設定です。新しい Worker では
exportsを使います。Durable Object class migrations (legacy) を参照してください。
- Durable Object をクラス名からランタイム状態へ対応付ける、レガシーな命令的設定です。新しい Worker では
placementobjectoptional- バックエンドサービスへのレイテンシを下げるため、Worker の実行場所を設定します。Placement を参照してください。
modestring—"smart"にすると、観測したレイテンシに基づき、バックエンドサービスの近くへ Worker を自動配置します。regionstring— クラウドリージョン(例:"aws:us-east-1"、"gcp:europe-west1"、"azure:westeurope")を指定し、そのリージョンのインフラ近くへ Worker を配置します。hoststring— シングルホームのレイヤー 4 サービス向けにホスト名とポート(例:"my_database_host.com:5432")を指定し、そのサービス近くへ Worker を配置します。hostnamestring— シングルホームのレイヤー 7 サービス向けにホスト名(例:"my_api_server.com")を指定し、そのサービス近くへ Worker を配置します。
継承されないキーはトップレベルで設定できますが、環境には継承されません。各環境で指定する必要があります。
defineRecord<string, string>optional- Worker のデプロイ時に置換する値のマップです。
- Cloudflare Vite plugin を使う場合、
defineは Vite のdefine↗ に置き換わります。
varsobjectoptional- Worker のデプロイ時に設定する環境変数のマップです。Environment variables を参照してください。
durable_objectsobjectoptional- Worker がバインドする Durable Objects のリストです。Durable Objects を参照してください。
kv_namespacesobjectoptional- Worker がバインドする KV 名前空間のリストです。KV namespaces を参照してください。
r2_bucketsobjectoptional- Worker がバインドする R2 バケットのリストです。R2 buckets を参照してください。
ai_search_namespacesobjectoptional- Worker がバインドする AI Search 名前空間のリストです。AI Search namespaces を参照してください。
ai_searchobjectoptional- デフォルト名前空間内の既存インスタンスへ直接バインドする AI Search インスタンスバインディングのリストです。AI Search instances を参照してください。
vectorizeobjectoptional- Worker がバインドする Vectorize インデックスのリストです。Vectorize indexes を参照してください。
servicesobjectoptional- Worker がバインドするサービスバインディングのリストです。service bindings を参照してください。
queuesobjectoptional- Worker がバインドする Queue のプロデューサーとコンシューマーのリストです。Queues を参照してください。
workflowsobjectoptional- Worker がバインドする Workflows のリストです。Workflows を参照してください。
tail_consumersobjectoptional- Worker がデータを送る Tail Workers のリストです。Tail Workers を参照してください。
secretsobjectoptional- Worker が必要とするシークレット名を宣言します。ローカル開発とデプロイ時の検証、および型生成の信頼できる情報源として使います。Secrets を参照してください。
requiredstring[]optional — Worker のデプロイに必須のシークレット名のリストです。
secrets_store_secretsobjectoptional- Worker がバインドする Secrets Store バインディングのリストです。Secrets Store を参照してください。
ルート には 3 種類あります。Custom Domains、routes、workers.dev です。
Custom Domains を使うと、DNS 設定の変更や証明書管理なしで、Worker をドメインまたはサブドメインへ接続できます。
patternstringrequired- Worker を実行するパターンです。例:
"example.com"。
- Worker を実行するパターンです。例:
custom_domainbooleanoptional- Worker をルートではなく Custom Domain にするかどうか。デフォルトは
falseです。
- Worker をルートではなく Custom Domain にするかどうか。デフォルトは
例:
{
"routes": [
{
"pattern": "shop.example.com",
"custom_domain": true,
},
],
}[[routes]]
pattern = "shop.example.com"
custom_domain = trueRoutes は、URL パターンを Worker へ対応付けます。ルートはゾーン ID ルート、ゾーン名ルート、またはシンプルルートとして設定できます。
patternstringrequired- Worker を実行できるパターンです。例:
"example.com/*"。
- Worker を実行できるパターンです。例:
zone_idstringrequiredpatternが関連付けられたゾーンの ID です。ゾーンとアカウント ID の確認 を参照してください。
例:
{
"routes": [
{
"pattern": "subdomain.example.com/*",
"zone_id": "<YOUR_ZONE_ID>",
},
],
}[[routes]]
pattern = "subdomain.example.com/*"
zone_id = "<YOUR_ZONE_ID>"patternstringrequired- Worker を実行するパターンです。例:
"example.com/*"。
- Worker を実行するパターンです。例:
zone_namestringrequiredpatternが関連付けられたゾーンの名前です。API トークンを使う場合はAccountスコープが必要です。
例:
{
"routes": [
{
"pattern": "subdomain.example.com/*",
"zone_name": "example.com",
},
],
}[[routes]]
pattern = "subdomain.example.com/*"
zone_name = "example.com"パターンだけが必要なシンプルなルートです。
例:
{
"route": "example.com/*",
}route = "example.com/*"Cloudflare Workers アカウントには、Cloudflare ダッシュボードで設定できる workers.dev サブドメインが付きます。
workers_devbooleanoptional- Worker をカスタム
workers.devアカウントサブドメインで実行するかどうか。デフォルトはtrueです。
- Worker をカスタム
{
"workers_dev": false,
}workers_dev = falseトリガーでは、Worker の scheduled 関数を呼び出す cron 式を定義できます。サポートされる cron 式 を参照してください。
cronsstring[]requiredcron式の配列です。- Cron Trigger を無効にするには、
crons = []を設定します。cronsキーをコメントアウトしても Cron Trigger は無効になりません。
例:
{
"triggers": {
"crons": ["* * * * *"],
},
}[triggers]
crons = [ "* * * * *" ]Observability 設定を使うと、Cloudflare Workers から出るログデータを自動で取り込み、保存、フィルタ、分析できます。Cloudflare Worker のダッシュボードから直接操作します。
enabledbooleanrequired- Worker で
trueにすると、その Worker のログが永続化されます。新しい Worker ではデフォルトでtrueです。
- Worker で
head_sampling_ratenumberoptional- 0 から 1 の数値です。0 は 100 件中 0 件のリクエストが記録され、1 はすべてのリクエストが記録されます。
head_sampling_rateを未指定の場合、デフォルト値は 1(100%)です。ヘッドベースサンプリング の詳細を参照してください。
- 0 から 1 の数値です。0 は 100 件中 0 件のリクエストが記録され、1 はすべてのリクエストが記録されます。
例:
{
"observability": {
"enabled": true,
"head_sampling_rate": 0.1, // 10% of requests are logged
},
}[observability]
enabled = true
head_sampling_rate = 0.1Worker のデプロイ前に実行するカスタムビルドステップを設定できます。カスタムビルド を参照してください。
commandstringoptional- Worker のビルドに使うコマンドです。Linux と macOS では
shシェル、Windows ではcmdシェルで実行されます。シェル演算子&&と||を使えます。
- Worker のビルドに使うコマンドです。Linux と macOS では
cwdstringoptional- コマンドを実行するディレクトリです。
watch_dirstring | string[]optionalwrangler dev使用時に変更を監視するディレクトリです。デフォルトは現在の作業ディレクトリです。
例:
{
"build": {
"command": "npm run build",
"cwd": "build_cwd",
"watch_dir": "build_watch_dir",
},
}[build]
command = "npm run build"
cwd = "build_cwd"
watch_dir = "build_watch_dir"ランタイムでの Worker の動作に制限を課せます。制限は Standard Usage Model でのみサポートされます。 制限は Cloudflare のネットワークへデプロイしたときだけ適用され、ローカル開発では適用されません。CPU 制限の上限は 300,000 ミリ秒(5 分)です。
各 isolate には、Worker が設定した上限をたまに超える場合に備えた余裕があります。上限を継続的に超えるようになると、設定した上限に従って実行が打ち切られます。
cpu_msnumberoptional- 1 回の呼び出しで許可される最大 CPU 時間(ミリ秒)です。
subrequestsnumberoptional- 1 回の呼び出しで許可される最大サブリクエスト数です。無料アカウントのデフォルトは 50、有料アカウントのデフォルトは 10,000 です。無料アカウントの上限は 50、有料アカウントの上限は 10,000,000 です。詳細は サブリクエスト制限 を参照してください。
例:
{
"limits": {
"cpu_ms": 100,
"subrequests": 150,
},
}[limits]
cpu_ms = 100
subrequests = 150Workers Browser Run API を使うと、ヘッドレスブラウザーインスタンスをプログラムから操作し、アプリケーションや製品向けの自動化フローを作れます。
browser binding は、専用の Chromium ブラウザーインスタンスとやり取りするための認証済みエンドポイントを Worker に提供します。
bindingstringrequired- browser binding を参照するバインディング名です。設定した文字列が、Worker 内でこのヘッドレスブラウザーを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
binding = "HEAD_LESS"とbinding = "simulatedBrowser"はどちらも有効な名前です。
- browser binding を参照するバインディング名です。設定した文字列が、Worker 内でこのヘッドレスブラウザーを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
例:
{
"browser": {
"binding": "<BINDING_NAME>",
},
}[browser]
binding = "<BINDING_NAME>"D1 は Cloudflare のサーバーレス SQL データベースです。Worker は、D1 Workers Binding API 用に各データベースへの binding を作り、D1 データベースをクエリできます。
D1 データベースを Worker にバインドするには、次のオブジェクトの配列を [[d1_databases]] キーに割り当てます。
-
bindingstringrequired- D1 データベースを参照するバインディング名です。設定した文字列が、Worker 内でこのデータベースを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
binding = "MY_DB"とbinding = "productionDB"はどちらも有効な名前です。
- D1 データベースを参照するバインディング名です。設定した文字列が、Worker 内でこのデータベースを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
-
database_namestringrequired- データベースの名前です。データベースを区別するための人が読める名前で、最初に作成したときに設定します。
-
database_idstringrequired- データベースの ID です。最初に
wrangler d1 createを使うとき、またはwrangler d1 listを呼ぶときに確認でき、データベースを一意に識別します。
- データベースの ID です。最初に
-
preview_database_idstringoptional- この D1 データベースのプレビュー ID です。指定した場合、
wrangler devはこの ID を使います。未指定の場合はdatabase_idを使います。本番データベースを避けるため、wrangler dev --remoteを使うときに推奨されます。
- この D1 データベースのプレビュー ID です。指定した場合、
-
migrations_dirstringoptional- マイグレーションファイルを含むマイグレーションディレクトリです。デフォルトでは、
wrangler d1 migrations createはmigrationsというフォルダーを作ります。マイグレーションファイルを含む別のフォルダーを指定するにはmigrations_dirを使います(モノレポ構成で、アプリ / パッケージ横断で 1 つの D1 インスタンスを使う場合など)。 - 詳細は D1 Wrangler
migrationsコマンド と D1 migrations を参照してください。
- マイグレーションファイルを含むマイグレーションディレクトリです。デフォルトでは、
-
migrations_patternstringoptional- マイグレーションファイルを見つけるための glob パターン(Wrangler 設定ファイルからの相対)です。デフォルトは
migrations/*.sqlです。 - Drizzle などの ORM が作る入れ子レイアウト(例:
migrations/*/migration.sql)にオプトインするために使います。 migrations_patternを設定する場合はmigrations_dirも設定する必要があり、migrations_patternはmigrations_dirの値で始まる必要があります。各マイグレーションは、migrations_dirからの相対パスとしてマイグレーションテーブルに記録されます。
- マイグレーションファイルを見つけるための glob パターン(Wrangler 設定ファイルからの相対)です。デフォルトは
例:
{
"d1_databases": [
{
"binding": "<BINDING_NAME>",
"database_name": "<DATABASE_NAME>",
"database_id": "<DATABASE_ID>",
},
],
}[[d1_databases]]
binding = "<BINDING_NAME>"
database_name = "<DATABASE_NAME>"
database_id = "<DATABASE_ID>"Dispatch namespace bindings は、dynamic dispatch Worker と dispatch namespace の通信を可能にします。Dispatch namespace bindings は Workers for Platforms で使います。Workers for Platforms は、顧客に代わってサーバーレス関数をプログラムからデプロイするのに役立ちます。
bindingstringrequired- バインディング名です。設定した文字列が、Worker 内でこのデータベースを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
binding = "MY_NAMESPACE"とbinding = "productionNamespace"はどちらも有効な名前です。
- バインディング名です。設定した文字列が、Worker 内でこのデータベースを参照するために使われます。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
namespacestringrequired- dispatch namespace の名前です。
outboundobjectoptionalservicestringrequired バインドする outbound Worker の名前です。parametersarray optional dynamic dispatch Worker から outbound Worker へデータを渡すパラメーターのリストです。
{
"dispatch_namespaces": [
{
"binding": "<BINDING_NAME>",
"namespace": "<NAMESPACE_NAME>",
"outbound": {
"service": "<WORKER_NAME>",
"parameters": ["params_object"],
},
},
],
}[[dispatch_namespaces]]
binding = "<BINDING_NAME>"
namespace = "<NAMESPACE_NAME>"
[dispatch_namespaces.outbound]
service = "<WORKER_NAME>"
parameters = [ "params_object" ]Durable Objects は、Workers プラットフォーム向けに低レイテンシの調整と一貫したストレージを提供します。
Durable Objects を Worker にバインドするには、次のオブジェクトの配列を durable_objects.bindings キーに割り当てます。
namestringrequired- Durable Object を参照するバインディング名です。
class_namestringrequired- Durable Object のエクスポートされたクラス名です。
script_namestringoptional- Durable Object が定義されている Worker の名前です。この Worker の外部にある場合に使います。ローカル開発とリモート開発の両方で使えます。ローカル開発では、外部 Worker を別プロセス(
wrangler dev)で実行する必要があります。リモート開発では、適切なリモートバインディングを使う必要があります。
- Durable Object が定義されている Worker の名前です。この Worker の外部にある場合に使います。ローカル開発とリモート開発の両方で使えます。ローカル開発では、外部 Worker を別プロセス(
environmentstringoptional- バインドする
script_nameの環境です。
- バインドする
例:
{
"durable_objects": {
"bindings": [
{
"name": "<BINDING_NAME>",
"class_name": "<CLASS_NAME>",
},
],
},
}[[durable_objects.bindings]]
name = "<BINDING_NAME>"
class_name = "<CLASS_NAME>"exports フィールドは、この Worker がエクスポートする Durable Object クラスと、そのライフサイクル状態を宣言します。Durable Object class exports を参照してください。
exports の各エントリは Durable Object クラス名をキーにします。各エントリのフィールドは次のとおりです。
typestringrequired- Durable Object クラスのエントリでは、これを
"durable-object"に設定します。
- Durable Object クラスのエントリでは、これを
statestringoptional- ライフサイクル状態です。
"created"(デフォルト — 稼働中のクラス)、"deleted"、"renamed"、"transferred"、"expecting-transfer"のいずれかです。
- ライフサイクル状態です。
storagestringconditionalstateが"created"または"expecting-transfer"のときに必須です。"sqlite"(推奨。新しい名前空間では必須)または"legacy-kv"(既存のキーバリューバックエンド名前空間のみ)のいずれかです。
renamed_tostringconditionalstateが"renamed"のときに必須です。移動先のクラス名で、同じexportsマップ内に稼働中のエントリとしても存在する必要があります。
transferred_tostringconditionalstateが"transferred"のときに必須です。名前空間を受け取る対象 Worker の名前です。
transfer_fromstringconditionalstateが"expecting-transfer"のときに必須です。名前空間の転送元となるソース Worker の名前です。
例:
{
"exports": {
"MyDurableObject": {
"type": "durable-object",
"storage": "sqlite",
},
"OldClass": {
"type": "durable-object",
"state": "deleted",
},
"OldName": {
"type": "durable-object",
"state": "renamed",
"renamed_to": "NewName",
},
"NewName": {
"type": "durable-object",
"storage": "sqlite",
},
},
}[exports.MyDurableObject]
type = "durable-object"
storage = "sqlite"
[exports.OldClass]
type = "durable-object"
state = "deleted"
[exports.OldName]
type = "durable-object"
state = "renamed"
renamed_to = "NewName"
[exports.NewName]
type = "durable-object"
storage = "sqlite"レガシーな migrations 配列を使う Worker で Durable Object クラスを変更する場合は、マイグレーションが必要です。Durable Object class migrations (legacy) を参照してください。
tagstringrequired- このマイグレーションの一意な識別子です。
new_sqlite_classesstring[]optional- SQLite ストレージバックエンドで定義する新しい Durable Object クラスです。
new_classesstring[]optional- レガシーなキーバリューストレージバックエンドで定義する新しい Durable Object クラスです。
renamed_classes{from: string, to: string}[]optional- 名前を変更する Durable Object クラスです。
deleted_classesstring[]optional- 削除する Durable Object クラスです。
transferred_classes{from: string, from_script: string, to: string}[]optional- 別の Worker から転送する Durable Object クラスです。
例:
{
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": [
// Array of new classes
"DurableObjectExample",
],
},
{
"tag": "v2", // Should be unique for each entry
"renamed_classes": [
// Array of rename directives
{
"from": "DurableObjectExample",
"to": "UpdatedName",
},
],
"deleted_classes": [
// Array of deleted class names
"DeprecatedClass",
],
},
],
}[[migrations]]
tag = "v1"
new_sqlite_classes = [ "DurableObjectExample" ]
[[migrations]]
tag = "v2"
deleted_classes = [ "DeprecatedClass" ]
[[migrations.renamed_classes]]
from = "DurableObjectExample"
to = "UpdatedName"Email Routing で検証済みのメールアドレスへ、Worker から Worker のアクティビティに関するメールを送れます。特定の種類のイベントが起きたときに知らせたい場合などに便利です。
メールアドレスを Worker にバインドする前に、Email Routing を有効 にし、検証済みメールアドレス を少なくとも 1 つ用意する必要があります。 次に、必要なメールバインディングの種類を持つオブジェクト(send_email)へ配列を割り当てます。
namestringrequired- バインディング名です。
destination_addressstringoptional- メールの送信先として 選んだメールアドレス です。
allowed_destination_addressesstring[]optional- メールの送信先として使う メールアドレスの許可リスト です。
Wrangler ファイルには、1 つ以上の種類のバインディングを追加できます。ただし、各属性はそれぞれ別の行に書く必要があります。
{
"send_email": [
{
"name": "<NAME_FOR_BINDING1>"
},
{
"name": "<NAME_FOR_BINDING2>",
"destination_address": "<YOUR_EMAIL>@example.com"
},
{
"name": "<NAME_FOR_BINDING3>",
"allowed_destination_addresses": [
"<YOUR_EMAIL>@example.com",
"<YOUR_EMAIL2>@example.com"
]
}
]
}[[send_email]]
name = "<NAME_FOR_BINDING1>"
[[send_email]]
name = "<NAME_FOR_BINDING2>"
destination_address = "<YOUR_EMAIL>@example.com"
[[send_email]]
name = "<NAME_FOR_BINDING3>"
allowed_destination_addresses = [ "<YOUR_EMAIL>@example.com", "<YOUR_EMAIL2>@example.com" ]Environment variables は、テキスト文字列または JSON 値を Worker に付けるバインディングの一種です。
例:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker-dev",
"vars": {
"API_HOST": "example.com",
"API_ACCOUNT_ID": "example_user",
"SERVICE_X_DATA": {
"URL": "service-x-api.dev.example",
"MY_ID": 123
}
}
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker-dev"
[vars]
API_HOST = "example.com"
API_ACCOUNT_ID = "example_user"
[vars.SERVICE_X_DATA]
URL = "service-x-api.dev.example"
MY_ID = 123Hyperdrive バインディングを使うと、Worker 内から任意の Postgres データベースとやり取りし、クエリできます。
bindingstringrequired- バインディング名です。
idstringrequired- Hyperdrive 設定の ID です。
例:
{
// required for database drivers to function
"compatibility_flags": ["nodejs_compat_v2"],
"hyperdrive": [
{
"binding": "<BINDING_NAME>",
"id": "<ID>",
},
],
}compatibility_flags = [ "nodejs_compat_v2" ]
[[hyperdrive]]
binding = "<BINDING_NAME>"
id = "<ID>"Cloudflare Images を使うと、リモートソースに保存された画像の最適化、リサイズ、加工のための変換リクエストを送れます。
Images を Worker にバインドするには、次のオブジェクトの配列を images キーに割り当てます。
binding(必須)。Images API を参照するバインディング名です。
{
"images": {
"binding": "IMAGES", // i.e. available in your Worker on env.IMAGES
},
}[images]
binding = "IMAGES"Workers KV は、グローバルで低レイテンシのキーバリューデータストアです。少数の中央データセンターにデータを保存し、アクセス後に Cloudflare のデータセンターへキャッシュします。
KV 名前空間を Worker にバインドするには、次のオブジェクトの配列を kv_namespaces キーに割り当てます。
bindingstringrequired- KV 名前空間を参照するバインディング名です。
idstringrequired- KV 名前空間の ID です。
preview_idstringoptional- この KV 名前空間のプレビュー ID です。リモートリソースに対して開発する
wrangler dev --remoteを使うときは、このオプションが 必須 です(remote bindings では不要です)。ローカル開発では任意です。wrangler devはこの ID を KV 名前空間に使います。未指定の場合、wrangler devはidを使います。
- この KV 名前空間のプレビュー ID です。リモートリソースに対して開発する
例:
{
"kv_namespaces": [
{
"binding": "<BINDING_NAME1>",
"id": "<NAMESPACE_ID1>",
},
{
"binding": "<BINDING_NAME2>",
"id": "<NAMESPACE_ID2>",
},
],
}[[kv_namespaces]]
binding = "<BINDING_NAME1>"
id = "<NAMESPACE_ID1>"
[[kv_namespaces]]
binding = "<BINDING_NAME2>"
id = "<NAMESPACE_ID2>"AI Search は Cloudflare のマネージド検索サービスです。名前空間 は AI Search インスタンスの論理グループです。このバインディングは、名前空間内のすべてのインスタンスへのフルアクセスを与えます。
AI Search 名前空間を Worker にバインドするには、次のオブジェクトの配列を ai_search_namespaces キーに割り当てます。
bindingstringrequired- AI Search 名前空間を参照するバインディング名です。
namespacestringrequired- AI Search 名前空間の名前です。すべてのアカウントに
default名前空間が自動作成されます。名前空間が存在しない場合、Wrangler はデプロイ時に作成します。
- AI Search 名前空間の名前です。すべてのアカウントに
例:
{
"ai_search_namespaces": [
{
"binding": "<BINDING_NAME>",
"namespace": "default",
},
],
}[[ai_search_namespaces]]
binding = "<BINDING_NAME>"
namespace = "default"デフォルト名前空間 内の既存 AI Search インスタンスへ直接バインドするには、次のオブジェクトの配列を ai_search キーに割り当てます。このバインディングは list()、create()、delete() などの名前空間レベルの操作には対応しません。
bindingstringrequired- AI Search インスタンスを参照するバインディング名です。
instance_namestringrequired- AI Search インスタンスの名前です。デプロイ時にデフォルト名前空間に存在する必要があります。
例:
{
"ai_search": [
{
"binding": "<BINDING_NAME>",
"instance_name": "<INSTANCE_NAME>",
},
],
}[[ai_search]]
binding = "<BINDING_NAME>"
instance_name = "<INSTANCE_NAME>"Queues は Cloudflare のグローバルメッセージキューイングサービスです。配信保証 と メッセージのバッチ処理 を提供します。Workers でキューとやり取りするには、キューへメッセージを送るプロデューサー Worker と、キューからメッセージのバッチを取り出すコンシューマー Worker が必要です。1 つの Worker が複数の Queues へプロデュースし、複数の Queues からコンシュームできます。
プロデューサー Worker に Queues をバインドするには、次のオブジェクトの配列を [[queues.producers]] キーに割り当てます。
queuestringrequired- キューの名前です。Cloudflare ダッシュボードで使います。
bindingstringrequired- Worker 内でキューを参照するバインディング名です。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
binding = "MY_QUEUE"とbinding = "productionQueue"はどちらも有効な名前です。
- Worker 内でキューを参照するバインディング名です。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
delivery_delaynumberoptional- キューへ送るメッセージを遅延させる デフォルト秒数です。メッセージ単位またはバッチ単位で上書きできます。
例:
{
"queues": {
"producers": [
{
"binding": "<BINDING_NAME>",
"queue": "<QUEUE_NAME>",
"delivery_delay": 60, // Delay messages by 60 seconds before they are delivered to a consumer
},
],
},
}[[queues.producers]]
binding = "<BINDING_NAME>"
queue = "<QUEUE_NAME>"
delivery_delay = 60コンシューマー Worker に Queues をバインドするには、次のオブジェクトの配列を [[queues.consumers]] キーに割り当てます。
queuestringrequired- キューの名前です。Cloudflare ダッシュボードで使います。
max_batch_sizenumberoptional- 各バッチで許可される最大メッセージ数です。
max_batch_timeoutnumberoptional- バッチをコンシューマー Worker へ送る前に、メッセージがバッチを満たすまで待つ最大秒数です。
max_retriesnumberoptional- メッセージが失敗したとき、または
retryAll()が呼ばれたときの最大リトライ回数です。
- メッセージが失敗したとき、または
dead_letter_queuestringoptional- 少なくとも
max_retries回処理に失敗したメッセージを送る、別のキューの名前です。 dead_letter_queueが未定義の場合、繰り返し処理に失敗したメッセージは破棄されます。- 指定した名前のキューがない場合は自動作成されます。
- 少なくとも
max_concurrencynumberoptional- 同時に実行できるコンシューマーの最大数です。未設定の場合、呼び出し数は 現在サポートされる上限 までスケールします。
- コンシューマーのオートスケール(特にメッセージ再試行時)については Consumer concurrency を参照してください。
retry_delaynumberoptional- コンシューマーへ再配信する前に、再試行メッセージを遅延させる デフォルト秒数です。メッセージを再試行するとき に、メッセージ単位またはバッチ単位で上書きできます。
例:
{
"queues": {
"consumers": [
{
"queue": "my-queue",
"max_batch_size": 10,
"max_batch_timeout": 30,
"max_retries": 10,
"dead_letter_queue": "my-queue-dlq",
"max_concurrency": 5,
"retry_delay": 120, // Delay retried messages by 2 minutes before re-attempting delivery
},
],
},
}[[queues.consumers]]
queue = "my-queue"
max_batch_size = 10
max_batch_timeout = 30
max_retries = 10
dead_letter_queue = "my-queue-dlq"
max_concurrency = 5
retry_delay = 120Cloudflare R2 Storage を使うと、一般的なクラウドストレージサービスに伴う高額なエグレス帯域料金なしで、大量の非構造化データを保存できます。
R2 バケットを Worker にバインドするには、次のオブジェクトの配列を r2_buckets キーに割り当てます。
bindingstringrequired- R2 バケットを参照するバインディング名です。
bucket_namestringrequired- この R2 バケットの名前です。
jurisdictionstringoptional- 管轄が指定されている場合、この R2 バケットがある管轄です。Jurisdictional Restrictions を参照してください。
preview_bucket_namestringoptional- この R2 バケットのプレビュー名です。指定した場合、
wrangler devはこの名前を R2 バケットに使います。未指定の場合はbucket_nameを使います。wrangler dev --remoteを使うときはこのオプションが必須です(remote bindings では不要です)。
- この R2 バケットのプレビュー名です。指定した場合、
例:
{
"r2_buckets": [
{
"binding": "<BINDING_NAME1>",
"bucket_name": "<BUCKET_NAME1>",
},
{
"binding": "<BINDING_NAME2>",
"bucket_name": "<BUCKET_NAME2>",
},
],
}[[r2_buckets]]
binding = "<BINDING_NAME1>"
bucket_name = "<BUCKET_NAME1>"
[[r2_buckets]]
binding = "<BINDING_NAME2>"
bucket_name = "<BUCKET_NAME2>"Vectorize index を使うと、セマンティック検索、分類、その他のベクトル検索用途向けにベクトル埋め込みを挿入してクエリできます。
Vectorize インデックスを Worker にバインドするには、次のオブジェクトの配列を vectorize キーに割り当てます。
bindingstringrequired- Worker コードからバインドされたインデックスを参照するバインディング名です。
index_namestringrequired- バインドするインデックスの名前です。
例:
{
"vectorize": [
{
"binding": "<BINDING_NAME>",
"index_name": "<INDEX_NAME>",
},
],
}[[vectorize]]
binding = "<BINDING_NAME>"
index_name = "<INDEX_NAME>"サービスバインディングを使うと、インターネットを経由せずに別の Worker へ HTTP リクエストを送れます。リクエストはすぐに下流の Worker を呼び出すため、サードパーティサービスへのリクエストと比べてレイテンシが下がります。About Service Bindings を参照してください。
ほかの Worker を Worker にバインドするには、次のオブジェクトの配列を services キーに割り当てます。
bindingstringrequired- バインドした Worker を参照するバインディング名です。
servicestringrequired- Worker の名前です。
- 特定の environment の Worker にバインドするには、Worker 名のあとに環境名を付ける必要があります。形式は
<worker-name>-<environment-name>です。たとえばstaging環境のworker-nameという Worker にバインドする場合、serviceはworker-name-stagingにします。
entrypointstringoptional- バインドする entrypoint の名前です。entrypoint を指定しない場合は、Worker のデフォルトエクスポートが使われます。
例:
{
"services": [
{
"binding": "<BINDING_NAME>",
"service": "<WORKER_NAME>",
"entrypoint": "<ENTRYPOINT_NAME>",
},
],
}[[services]]
binding = "<BINDING_NAME>"
service = "<WORKER_NAME>"
entrypoint = "<ENTRYPOINT_NAME>"Assets を参照してください。
Workers Analytics Engine は、Workers からの分析、オブザーバビリティ、データロギングを提供します。Worker バインディングへデータポイントを書き込み、SQL API でデータをクエリします。
Analytics Engine データセットを Worker にバインドするには、次のオブジェクトの配列を analytics_engine_datasets キーに割り当てます。
bindingstringrequired- データセットを参照するバインディング名です。
datasetstringoptional- 書き込み先のデータセット名です。未指定の場合、バインディングと同じ名前がデフォルトになります。
例:
{
"analytics_engine_datasets": [
{
"binding": "<BINDING_NAME>",
"dataset": "<DATASET_NAME>",
},
],
}[[analytics_engine_datasets]]
binding = "<BINDING_NAME>"
dataset = "<DATASET_NAME>"クライアント認証が必要なオリジンと通信するため、Worker はサブリクエストで mTLS 用の証明書を提示できます。Wrangler は、これらの証明書のアップロードと管理に mtls-certificate コマンド を提供します。
Worker 向けの mTLS 証明書への binding を作るには、次の形のオブジェクト配列を mtls_certificates キーに割り当てます。
bindingstringrequired- 証明書を参照するバインディング名です。
certificate_idstringrequired- 証明書の ID です。Wrangler は
mtls-certificate uploadとmtls-certificate listコマンドでこれを表示します。
- 証明書の ID です。Wrangler は
mTLS 証明書バインディングを含む Wrangler 設定ファイルの例です。
{
"mtls_certificates": [
{
"binding": "<BINDING_NAME1>",
"certificate_id": "<CERTIFICATE_ID1>",
},
{
"binding": "<BINDING_NAME2>",
"certificate_id": "<CERTIFICATE_ID2>",
},
],
}[[mtls_certificates]]
binding = "<BINDING_NAME1>"
certificate_id = "<CERTIFICATE_ID1>"
[[mtls_certificates]]
binding = "<BINDING_NAME2>"
certificate_id = "<CERTIFICATE_ID2>"mTLS 証明書バインディングは、ランタイムで fetch メソッド 経由で保護されたオリジンと通信するために使えます。
Workers AI を使うと、自分のコードから Cloudflare ネットワーク上で機械学習モデルを実行できます。Workers、Pages、または REST API 経由のどこからでも使えます。
ほかのバインディングと異なり、このバインディングは Worker プロジェクトあたり 1 つの AI バインディングに制限されます。
bindingstringrequired- バインディング名です。
例:
{
"ai": {
"binding": "AI", // available in your Worker code on `env.AI`
},
}[ai]
binding = "AI"Workflows を使うと、Workers プラットフォーム上で耐久性のある多段階アプリケーションを構築できます。Workflow バインディングにより、Worker からプログラムで Workflow インスタンスを作成・管理できます。
Workflows を Worker にバインドするには、次のオブジェクトの配列を workflows キーに割り当てます。
bindingstringrequired- Worker 内で Workflow を参照するバインディング名です。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
binding = "MY_WORKFLOW"は有効な名前です。
- Worker 内で Workflow を参照するバインディング名です。バインディングは 有効な JavaScript 変数名 ↗ である必要があります。例:
namestringrequired- Workflow の名前です。
class_namestringrequired- エクスポートされた Workflow クラスの名前です。
class_nameは、Worker コードからエクスポートした Workflow クラス名と一致する必要があります。
- エクスポートされた Workflow クラスの名前です。
script_namestringoptional- Workflow クラスが定義されている Worker スクリプトの名前です。バインディングを設定する Worker と異なる Worker に Workflow がある場合にのみ必要です。
schedulesstring[]optional- この Workflow の新しいインスタンスを自動作成する cron スケジュールのリストです。
- トップレベルの
triggers.cronsと別のscheduledハンドラーを定義せずに、定期的な間隔で Workflow を実行したいときに使います。 - Workflow スケジュールに対応する Wrangler リリースを使います。ローカルスキーマが
schedulesを認識しない場合は、先に Wrangler を更新します。
例:
{
"workflows": [
{
"binding": "<BINDING_NAME>",
"name": "<WORKFLOW_NAME>",
"class_name": "<CLASS_NAME>",
},
],
}[[workflows]]
binding = "<BINDING_NAME>"
name = "<WORKFLOW_NAME>"
class_name = "<CLASS_NAME>"静的アセット を使うと、Workers 上でフロントエンドウェブサイトを実行できます。アセットのディレクトリ、任意のランタイムバインディング、ルーティング設定オプションを設定できます。
Worker あたり設定できるアセットのコレクションは 1 つだけです。
次のオプションは assets キーの下で使えます。
directorystringoptional- 配信する静的アセットのフォルダーです。
- Cloudflare Vite plugin を使う場合は不要です。プラグインはクライアントのビルド出力を自動で指します。
bindingstringoptional- アセットを参照するバインディング名です。任意で、
mainで Worker スクリプトが設定されているときだけ役立ちます。
- アセットを参照するバインディング名です。任意で、
run_worker_firstboolean | string[]optional, defaults to false- 静的アセットを直接取得するか、Worker スクリプトを呼び出すかを制御します。boolean(
true/false)か、glob パターン(*)と例外パターン(!プレフィックス)に対応したルートパターン文字列の配列です。パターンは/または!/で始まる必要があります。最大 100 エントリまでです(重複も上限に数えます)。run_worker_first使用時のアセット取得の詳細を参照してください。
- 静的アセットを直接取得するか、Worker スクリプトを呼び出すかを制御します。boolean(
html_handling:"auto-trailing-slash" | "force-trailing-slash" | "drop-trailing-slash" | "none"optional, defaults to "auto-trailing-slash"- HTML コンテンツ向けリクエストのリダイレクトとリライトを決めます。各オプションの詳細は assets routing を参照してください。
not_found_handling:"single-page-application" | "404-page" | "none"optional, defaults to "none"- アセットに対応しないリクエストの扱いを決めます。ルーティング動作 の各オプションを参照してください。
例:
{
"assets": {
"directory": "./public",
"binding": "ASSETS",
"html_handling": "force-trailing-slash",
"not_found_handling": "404-page",
},
}[assets]
directory = "./public"
binding = "ASSETS"
html_handling = "force-trailing-slash"
not_found_handling = "404-page"run_worker_first をルートパターンの配列で設定することもできます。
{
"assets": {
"directory": "./public",
"binding": "ASSETS",
"run_worker_first": [
"/api/*", // API calls go to Worker first
"!/api/docs/*", // EXCEPTION: For /api/docs/*, try static assets first
],
},
}[assets]
directory = "./public"
binding = "ASSETS"
run_worker_first = [ "/api/*", "!/api/docs/*" ]containers フィールドを使い、Worker と一緒に実行する Containers を定義できます。
次のオプションが使えます。
imagestringrequired- コンテナに使うイメージです。
Dockerfileへのローカルパス(この場合wrangler deployがイメージをビルドしてプッシュします)か、イメージ参照です。対応レジストリは Cloudflare Registry、Docker Hub、Amazon ECR、Google Artifact Registry です。詳細は Image Management を参照してください。
- コンテナに使うイメージです。
class_namestringrequired- 対応する Durable Object クラス名です。これにより、この Durable Object はコンテナ対応 Durable Object になり、各インスタンスがコンテナを制御できます。詳細は Durable Object Container Methods を参照してください。
instance_typestringoptional- コンテナのインスタンスタイプです。コンテナインスタンスに与えるメモリ、CPU、ディスク量を決めます。現在のオプションは
"lite"、"basic"、"standard-1"、"standard-2"、"standard-3"、"standard-4"です。デフォルトは"lite"です。詳細は インスタンスタイプのドキュメント を参照してください。 - カスタムインスタンスタイプを指定する場合は カスタムインスタンスタイプ を参照してください。
- コンテナのインスタンスタイプです。コンテナインスタンスに与えるメモリ、CPU、ディスク量を決めます。現在のオプションは
max_instancesstringoptional- 任意の時点で同時実行したいコンテナインスタンスの最大数です。停止中のコンテナはこの数に含まれません。全体ではこの数より多くのコンテナインスタンスがあってもかまいませんが、同時にアクティブに実行できるのはこの数までです。コンテナ開始リクエストがこの上限を超えると、そのリクエストはエラーになります。
- デフォルトは 20 です。
- この値は、Cloudflare のネットワーク上の本番実行時にのみ適用されます。ローカル開発ではこの制限は適用されないため、指定より多くのインスタンスを実行できます。
namestringoptional- コンテナの名前です。識別子として使います。デフォルトは Worker 名、クラス名、環境の組み合わせです。
image_build_contextstringoptional- アプリケーションのビルドコンテキストです。デフォルトは
imageのディレクトリです。
- アプリケーションのビルドコンテキストです。デフォルトは
image_varsRecord<string, string>optional- ビルド時変数です。
docker buildの--build-argと同等です。ランタイム でコンテナへ環境変数を渡したい場合は、シークレットバインディングまたは Container クラスのenvVarsを使います。
- ビルド時変数です。
rollout_active_grace_periodnumberoptional- ロールアウト 中に、コンテナインスタンスが置き換え可能になるまでに Durable Object へ接続済みである必要がある最小秒数です。デフォルトは
0です。--containers-rollout=immediateでも適用されます。
- ロールアウト 中に、コンテナインスタンスが置き換え可能になるまでに Durable Object へ接続済みである必要がある最小秒数です。デフォルトは
rollout_step_percentagenumber | number[]optional- 各 ロールアウト ステップで更新するコンテナインスタンスの割合です。単一の数値はそのステップサイズ(
5、10、20、25、50、または100)を使います。配列は10から100までの昇順の整数値を含み、100で終わり、最大 10 エントリ、かつmax_instancesより多くない必要があります。値は累積です。max_instancesが未指定または2未満の場合のデフォルトは100、それ以外のデフォルトは[10, 100]です。1 回のデプロイでは--containers-rollout=immediateで上書きできます(単一の 100% ステップ。猶予期間は上書きしません)。
- 各 ロールアウト ステップで更新するコンテナインスタンスの割合です。単一の数値はそのステップサイズ(
sshobjectoptional- Wrangler 経由の SSH 設定です。SSH を参照してください。
wrangler_sshobjectoptional deprecated, use `ssh`sshの非推奨エイリアスです。後方互換のためまだサポートされます。
authorized_keysobject[]optional- Container の
authorized_keysファイルへ追加する公開鍵です。
- Container の
constraintsobjectoptional- コンテナの配置制約です。詳細は Containers placement を参照してください。
constraints.regionsstring[]optional- コンテナの配置を特定の地理的リージョンに制限します。有効な値:
"ENAM"、"WNAM"、"EEUR"、"WEUR"、"APAC"、"SAM"、"ME"、"OC"、"AFR"。
- コンテナの配置を特定の地理的リージョンに制限します。有効な値:
constraints.jurisdictionstringoptional- コンテナをコンプライアンス境界に制限します。有効な値:
"eu"、"fedramp"。
- コンテナをコンプライアンス境界に制限します。有効な値:
{
"containers": [
{
"class_name": "MyContainer",
"image": "./Dockerfile",
"max_instances": 10,
"instance_type": "basic", // Optional, defaults to "lite"
"image_vars": {
"FOO": "BAR",
},
"constraints": {
"regions": ["ENAM", "WNAM"],
"jurisdiction": "fedramp",
},
},
],
"durable_objects": {
"bindings": [
{
"name": "MY_CONTAINER",
"class_name": "MyContainer",
},
],
},
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": ["MyContainer"],
},
],
}[[containers]]
class_name = "MyContainer"
image = "./Dockerfile"
max_instances = 10
instance_type = "basic"
[containers.image_vars]
FOO = "BAR"
[containers.constraints]
regions = [ "ENAM", "WNAM" ]
jurisdiction = "fedramp"
[[durable_objects.bindings]]
name = "MY_CONTAINER"
class_name = "MyContainer"
[[migrations]]
tag = "v1"
new_sqlite_classes = [ "MyContainer" ]名前付きインスタンスタイプ の代わりに、vCPU、メモリ、ディスクを個別に設定してカスタムインスタンスタイプを指定できます。 カスタムインスタンスタイプの制約は 制限のドキュメント を参照してください。
次のオプションが使えます。
vcpunumberoptional- コンテナが使う vCPU です。デフォルトは
0.0625(1/16 vCPU)です。
- コンテナが使う vCPU です。デフォルトは
memory_mibnumberoptional- コンテナが使うメモリ(MiB)です。デフォルトは
256です。
- コンテナが使うメモリ(MiB)です。デフォルトは
disk_mbnumberoptional- コンテナが使うディスク(MB)です。デフォルトは
2000(2GB)です。
- コンテナが使うディスク(MB)です。デフォルトは
{
"containers": [
{
"image": "./Dockerfile",
"instance_type": {
"vcpu": 1,
"memory_mib": 1024,
"disk_mb": 4000,
},
},
],
}[[containers]]
image = "./Dockerfile"
[containers.instance_type]
vcpu = 1
memory_mib = 1_024
disk_mb = 4_000Wrangler 経由で Container インスタンスへ SSH 接続するための設定です。SSH で Containers へ接続する手順は SSH を参照してください。
次のオプションが使えます。
enabledbooleanoptional- Wrangler 経由の SSH を有効にするかどうか。デフォルトは
trueです。SSH アクセスを無効にするにはfalseにします。
- Wrangler 経由の SSH を有効にするかどうか。デフォルトは
portnumberoptional- SSH サービスが使うポートです。デフォルトは
22です。
- SSH サービスが使うポートです。デフォルトは
authorized key は、Container へ SSH するために使える公開鍵です。
キーのプロパティは次のとおりです。
namestringrequired- キーの表示名です。
public_keystringrequired- 公開鍵そのものです。
- 現在サポートされるキータイプは
ssh-ed25519のみです。
Wrangler は 2 つのモードで動作できます。デフォルトのバンドリングモードと --no-bundle モードです。
バンドリングモードでは、Wrangler はコードのすべてのインポートを走査し、単一の JavaScript「エントリポイント」ファイルを生成します。
インポートされたソースコードは、このエントリポイントファイルへ「インライン / バンドル」されます。
Worker へ追加モジュールを含めることもできます。これらはエントリポイントと一緒にアップロードされます。
Worker に含める追加モジュールは rules キーで指定し、Worker が呼び出されたときにインポートできるようにします。
rules キーは次のオブジェクトの配列になります。
typestringrequired- モジュールの型です。次のいずれかである必要があります:
ESModule、CommonJS、CompiledWasm、Text、Data。
- モジュールの型です。次のいずれかである必要があります:
globsstring[]required- glob ルールの配列です(例:
["**/*.md"])。glob ↗ を参照してください。
- glob ルールの配列です(例:
fallthroughbooleanoptional- ルールで
trueにすると、同じTypeに対して複数のルールを持てます。
- ルールで
例:
{
"rules": [
{
"type": "Text",
"globs": ["**/*.md"],
"fallthrough": true,
},
],
}[[rules]]
type = "Text"
globs = [ "**/*.md" ]
fallthrough = trueWorker 内では、次のようにこれらのモジュールをインポートして参照できます。
import markdown from "./example.md";
export default {
async fetch() {
return new Response(markdown);
},
};通常、Wrangler は上記の例のように、ソースコードで静的にインポートされた追加モジュールだけを含めます。
設定ファイルで find_additional_modules を true にすると、Wrangler は base_dir 以下のファイルツリーを走査します。
rules に一致するファイルも、デプロイする Worker にバンドルされない外部モジュールとして含まれます。
base_dir のデフォルトは、main エントリポイントを含むディレクトリです。
詳細と例は https://developers.cloudflare.com/workers/wrangler/bundling/ ↗ を参照してください。
デフォルトでは、Python Workers は Worker のルート(Wrangler 設定ファイルと同じ階層)にある python_modules 内のファイルとフォルダーをバンドルします。
このディレクトリ内のファイルはベンダーしたパッケージを表し、pywrangler ツールがパッケージをコピーする場所です。場合によっては、このフォルダー内のファイルが大きすぎることがあります。Worker がそれらを必要としないなら、バンドルサイズが無駄に増えるだけです。
これを直すには、特定のファイルを除外できます。そのためには python_modules.exclude オプションを使います。例:
{
"python_modules": {
"exclude": ["**/*.pyc", "**/__pycache__"],
},
}[python_modules]
exclude = [ "**/*.pyc", "**/__pycache__" ]これにより、python_modules 内の任意のサブディレクトリにある .pyc ファイルと __pycache__ ディレクトリが除外されます。
デフォルトでは python_modules.exclude は ["**/*.pyc"] です。別の値に設定するときは、これを含めてください。
ローカルプロトコルやポートなど、ローカル開発のさまざまな側面を設定できます。
ipstringoptional
- ローカル開発サーバーが待ち受ける IP アドレスです。デフォルトは
localhostです。
portnumberoptional
- ローカル開発サーバーが待ち受けるポートです。デフォルトは
8787です。
local_protocolstringoptional- ローカル開発サーバーがリクエストを待ち受けるプロトコルです。デフォルトは
httpです。
- ローカル開発サーバーがリクエストを待ち受けるプロトコルです。デフォルトは
upstream_protocolstringoptional- ローカル開発サーバーがリクエストを転送するプロトコルです。デフォルトは
httpsです。
- ローカル開発サーバーがリクエストを転送するプロトコルです。デフォルトは
hoststringoptional- リクエストの転送先ホストです。デフォルトは Worker の最初の
routeのホストです。
- リクエストの転送先ホストです。デフォルトは Worker の最初の
enable_containersbooleanoptional- コンテナが設定されている場合、ローカル開発セッション中にコンテナを有効にするかどうかを決めます。デフォルトは
trueです。falseにすると、コンテナとやり取りするコードを呼び出さない限り、Docker などのコンテナツールなしでアプリケーションのほかの部分を開発できます。
- コンテナが設定されている場合、ローカル開発セッション中にコンテナを有効にするかどうかを決めます。デフォルトは
container_enginestringoptional- Containers のローカル開発に使います。Wrangler は、コンテナエンジンと通信するための正しいソケットを自動検出します。うまくいかない場合(通常は Container への接続時に
internal errorとして現れます)、このオプションでソケットパスを設定できます。環境変数DOCKER_HOSTでも設定できます。
- Containers のローカル開発に使います。Wrangler は、コンテナエンジンと通信するための正しいソケットを自動検出します。うまくいかない場合(通常は Container への接続時に
generate_typesbooleanoptional- Worker 設定から型を生成します。デフォルトは
falseです。
- Worker 設定から型を生成します。デフォルトは
{
"dev": {
"ip": "192.168.1.1",
"port": 8080,
"local_protocol": "http",
},
}[dev]
ip = "192.168.1.1"
port = 8_080
local_protocol = "http"Secrets は、Worker に 暗号化されたテキスト値を付ける バインディングの一種です。
secrets 設定プロパティを使うと、Worker が必要とするシークレット名を Wrangler 設定ファイルで宣言できます。必須シークレットはローカル開発とデプロイ時に検証され、型生成の信頼できる情報源として使われます。
{
"secrets": {
"required": ["API_KEY", "DB_PASSWORD"],
},
}[secrets]
required = [ "API_KEY", "DB_PASSWORD" ]型生成
いずれかの設定レベルで secrets が定義されている場合、wrangler types は secrets.required に列挙された名前から型付きバインディングを生成し、.dev.vars や .env ファイルからシークレット名を推論しなくなります。これにより、それらのファイルがない環境でも型生成を実行できます。
環境ごとのシークレットにも対応します。名前付き環境ごとに独自のインターフェイスが作られ、集約された Env 型では一部の環境にしかないシークレットが任意になります。
デプロイ
secrets が定義されている場合、wrangler deploy と wrangler versions upload は、操作が成功する前に secrets.required のすべてのシークレットが Worker に設定されていることを検証します。必須シークレットが欠けている場合、コマンドは失敗し、設定が必要なシークレットを列挙したエラーを出します。
ローカル開発で使うシークレットは、Wrangler 設定ファイルと同じディレクトリの .dev.vars または .env に置きます。
これらのファイルは dotenv ↗ の構文で記述します。例:
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"Cloudflare 環境ごとに異なるシークレットを設定するには、.dev.vars.<environment-name> または .env.<environment-name> という名前のファイルを作成します。
ローカル開発で Cloudflare 環境を選ぶと、対応する環境固有のファイルが、汎用の .dev.vars(または .env)より先に読み込まれます。
.dev.vars.<environment-name>を使う場合、すべてのシークレットを環境ごとに定義する必要があります。.dev.vars.<environment-name>が存在すると、そのファイルだけが読み込まれ、.dev.varsは読み込まれません。- 一方、一致する
.envファイルはすべて読み込まれ、値がマージされます。各変数には、もっとも具体的なファイルの値が使われます。優先順位は次のとおりです。.env.<environment-name>.local(もっとも具体的).env.local.env.<environment-name>.env(もっとも汎用)
特定のパッケージをインポートするすべての呼び出しを、好きなモジュールへ置き換えるよう Wrangler を設定できます。alias フィールドで設定します。
{
"alias": {
"foo": "./replacement-module-filepath",
},
}[alias]
foo = "./replacement-module-filepath"export const bar = "baz";上記の設定では、モジュール foo への import または require() の呼び出しは、置き換えモジュールを指すようエイリアスされます。
import { bar } from "foo";
console.log(bar); // returns "baz"Wrangler が Worker をバンドルするとき、依存関係の解決に失敗することがあります。そのような依存関係にエイリアスを設定すると、簡単に直せます。
ただし先に、そのパッケージがプロジェクトに正しくインストールされていることを確認します。package.json の直接依存関係として、または推移的依存関係としてです。
エイリアスが依存関係の問題の正しい解決策である場合、いくつかの選択肢があります。
- 代替実装 — モジュールのロジックを Worker 互換の方法で実装し、機能が失われないようにします。
- no-op モジュール — モジュールのロジックが未使用または無関係なら、エイリアスを空ファイルへ向けます。バンドリング問題を直しつつ、モジュールを no-op にします。
- ランタイムエラー — モジュールのロジックが未使用で、Worker がそれを使おうとすべきでない場合(セキュリティ脆弱性など)、エイリアスをトップレベルの
throw文だけのファイルへ向けます。バンドリング問題を直しつつ、モジュールが実際に使われないようにします。
モジュールエイリアスを使い、Workers では動かない NPM パッケージの実装を提供できます。その NPM パッケージに間接的に依存している場合、つまり Worker の依存関係の依存関係であっても同様です。
たとえば、一部の NPM パッケージは node-fetch ↗ に依存します。これは、fetch() API のポリフィルを、Node.js に組み込まれる前に提供していたパッケージです。
Workers では node-fetch は不要です。fetch() API は Workers ランタイムが提供するからです。また node-fetch は Workers では動きません。現在未対応の http / https モジュールの Node.js API に依存するためです。
node-fetch のすべてのインポートを、Workers ランタイムに組み込みの fetch() API へ直接向けるようエイリアスできます。
{
"alias": {
"node-fetch": "./fetch-polyfill",
},
}[alias]
node-fetch = "./fetch-polyfill"export default fetch;モジュールエイリアスを使い、Workers ランタイムにまだない Node.js API の独自ポリフィル実装を提供できます。
たとえば、依存している NPM パッケージが fs.readFile ↗ を呼ぶとします。Worker の Wrangler 設定ファイルに次を追加して、fs モジュールをエイリアスできます。
{
"alias": {
"fs": "./fs-polyfill",
},
}[alias]
fs = "./fs-polyfill"export function readFile() {
// ...
}多くの場合、これで依存関係を動かすのに十分な API だけを提供できます。Cloudflare Workers の Node.js API サポートの詳細は、Cloudflare Workers Node.js API のドキュメント を参照してください。
ソースマップ は、コンパイルおよび minify されたコードを、書いた元のコードへ戻します。ソースマップは、JavaScript ランタイムが返すスタックトレースと組み合わされ、スタックトレースを表示します。
upload_source_mapsbooleanupload_source_mapsがtrueのとき、Wrangler はwrangler deployまたはwrangler versions deployの実行時にソースマップファイルを自動生成してアップロードします。
例:
{
"upload_source_maps": true,
}upload_source_maps = trueWorkers Sites を使うと、静的ウェブサイト、または Vue や React などのフレームワークを使った動的ウェブサイトを Workers 上でホストできます。
bucketstringrequired- 静的アセットを含むディレクトリです。Wrangler 設定ファイルからの相対パスである必要があります。
includestring[]optional- バケット位置のファイル名またはディレクトリ名に一致する、
.gitignore形式のパターンの排他リストです。一致した項目だけがアップロードされます。
- バケット位置のファイル名またはディレクトリ名に一致する、
excludestring[]optional- バケット内のファイルまたはディレクトリに一致し、アップロードから除外すべき
.gitignore形式のパターンのリストです。
- バケット内のファイルまたはディレクトリに一致し、アップロードから除外すべき
例:
{
"site": {
"bucket": "./public",
"include": ["upload_dir"],
"exclude": ["ignore_dir"],
},
}[site]
bucket = "./public"
include = [ "upload_dir" ]
exclude = [ "ignore_dir" ]企業ネットワークにはしばしばプロキシがあり、接続の問題を起こすことがあります。適切なプロキシ情報で Wrangler を設定するには、次の環境変数を追加 します。
https_proxyHTTPS_PROXYhttp_proxyHTTP_PROXY
macOS で設定するには、Wrangler コマンドの前に HTTP_PROXY=http://<YOUR_PROXY_HOST>:<YOUR_PROXY_PORT> を付けます。
例:
$ HTTP_PROXY=http://localhost:8080 wrangler devIT チームがコンピューターのプロキシ設定を構成している場合、このリストで最初の空でない環境変数が、Wrangler の送信リクエストに使われることに注意してください。
たとえば https_proxy と http_proxy の両方が設定されている場合、Wrangler は送信リクエストに https_proxy だけを使います。
Worker 設定の信頼できる情報源として Wrangler 設定ファイルを扱い、Wrangler を使っている場合は Cloudflare ダッシュボードから Worker を変更しないことを推奨します。
Cloudflare ダッシュボードから Worker を変更する必要がある場合、ダッシュボードは Wrangler 設定ファイルへコピーするための TOML スニペットを生成します。これにより、Wrangler 設定ファイルを常に最新に保てます。
Cloudflare ダッシュボードで環境変数を変更すると、次回のデプロイで Wrangler がそれらを上書きします。この動作を無効にするには、Wrangler 設定ファイルに keep_vars = true を追加します。
ダッシュボードでルートを変更すると、次回のデプロイで Wrangler は Wrangler 設定ファイルに設定したルートで上書きします。ルートを Cloudflare ダッシュボードだけで管理するには、Wrangler 設定ファイルから route と routes キーを削除します。次に Wrangler 設定ファイルへ workers_dev = false を追加します。詳細は Deprecations を参照してください。
Wrangler は、wrangler secret delete <key> を実行しない限り、シークレット(暗号化された環境変数)を削除しません。
一部のフレームワークツールやカスタムの事前ビルド処理は、Worker コードのデプロイに使う変更済み Wrangler 設定を生成します。
この場合、ツールは特別な .wrangler/deploy/config.json ファイルも作り、Wrangler にユーザーの元の設定ではなく生成された設定を使うようリダイレクトします。
Wrangler がこの生成された設定を使うのは、次のデプロイおよび開発関連コマンドだけです。
wrangler deploywrangler devwrangler versions uploadwrangler versions deploywrangler pages deploywrangler pages functions build
これらのコマンドを実行するとき、Wrangler は現在の作業ディレクトリからディレクトリツリーを上へ探し、パス .wrangler/deploy/config.json のファイルを探します。
このファイルには、次の形式の単一 JSON オブジェクトだけを含める必要があります。
{ "configPath": "../../path/to/wrangler.jsonc" }この config.json ファイルがある場合、Wrangler は configPath(.wrangler/deploy/config.json ファイルからの相対)をたどり、現在のコマンドで読み込んで使う生成済み Wrangler 設定ファイルを見つけます。
Wrangler は、設定がユーザーの設定ファイルとは別のファイルへリダイレクトされたことを示すメッセージを表示します。
生成された設定ファイルには environments を含めないでください。 そのようなファイルは必要なときにビルドステップの一部として作られるべきで、すでに特定の環境を対象にしているためです。これらのビルドツールは、環境ごとに別々のデプロイ設定ファイルを生成する必要があります。
リダイレクトされた設定の一般的な例は、カスタムビルドツールまたはフレームワークが、ユーザーの設定をデプロイ用に変更し、dist ディレクトリへ新しい設定を生成する場合です。
-
まず、ユーザーは Cloudflare Workers リソースを使うコードを書き、次のようなユーザーの Wrangler 設定ファイルで設定します。
{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "my-worker", "main": "src/index.ts", "vars": { "MY_VARIABLE": "production variable", }, "env": { "staging": { "vars": { "MY_VARIABLE": "staging variable", }, }, }, }"$schema" = "./node_modules/wrangler/config-schema.json" name = "my-worker" main = "src/index.ts" [vars] MY_VARIABLE = "production variable" [env.staging.vars] MY_VARIABLE = "staging variable"この設定は
mainをユーザーのコードエントリポイントへ向け、2 つの異なる環境でMY_VARIABLE変数を定義します。 -
次に、ユーザーは特定の環境(例:
staging)向けのカスタムビルドを実行します。これにより、ソースコードのエントリポイントと環境固有の設定を見つけるために、ユーザーの Wrangler 設定ファイルが読み込まれます。> my-tool build --env=staging -
my-toolは、コンパイル済みコードと、指定した環境の設定だけを含む新しい生成済みデプロイ設定ファイルの両方を含むdistディレクトリを生成します。 また、Wrangler を新しい生成済みデプロイ設定ファイルへリダイレクトする.wrangler/deploy/config.jsonファイルも作ります。- dist/
- index.js
- wrangler.jsonc
- .wrangler/
- deploy/
- config.json
- deploy/
- dist/
生成された dist/wrangler.jsonc には次のような内容が入ります。
{
"name": "my-worker",
"main": "./index.js",
"vars": {
"MY_VARIABLE": "staging variable"
}
}これで main プロパティは生成されたコードのエントリポイントを指し、環境は定義されず、
MY_VARIABLE 変数は staging 環境の値に解決されます。
そして .wrangler/deploy/config.json には、生成された設定ファイルへのパスが含まれます。
{
"configPath": "../../dist/wrangler.jsonc"
}