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

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

最終更新日:Mar 01, 2026

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

インスタンス隔離のパターン

隔離なし

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

リクエスト隔離

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

セッション隔離

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

利用シーン

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

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

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

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

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

仕組み

背景と課題

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

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

これに対処するため、Function Compute では、リクエストが終了した後にエラスティックインスタンスが自動的に軽量休止 (旧アイドル) 状態に移行できます。これにより、低コストのインスタンスキープアライブが可能になります。軽量休止中、vCPU の使用量は課金されず、メモリ課金は変更されませんが、GPU リソースはカードタイプに応じて標準料金の 1/8 から 1/5 で課金されます。セッション存続期間 (TTL) またはセッションアイドルタイムアウトに達すると、セッションライフサイクルが終了し、インスタンスが解放されます。システムは、最小インスタンス数に達するまでインスタンスを解放し続けます。この移行全体は、課金を除き、ユーザーに対して透過的です。

最小インスタンス数が 1 以上に設定されている場合、インスタンスはリクエストまたはバックグラウンドタスクによってトリガーされると迅速に起動し、ホットスタートを実行してアクティブなエラスティックインスタンスになります。リクエストまたはバックグラウンドタスクが終了すると、アクティブなエラスティックインスタンスは自動的に軽量休止状態に戻ります。セッション存続期間 (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. 関数タイプの制限:タスク関数を除き、すべての関数タイプがインスタンス隔離をサポートします。

課金

リクエスト隔離

リクエスト隔離コスト = リクエスト中の関数インスタンスのコスト

セッション隔離

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

軽量休止 (旧アイドル) 状態およびアクティブ状態のエラスティックインスタンスの課金ルールに関する詳細については、「課金の概要」をご参照ください。