ContainerとSandboxをWorkersに簡単に接続
2026年3月26日
ContainerとSandboxがHTTP経由でWorkersに直接接続することをサポートしました。これにより、特定のホスト名でコンテナ内からWorkers関数やKVやR2などのbindingsを呼び出すことができます。
Workerコードの実行
任意のHTTPリクエストをキャプチャするoutboundハンドラーを定義するか、個別のホスト名とIPへのリクエストをキャプチャするoutboundByHostを使用します。
export class MyApp extends Sandbox {}
MyApp.outbound = async (request, env, ctx) => {
return await someWorkersFunction(request.body);
};
MyApp.outboundByHost = {
"my.worker": async (request, env, ctx) => {
return await anotherFunction(request.body);
},
};
この例では、コンテナからhttp://my.workerへのリクエストはoutboundByHost内で定義された関数を実行し、その他のHTTPリクエストはoutboundハンドラーを実行します。これらのハンドラーはコンテナサンドボックスの外側で、完全にWorkersランタイム内で実行されます。
TLSサポートは近日公開予定
ContainerとSandboxは現在HTTPトラフィックのみをインターセプトします。HTTPSインターセプションは近日公開予定です。これにより、認証情報の注入のためにWorkersを透過プロキシとして使用できるようになります。
これはHTTPを使用しているだけですが、Workersへのトラフィックは安全で、コンテナと同じマシン上で実行されます。必要に応じて、Worker自体からリクエストをTLSにアップグレードすることもできます。
Workers bindingsへのアクセス
各ハンドラーはenvにアクセスできるため、Wrangler configで設定された任意のbindingを呼び出すことができます。コンテナ内のコードはそのホスト名に標準的なHTTPリクエストを行い、outbound Workerがそれをbinding呼び出しに変換します。
export class MyApp extends Sandbox {}
MyApp.outboundByHost = {
"my.kv": async (request, env, ctx) => {
const key = new URL(request.url).pathname.slice(1);
const value = await env.KV.get(key);
return new Response(value ?? "", {
status: value ? 200 : 404
});
},
"my.r2": async (request, env, ctx) => {
const key = new URL(request.url).pathname.slice(1);
const object = await env.BUCKET.get(key);
return new Response(object?.body ?? "", {
status: object ? 200 : 404
});
},
};
これで、コンテナサンドボックス内からcurl http://my.kv/some-keyでWorkers KVにアクセスし、curl http://my.r2/some-objectでR2にアクセスできます。
Durable Object状態へのアクセス
ctx.containerIdを使用して、コンテナの自動プロビジョニングされたDurable Objectを参照します。
export class MyContainer extends Container {}
MyContainer.outboundByHost = {
"get-state.do": async (request, env, ctx) => {
const id = env.MY_CONTAINER.idFromString(ctx.containerId);
const stub = env.MY_CONTAINER.get(id);
return stub.getStateForKey(request.body);
},
};
これにより、任意のコンテナインスタンスと状態を関連付ける簡単な方法が提供され、組み込みのSQLiteデータベースが含まれます。
今すぐ始める
outbound Workersを使用するには、@cloudflare/containersバージョン0.2.0以降、または@cloudflare/sandboxバージョン0.8.0以降にアップグレードしてください。詳細と例については、Containers outbound trafficとSandboxes outbound trafficを参照してください。