[Azure] Azure Logic Apps で Azure Functions を繰り返し実行する
はじめに
Azure Functions の従量課金プランでは最大で 10 分のタイムアウト制限があり、実行に長時間かかる関数はそのままでは実行できません。
もし、ループ処理によって実行に時間がかかる場合は、そのループを Azure Logic Apps に任せることで 1 実行あたりの実行時間を抑えることができるかもしれません。
今回は、Azure Logic Apps を利用して、Azure Functions を繰り返し実行するロジックを実装してみます。
関数の作成
Azure Functions で Double
という http トリガー関数を作成しました。
実行コードは以下の通り。
リクエストボディから渡された parameter
を 2 倍して返す単純な関数です。
module.exports = async function (context, req) {
let param = parseInt(req.body.parameter);
const result = param * 2;
context.res = {
body: result
};
}
ロジックアプリの作成
空のロジックアプリの作成
続いて、ロジックアプリを作成しテンプレートから 空のロジック アプリ
を選択します。
初めてロジックアプリを作成する方は、以下の公式ドキュメント クイックスタートをご参照ください。
https://docs.microsoft.com/ja-jp/azure/logic-apps/quickstart-create-first-logic-app-workflow#create-your-logic-app
トリガーの作成
ロジックアプリの中身を作成していきます。
トリガーは HTTP 要求の受信時
にしておきます。
変数の作成
次のステップは 変数を初期化する
です。
今回は、繰り返し 2 倍する parameter
変数を作成し、初期値を 1 に設定します。
繰り返し処理の作成
繰り返し処理を作成します。制御
の まで
を選択します。
今回は parameter
が 1000 以上になるまで値を 2 倍し続けたいと思います。
繰り返しの制限 (回数上限、タイムアウト) も別途設定することができます。
アクションは先ほど作成した Azure Functions 関数 Double
を設定し、要求本文 (ボディ) に JSON 形式で parameter
を設定します。
最後にレスポンスとして返ってきた値を parameter
に設定します。
返り値を Int()
を使って整数値に parse して parameter
変数に設定するようにします。
以上でロジックアプリの作成は完了です。ロジックアプリを保存します。
ロジックアプリを実行してみる
画面上部の 実行
を押して、結果を確認してみます。
すると、繰り返し処理が 10 回転して、parameter
の値が 1024 になるまで関数が実行されていることが確認できました!
さいごに
Azure Logic Apps を利用して、Azure Functions を繰り返し実行するロジックを実装してみました。
関数の実行時間が長くタイムアウト制限に引っかかる場合、解消法の一つとして検討してみてはいかがでしょうか。
参考文献
- Azure Functions のホスティング オプション - サービスの制限:https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-scale#service-limits
- クイックスタート: 初めての Logic Apps ワークフローを作成する - Azure portal:https://docs.microsoft.com/ja-jp/azure/logic-apps/quickstart-create-first-logic-app-workflow#create-your-logic-app
Author And Source
この問題について([Azure] Azure Logic Apps で Azure Functions を繰り返し実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/tomohat/items/638ff22b65058968d929著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .