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

Function Compute:関数インスタンスのライフサイクルフック

最終更新日:Sep 02, 2024

このトピックでは、webサーバーモードが設定されているカスタムコンテナランタイムで関数インスタンスのライフサイクルフックを実装する方法について説明します。

制限事項

webサーバーモードが有効になっていないカスタムコンテナーランタイムは、Initializer、PreFreeze、およびPreStopフックをサポートしていません。 Function Computeは、クライアントがアクティブにリクエストをキャンセルした場合にのみ、SIGTERMシグナルをインスタンスに送信します。 必要に応じて、コンテナビジネスロジックでSIGTERMシグナルをキャプチャできます。

ライフサイクルフック

ファンクションインスタンスのライフサイクルフックを設定した後、インスタンスの関連ライフサイクルイベントが発生すると、function Computeがフックを呼び出します。 関数インスタンスに設定できるライフサイクルフックは、Initializer、PreFreeze、PreStopです。 詳細は、「Functionインスタンスのライフサイクル」をご参照ください。

次の表に、Initializerフックを示します。 PreFreezeフックとPreStopフックは、Initializerメソッドと同じ方法で使用されます。

パス

リクエスト

期待される応答

(オプション) POST /initialize

リクエスト本文: なし。

リクエストヘッダー: 共通リクエストヘッダー。 詳細については、「Function Computeの一般的なリクエストヘッダー」をご参照ください。

レスポンス本文: Initializerフックの戻り値。

StatusCode

  • 200: 成功

  • 404: 失敗

Pythonでの初期化のサンプルコード:

@app.route('/initialize', methods=['POST'])
def init_invoke():
  rid = request.headers.get(x-fc-request-id)
  print("FC Initialize Start RequestId: " + rid)
  # do your things
  print("FC Initialize End RequestId: " + rid)
  return "OK"

(オプション) GET /pre-freeze

レスポンス本文: PreFreezeフックの戻り値。

StatusCode

  • 200: 成功

  • 404: 失敗

(オプション) GET /pre-stop

レスポンス本文: PreStopフックの戻り値。

StatusCode

  • 200: 成功

  • 404: 失敗

カスタムランタイムでInitializerフックを使用する場合は、HTTPサーバーに /initializeパスとPOSTメソッドに対応するロジックを実装する必要があります。 上記の表のinitializeのサンプルコードを参照できます。

重要

関数にInitializerフックを設定しない場合、/initializeパスを実装する必要はありません。 /initializeパスがHTTPサーバーによって実装されていても、コード内の /initializeロジックを呼び出したり実行したりすることはできません。