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

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

最終更新日:Sep 02, 2024

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

ライフサイクルフック

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

パス

リクエスト

期待される応答

(オプション) 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ロジックを呼び出したり実行したりすることはできません。

PreFreezeメソッドとPreStopメソッドは、Initializerメソッドと同じ方法で使用されます。