Skip to content

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

Workers とバインディングに接続する

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

コンテナは、outbound handlers を通じて Workers bindings(KV、R2、D1、Durable Objects など)にアクセスできます。outbound handler は、コンテナからの HTTP リクエストを傍受し、Workers ランタイム内で実行します。設定済みのバインディングは、すべてそこで使えます。

コンテナは仮想ホスト名(例: http://my.kv/some-key)へ通常の HTTP リクエストを送り、outbound handler がバインドしたリソースで解決します。コンテナ内に SDK やクライアントライブラリは不要です。

outbound handler でバインディングを使う

仮想ホスト名ごとに outboundByHost handler を定義します。env 引数で、Wrangler 設定に宣言したすべてのバインディングへアクセスできます。

export class MyContainer extends Container {}

MyContainer.outboundByHost = {
	"my.kv": async (request, env, ctx) => {
		const url = new URL(request.url);
		const key = url.pathname.slice(1);
		const value = await env.KV.get(key);
		return new Response(value);
	},
	"my.r2": async (request, env, ctx) => {
		const url = new URL(request.url);
		// Scope access to this container's ID
		const path = `${ctx.containerId}${url.pathname}`;
		const object = await env.R2.get(path);
		return new Response(object?.body ?? null, { status: object ? 200 : 404 });
	},
};

コンテナが http://my.kv/some-key を呼び出すと、handler が KV バインディングで解決します。http://my.r2/file.png への呼び出しは、現在のコンテナインスタンスにスコープして R2 から読み取ります。

Durable Object の状態にアクセスする

ctx 引数は containerId を公開します。これにより、outbound handler からそのコンテナ自身の Durable Object とやり取りできます。

"get-state.do": async (request, env, ctx) => {
  const id = env.MY_CONTAINER.idFromString(ctx.containerId);
  const stub = env.MY_CONTAINER.get(id);
  // Assumes getStateForKey is defined on your DO
  return stub.getStateForKey(request.body);
},

関連リソース

役に立ちましたか?