Skip to content

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

スケーリングとルーティング

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

明示的な ID で Container インスタンスをスケールする

現時点では、一意の ID でコンテナを取得し、そのあと起動することで手動スケールします。コンテナの取得だけでは、自動では起動しません。

// get and start two container instances
const containerOne = getContainer(
	env.MY_CONTAINER,
	idOne,
).startAndWaitForPorts();

const containerTwo = getContainer(
	env.MY_CONTAINER,
	idTwo,
).startAndWaitForPorts();

各インスタンスは、sleepAfter の時間が経過するか、手動で停止するまで実行されます。

この動作は、コンテナインスタンスのライフサイクルを明示的に制御したいときに便利です。たとえば、特定ユーザー向けにコンテナバックエンドを起動する、AI が生成したコードを隔離するためにコードサンドボックスを短時間動かす、短命のバッチジョブを実行する、といった用途です。

getRandom ヘルパー関数を使う

複数のコンテナインスタンスを動かし、その間でリクエストをルーティングしたい場合は、getRandom ヘルパー関数を使います。

import { Container, getRandom } from "@cloudflare/containers";

const INSTANCE_COUNT = 3;

class Backend extends Container {
	defaultPort = 8080;
	sleepAfter = "2h";
}

export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		const containerInstance = await getRandom(env.BACKEND, INSTANCE_COUNT);
		return containerInstance.fetch(request);
	},
};

ステートレスな複数のコンテナインスタンスへルーティングするには getRandom を使います。リクエストごとに N 個のインスタンスから 1 つをランダムに選びます。つまり次のとおりです。

  • ルーティング先のインスタンス数を、利用者が固定で設定する必要があります。
  • 所在地に関係なく、各インスタンスをランダムに選びます。

組み込みのオートスケールとルーティング機能で、これらの制約を近いうちに解消する予定です。

役に立ちましたか?