Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

バージョンの上書き

最終更新 Markdown で表示Agent セットアップ

バージョンの上書き(version overrides)を使うと、現在のデプロイに含まれる Worker の特定バージョンへリクエストを送れます。トラフィックが 0% のバージョンも対象です。

バージョンの上書きを設定する

リクエストでバージョンの上書きを指定するには、Worker へのリクエストに Cloudflare-Workers-Version-Overrides ヘッダーを付けます。Cloudflare-Workers-Version-OverridesDictionary Structured Header で、複数のキーと値のペアを含められます。各 キー は、上書きを適用する Worker の名前です。 は使うバージョン ID で、String である必要があります。例:

curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'

バージョンの上書きが適用されたかを確認する

リクエストのバージョン上書きが適用されない理由はいくつかあります。例:

  • デプロイに、指定したバージョンが含まれていない場合があります。直近の変更後、グローバルに利用できるようになるまで数秒かかることがあります。
  • ヘッダーの値が、有効な Dictionary ではない場合があります。

バージョンの上書きが適用されない場合、リクエストは段階的デプロイの設定どおり、割合に従ってルーティングされます。

呼び出された Worker のバージョンは、Observability で確認できます。Logpush などでも確認できます。クライアントへ実行バージョンを伝えたい場合(デバッグを速く、分かりやすくするためなど)は、version metadata バインディング を使い、Worker の応答にバージョン ID を返せます。

スモークテストの例

外部トラフィックの割合を段階的に上げる前に、本番で新しいバージョンを試したいことがあります。これは一般に「スモークテスト(smoke test)」と呼ばれます。

この例では、最初はすべてのトラフィックを 1 つのバージョンへ向けるデプロイです。

バージョン ID 割合
db7cd8d3-4425-4fe7-8c81-01bf963b6067 100%

wrangler versions deploy で新しいデプロイを作成し、前のバージョンを 100% のまま、新しいバージョンを 0% にします。

バージョン ID 割合
dc8dcd28-271b-4367-9840-6c244f84cb40 0%
db7cd8d3-4425-4fe7-8c81-01bf963b6067 100%

新しいバージョンを 100% まで段階的に上げる前に、バージョンの上書きでテストします。

curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'

サービスバインディング

サービスバインディング を使い、ある Worker から別の Worker へサブリクエストを送るときも、Cloudflare-Workers-Version-Overrides ヘッダーを設定できます。上流の Worker から、下流の Worker の特定バージョンをテストできます。

元のリクエストオブジェクトを転送すると、上書きヘッダーは自動で引き継がれます。

// The override header from the inbound request is forwarded to the downstream Worker.
export default {
	async fetch(request, env) {
		return env.MY_SERVICE.fetch(request);
	},
};
// The override header from the inbound request is forwarded to the downstream Worker.
export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		return env.MY_SERVICE.fetch(request);
	},
};

上書きヘッダーを明示的に設定することもできます。

// Replace the version ID with the target version from `wrangler versions list`.
export default {
	async fetch(request, env) {
		const response = await env.MY_SERVICE.fetch("https://example.com/", {
			headers: {
				"Cloudflare-Workers-Version-Overrides":
					'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
			},
		});
		return response;
	},
};
// Replace the version ID with the target version from `wrangler versions list`.
export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		const response = await env.MY_SERVICE.fetch("https://example.com/", {
			headers: {
				"Cloudflare-Workers-Version-Overrides":
					'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
			},
		});
		return response;
	},
};

関連リソース

役に立ちましたか?