Azure Functions HTTPトリガー実行の注意点
2023.11.04
Azure Functionsはマイクロソフトが提供するサーバーレスコンピューティングサービスです。FaaS(Function-as-a-Service)のひとつです。
概要
- AzureFunctionsの実行トリガーとしては、いくつか用意されているが、そのうちのひとつにHTTPトリガーがある
- ブラウザやシェルからAPIをコールした際、実行時間が長い場合に呼出し元の方でタイムアウトのハンドリングができずに504でエラーとなってしまう
- おそらく、Azureのロードバランサーで受けて、特定の時間を経過したらリクエストを遮断している。ただ、AzureFunctions自体は終了せずに実行されている
そのため、呼出し元で正常/異常の完全なハンドリングができない
原因
HTTPトリガーの応答上限は【230秒】である
https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-scale#timeout

対応策
筆者は、230秒の壁にぶつかった際にDurable Functionsへ処理に変更した。
今では処理件数に比例して数分かかる処理を実装する際には最初からDurable Functionsで作るようにしている。
Durable Functionsもいくつかの実装パターンが存在するが、関数チェーン(Function chaining)を使用している。
Azure Functionsはマイクロソフトが提供するサーバーレスコンピューティングサービスです。FaaS(Function-as-a-Service)のひとつです。
概要
- AzureFunctionsの実行トリガーとしては、いくつか用意されているが、そのうちのひとつにHTTPトリガーがある
- ブラウザやシェルからAPIをコールした際、実行時間が長い場合に呼出し元の方でタイムアウトのハンドリングができずに504でエラーとなってしまう
- おそらく、Azureのロードバランサーで受けて、特定の時間を経過したらリクエストを遮断している。ただ、AzureFunctions自体は終了せずに実行されている
そのため、呼出し元で正常/異常の完全なハンドリングができない
原因
HTTPトリガーの応答上限は【230秒】である
https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-scale#timeout

対応策
筆者は、230秒の壁にぶつかった際にDurable Functionsへ処理に変更した。
今では処理件数に比例して数分かかる処理を実装する際には最初からDurable Functionsで作るようにしている。
Durable Functionsもいくつかの実装パターンが存在するが、関数チェーン(Function chaining)を使用している。