OpenAICloudflare Developer Platform2026/03/26 0:00

Containers - Easily connect Containers and Sandboxes to Workers

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

ContainersとSandboxesからWorkersへHTTPで直接接続可能に

Key Points

  • HTTPでWorkersに接続
  • KV/R2/DOにアクセス可能
  • HTTPSは後日対応

Summary

Containers/SandboxesがWorkersへHTTPで直接接続できるようになりました。コンテナ内から特定ホスト名へHTTPリクエストを送ると、Workersのoutbound/outboundByHostハンドラで受け取り、Workersランタイム内でKV、R2、Durable Objectsなどのバインディングを呼び出せます。現在はHTTPのみ(HTTPSは後日対応予定)。

Key Points

  • Workersハンドラ
    • outbound:任意のHTTPリクエストをキャプチャして処理。
    • outboundByHost:ホストごとにハンドラを定義(例: my.kv, my.r2, get-state.do)。
    • ハンドラはコンテナ外のWorkersランタイムで実行されるため、コンテナ内から安全にバインディングへアクセス可能。
  • バインディングアクセス
    • ハンドラでenvを参照してKV/R2/DOを操作。
    • コンテナ内から例: curl http://my.kv/some-key → Workers経由でKVを取得。
    • Durable Objectはctx.containerIdを使ってコンテナ固有の状態にアクセス(env.MY_CONTAINER.idFromString(ctx.containerId))。
  • セキュリティとTLS
    • 現在はHTTPインターセプトのみ。トラフィックは同一ホスト上で処理されるため安全性は保たれるが、HTTPSインターセプトは今後リリース予定。必要ならWorker側でTLSにアップグレード可能。
  • 導入と依存バージョン
    • @cloudflare/containers >= 0.2.0 または @cloudflare/sandbox >= 0.8.0 が必要。
    • 詳細と追加例は公式ドキュメントの「Containers outbound traffic」「Sandboxes outbound traffic」を参照。

How to get started (実用メモ)

  • パッケージをアップグレードしてテスト環境でまずHTTP経由でKV/R2へアクセス。
  • Workers側でoutboundByHostを定義し、ホスト名ごとにenv/ctxを使ってバインディングを呼び出す。
  • HTTPSインターセプトが必要な場合は、正式対応を待つかWorker内でTLSへアップグレードする実装を検討する。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Containers — コンテナとサンドボックスを Workers に簡単に接続

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

Containers — コンテナとサンドボックスを Workers に簡単に接続 | Cloudflare Developer Platform | DocsDigest