このトピックでは、Function Compute コンソールでインスタンス隔離を構成する方法について説明します。
制限事項
リクエスト分離とセッション分離は、2 つ以上の vCPU を持つインスタンスタイプを使用する関数でのみサポートされています。
リクエスト分離とセッション分離を同時に有効にすることはできません。
リクエスト分離を有効にすると、システムは自動的にインスタンスごとの同時実行数を 1 に設定します。これにより、各関数インスタンスは一度に 1 つのリクエストのみを処理できます。以前に構成された 1 より大きい同時実行値は無視されます。
非同期タスクリクエストは、セッション分離をサポートしていません。
手順
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、[関数の作成] をクリックします。
表示されるダイアログボックスで、関数のタイプを選択します。[関数の作成] ページで、[隔離とアフィニティ] セクションを見つけます。以下で説明するようにパラメーターを設定し、[作成] をクリックします。
リクエスト分離
[インスタンス分離] で、[リクエスト分離] を選択します。
セッション分離
[インスタンス分離] で、[セッション分離] を選択します。
セッション分離を有効にすると、セッション保持も自動的に有効になります。セッション保持パラメーターも構成する必要があります。
説明セッション保持 とは異なり、セッション分離を有効にすると、インスタンスごとの同時セッション数は自動的に 1 に設定され、変更できません。
セッション分離が有効になっている場合、セッション保持も有効になります。
これは、同じクライアントからのリクエストが同じ関数インスタンスにルーティングされ、そのインスタンスがその特定のクライアントからのリクエストのみを処理できることを意味します。
MCP SSE アフィニティ
構成項目
説明
例
[セッションアフィニティタイプ]
[MCP SSE アフィニティ] を選択します。MCP SSE プロトコル仕様に基づいて、システムは同じ SessionId を持つクライアントリクエストが常に同じインスタンスにルーティングされるようにして、アフィニティを実装します。
MCP SSE アフィニティ
[SSE パス]
SSE 接続リクエストを開始するためのパス。
/sse
[インスタンスごとの同時セッション数]
セッション分離を有効にすると、インスタンスごとの同時セッション数は自動的に 1 に設定され、変更できません。
1
HeaderField アフィニティ
構成項目
説明
例
セッションアフィニティ
[HeaderField アフィニティ] を選択します。セッションアフィニティは、HTTP リクエストヘッダーで指定されたフィールドの値に基づいて実装されます。
HeaderField アフィニティ
[ヘッダー名]
アフィニティ用のクライアント ID を渡すために使用するヘッダー名です。たとえば、アフィニティ ID として `mySessionId` を渡し、[ヘッダー名] に `x-custom-affinity-header` を指定した場合、HTTP 呼び出しに次のヘッダーと値を含める必要があります:
x-custom-affinity-header: mySessionId。x-custom-affinity-header
[インスタンスごとの同時セッション数]
セッション分離を有効にすると、インスタンスごとの同時セッション数は自動的に 1 に設定され、変更できません。
1
[セッションライフサイクル]
セッションの作成と使用から最終的な破棄までの全プロセス。[セッションライフサイクル] を超えると、サーバーは自動的にセッションを破棄し、アフィニティを保証しなくなります。
21600 秒
[セッションアイドルタイムアウト]
ユーザーが一定時間操作を行わない場合、セッションはアイドル状態になります。構成された [セッションアイドルタイムアウト] を超えると、サーバーは自動的にセッションを破棄し、アフィニティを保証しなくなります。
1800 秒
Cookie アフィニティ
構成項目
説明
例
[セッションアフィニティ]
[Cookie アフィニティ] を選択します。セッションアフィニティは、HTTP Cookie の属性値に基づいて実装されます。
Cookie アフィニティ
クッキーの処理方法
現在、Cookie 挿入方法のみがサポートされています。クライアントが初めてサービスにアクセスすると、Function Compute は自動的にレスポンスに Cookie を挿入します。具体的には、
Set-Cookie:x-fc-cookie-session-id={CookieID}が HTTP/HTTPS レスポンスメッセージに挿入されます。クライアントがその後Cookie:x-fc-cookie-session-id={CookieID}を使用してサービスにアクセスすると、Function Compute は最初のリクエストが処理された関数インスタンスにリクエストを転送します。Cookie を挿入する
[インスタンスごとの同時セッション数]
セッション分離を有効にすると、インスタンスごとの同時セッション数は自動的に 1 に設定され、変更できません。
1
セッションのライフサイクル
セッションの作成と使用から最終的な破棄までの全プロセス。[セッションライフサイクル] を超えると、サーバーは自動的にセッションを破棄し、アフィニティを保証しなくなります。
21600 秒
[セッションアイドルタイムアウト]
ユーザーが一定時間操作を行わない場合、セッションはアイドル状態になります。構成された [セッションアイドルタイムアウト] を超えると、サーバーは自動的にセッションを破棄し、アフィニティを保証しなくなります。
1800 秒
結果の確認
リクエスト分離
たとえば、curl コマンドを使用して関数を複数回呼び出します。次のコマンドでは、example と regionID を関数の URL に置き換えます。関数の URL は、関数詳細ページの [トリガー] タブにある HTTP トリガーの [構成情報] 列から取得できます。
curl https://example.{regionID}.fcapp.run関数詳細ページで、[ログ] タブをクリックします。ログには、各リクエストが異なる関数インスタンスにスケジュールされていることが示されます。

セッション分離
この例では、HeaderField アフィニティを使用します。構成をテストするには、関数を呼び出し、HTTP リクエストヘッダーに異なる値を指定します。 Session1:
curl -H "x-custom-affinity-header:Session1" https://example.{regionID}.fcapp.runSession2:
curl -H "x-custom-affinity-header:Session2" https://example.{regionID}.fcapp.run // Session2 を指定して関数を呼び出す関数詳細ページで、[ログ] タブをクリックします。ログには、同じ SessionId を持つリクエストが同じ関数インスタンスにスケジュールされ、異なる SessionId を持つリクエストが異なる関数インスタンスにスケジュールされていることが示されます。
