すべてのプロダクト
Search
ドキュメントセンター

Function Compute:インスタンス分離の概要

最終更新日:Sep 06, 2025

Function Compute は、AI サンドボックス用の独立したランタイム環境をサポートするために、インスタンス分離を提供します。この機能により、インスタンスが解放される前に、1 つのリクエストまたは単一セッション内のすべてのリクエストのみを処理することが保証されます。これにより、安全で信頼性が高く、柔軟で低コストのサンドボックスランタイム環境が実現します。

インスタンス分離パターン

分離なし

デフォルトでは、Function Compute はインスタンスを分離しません。複数のリクエストを処理するためにインスタンスを再利用します。単一のインスタンスは、1 つ以上のリクエストを同時または経時的に処理できます。

リクエスト分離

単一のユーザーリクエストは、1 つの関数インスタンスを排他的に使用します。

セッション分離

単一のユーザーセッションは、1 つの関数インスタンスを排他的に使用します。

シナリオ

  1. マルチテナント分離: インスタンスが再利用された場合のデータリークを防ぐために、異なるテナントに個別の環境を提供します。これは AI エージェントシナリオで一般的です。

  2. セキュリティ分離: メモリや一時ファイルなどの状態を完全に分離し、リクエスト間のデータの残留を防ぎます。たとえば、暗号鍵やプライベートユーザー情報などの機密データを処理する場合、実行ごとに環境を完全にクリーンアップする必要があります。これは、パイプラインビルドやテキストから画像への生成などのタスクに役立ちます。

  3. 同時実行性の低い短時間実行タスク: タスクはミリ秒単位など非常に短い時間で実行され、同時実行性は非常に低くなります。この場合、インスタンスを再利用するメリットは、新しいインスタンスを作成するオーバーヘッドよりも小さくなります。例としては、一時ファイルをクリーンアップするための一回限りのトリガーがあります。

  4. リソースの解放とクリーンアップ: データベース接続や GPU デバイスなどの外部リソースが、各実行後に完全に解放されるようにします。

  5. リクエスト間の副作用の回避: このパターンは、コードにデータベース接続や GPU デバイスなどの外部リソースに依存するグローバル変数が含まれている場合に役立ちます。これらのリソースが各実行後に完全に解放されるようにします。

仕組み

背景と課題

Function Compute は、もともとリクエストによってトリガーされ、アイドル状態のインスタンスを解放してコストを削減するように設計されていました。その結果、ランタイムインスタンスのライフサイクルは通常短くなります。この設計では、セッション分離シナリオで必要な長時間実行インスタンスのキープアライブはサポートされていません。

セッション永続化メカニズム

この問題を解決するために、Function Compute では、リクエストの完了後に Elastic インスタンスを自動的にアイドル状態に切り替えることができます。これにより、低コストのインスタンスキープアライブが提供されます。アイドル期間中は、vCPU 使用量は課金されません。メモリは標準料金の 1/10 で課金されます。 GPU リソースは、カードの種類に応じて、標準料金の 1/8 から 1/5 で課金されます。セッション TTL またはセッションアイドルタイムアウトに達すると、セッションライフサイクルが終了します。その後、インスタンスは解放され、システムは最小インスタンス数にスケールインします。このプロセスは、課金以外はユーザーにとって透過的です。

最小インスタンス数が 1 以上に設定されている場合、リクエストまたはバックグラウンドタスクがトリガーされると、インスタンスはすぐに起動します。ホットスタートを実行し、アクティブな Elastic インスタンスになります。リクエストまたはバックグラウンドタスクが終了すると、アクティブな Elastic インスタンスは自動的にアイドル状態に切り替わります。セッション TTL またはセッションアイドルタイムアウトに達するまでアイドル状態のままです。その後、インスタンスは解放され、システムは最小インスタンス数にスケールインします。

分離保証メカニズム

Function Compute は、リクエスト分離シナリオでは、インスタンスごとの同時実行数を自動的に 1 に設定します。また、セッション分離シナリオでは、インスタンスごとのセッション同時実行数を自動的に 1 に設定します。これにより、Function Compute インスタンスは一度に 1 つのリクエストまたはセッションのみを処理することが保証されます。

ライフサイクルのマッピングとバインディング

リクエストまたはセッションのライフサイクルは、インスタンスのライフサイクルに 1 対 1 でマッピングされます。セッションライフサイクルは、セッションアイドルタイムアウトとセッション TTL タイムアウトに基づいて終了します。リクエストまたはセッションのライフサイクルが終了すると、対応するインスタンスのライフサイクルも終了し、インスタンスはすぐに解放されます。

制限

  1. インスタンスタイプの制限: 2 コア以上のインスタンスタイプのみがインスタンス分離機能をサポートしています。この制限は、関数の作成または更新時に適用されます。

  2. リクエストレベルの分離: この機能は、単一インスタンス、単一同時実行のシナリオ専用です。この機能を有効にすると、Function Compute はインスタンスごとの同時実行数を 1 に設定します。この設定は変更できません。

  3. セッション分離: セッション保持機能を最初に設定する必要があります。この機能を有効にすると、Function Compute はインスタンスごとのセッション同時実行数を 1 に設定します。この設定は変更できません。

  4. 組み込みランタイム: 組み込みランタイムは、MCP SSE セッション分離をサポートしていません。

  5. 関数タイプの制限: タスク関数を除くすべての関数タイプがインスタンス分離をサポートしています。

課金

リクエスト分離

リクエスト中は関数インスタンスに対して課金されます。

セッション分離

セッションライフサイクル中は関数インスタンスに対して課金されます。

アイドル状態およびアクティブな Elastic インスタンスの課金ルールの詳細については、「課金概要」をご参照ください。