Containers — コンテナとサンドボックスを Workers に簡単に接続
公開日: 2026-03-26
概要
Containers と Sandboxes で、HTTP 経由で Workers に直接接続できるようになりました。これにより、コンテナ内部から特定のホスト名を通じて Workers の関数やバインディング(例: KV、R2)を呼び出せます。
Worker コードの実行
任意の HTTP リクエストを捕捉する outbound ハンドラーを定義するか、特定のホスト名や IP に対するリクエストを捕捉する outboundByHost を使います。以下は例です。
export class MyApp extends Sandbox {}
MyApp.outbound = async (request, env, ctx) => {
// 任意の Worker 内で定義された関数を任意の HTTP リクエストで実行できます
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 サポート(近日対応)
現時点では Containers と Sandboxes は HTTP トラフィックのみをインターセプトします。HTTPS のインターセプトは近日対応予定です。これにより、資格情報注入のために Workers を透過プロキシとして利用できるようになります。現在でも Workers へのトラフィックは安全で、コンテナと同じマシン上で実行されます。必要に応じて、Worker 側でリクエストを TLS にアップグレードすることも可能です。
Workers バインディングへのアクセス
各ハンドラーは env にアクセスできるため、Wrangler の設定で定義したあらゆるバインディングを呼び出せます。コンテナ内のコードはそのホスト名に対して通常の HTTP リクエストを行い、outbound Worker がそれをバインディング呼び出しに変換します。
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)
},
}
これにより、任意のコンテナインスタンスに状態を簡単に紐づけられます。Durable Object には組み込みの SQLite データベースも含まれます。
今すぐ始める
outbound Workers を利用するには、@cloudflare/containers をバージョン 0.2.0 以降、または @cloudflare/sandbox をバージョン 0.8.0 以降にアップグレードしてください。詳細と追加の例は Containers outbound traffic および Sandboxes outbound traffic を参照してください。
© 2026 Cloudflare, Inc. | Privacy Policy | Terms of Use