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

Function Compute:機能概要

最終更新日:Apr 01, 2026

ランタイム拡張を使用すると、リクエスト間のアイドル時間に対して課金されることなく、機能コードと並行してライフサイクルを意識したロジックを実行できます。

インスタンスのライフサイクルと移行時の課題

Function Compute は、リクエスト処理中のミリ秒単位で課金されます。リクエストが到着しない場合、インスタンスはフリーズされ、常駐型アーキテクチャで発生するアイドルコストを完全に排除します。

このフリーズベースのモデルはステートレスな関数には適していますが、従来の常駐アプリケーションを移行する際には摩擦が生じます。たとえば、OpenTelemetry 向けマネージドサービス(旧称:トレーシング分析)などのオープンソース分散トレーシングライブラリやサードパーティ製アプリケーションパフォーマンス管理 (APM) ソリューションは、この実行環境でデータを正しくレポートできません。主な課題は次の 3 点です。

  • 遅延または欠落するメトリック。 非同期バックグラウンドレポーターはフリーズ期間中に一時停止されます。フリーズ前にフラッシュが完了しない場合、データは次のリクエストまで保持されるか、破棄されます。

  • 同期フラッシュによるオーバーヘッド。 各リクエスト後にフラッシュメソッドを呼び出すことでデータ送信を維持できますが、各呼び出しのレイテンシが増加し、バックエンドサーバーへの負荷も高まります。

  • シャットダウン通知の不在。 関数インスタンスが停止されるタイミングを知らせる信号が存在しません。通知がないため、データベース接続のクローズ、プロセスの停止、処理中のデータのドレイン、最終的な実行ステータスのレポートなどが信頼性の低いものになります。

image

仕組み

ランタイム拡張は、標準的な HTTP サーバープログラミングモデルに PreFreeze および PreStop の 2 つのライフサイクルフックを追加します。これらのフックに応答するには、拡張内に HTTP ハンドラを実装してください。

image

PreFreeze

Function Compute は、関数インスタンスをフリーズする前に、/pre-freeze に対して HTTP GET リクエストを送信します。このフックを使用して、インスタンスが一時停止される前にメトリックをフラッシュしたり、完了が必要な操作を終了させたりしてください。

説明

PreFreeze の実行時間は、InvokeFunction の課金持続時間には含まれません。

image

PreStop

Function Compute は、関数インスタンスを停止する前に、/pre-stop に対して HTTP GET リクエストを送信します。このフックを使用して、インスタンスが削除される前にデータベース接続を閉じたり、プロセスを停止したり、実行ステータスをレポートしたりしてください。

image

また、複数のリクエストが単一のインスタンス上で同時に実行されている場合でも、拡張は正しく動作します。PreFreeze は、そのインスタンス上のすべての同時呼び出しが完了した後にのみ実行されます。

課金

PreFreeze および PreStop の呼び出しは、InvokeFunction 呼び出しと同様に課金されます。拡張の HTTP フック自体へのリクエストは課金対象外です。

例: 1 GB の関数インスタンスで 2 つのリクエストが同時に実行されています。PreFreeze が t1 で開始され、最後のリクエスト(リクエスト 2)が 1 秒後の t6 に完了した場合、課金持続時間は t6 − t1 = 1 s となり、1 s × 1 GB = 1 CU を消費します。

image