Azure Logic Appsは、コードをほとんど使わずに、自動化されたワークフローを作成して実行できるツールで、これを利用すると、例えば特定の時間にAzure Functionsで定義したAPIを呼び出すことができる。
今回は、Azure Logic Appsから、Durable Functionsを利用したPythonアプリケーションを呼び出してみたので、その手順を共有する。
前提条件
下記サイトの手順に従って、Durable Functionsを利用したPythonアプリケーションの作成が完了していること。
やってみたこと
Durable Functionsの修正
このままAzure Logic Appsから、Durable Functionsを利用したPythonアプリケーションを呼び出すワークフローを作成しようとすると、以下のような「ワークフローの検証失敗」画面が表示され、ワークフローの作成ができない。
そのため、前提条件の記事の「function_app.py」のhttp_startメソッドのアノテーションを修正し、以下のようにする。
import azure.functions as func import azure.durable_functions as df import logging myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS) # An HTTP-triggered function with a Durable Functions client binding @myApp.function_name(name="http_start") @myApp.route(route="") @myApp.durable_client_input(client_name="client") async def http_start(req: func.HttpRequest, client): #function_name = req.route_params.get('functionName') function_name = 'hello_orchestrator' instance_id = await client.start_new(function_name) response = client.create_check_status_response(req, instance_id) return response # Orchestrator @myApp.orchestration_trigger(context_name="context") def hello_orchestrator(context): result1 = yield context.call_activity("hello", "Seattle") result2 = yield context.call_activity("hello", "Tokyo") result3 = yield context.call_activity("hello", "London") logging.info(result1) logging.info(result2) logging.info(result3) return [result1, result2, result3] # Activity @myApp.activity_trigger(input_name="city") def hello(city: str): return f"Hello {city}"
上記修正後、ローカル環境にて、別のコマンドプロンプトでazuriteを実行しつつ、コマンドプロンプトで「func start」コマンドを実行する。
その後、ブラウザ上で「http://localhost:7071/api/http_start」にアクセスすると、以下のように、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
さらに、以下の記事の「Azure上でのAzure Functions動作検証」と同じ手順で、Azure上にソースコードをデプロイする。
デプロイ後、ブラウザ上で「https://azurefuncpython.azurewebsites.net/api/http_start」にアクセスした後でログを確認すると、以下のように、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
Azure Logic Appsの作成
Azure Logic Appsを作成し、Durable Functionsを利用したPythonアプリケーションを呼び出すワークフローを作成する。その手順は、以下の通り。
1) Azure Portalにログインし、「ロジック アプリ」を選択する。
2) Logic Appsを作成するため、「追加」ボタンを押下する。
3) 今回は従量課金プランを利用したいため、「マルチテナント」を選択し「選択」ボタンを押下する。
4) Logic Appsを作成するための、以下の画面が表示される。
6) 作成するLogic Appsの内容を確認し、「作成」ボタンを押下する。
7) デプロイが完了すると以下の画面が表示されるため、「リソースに移動」ボタンを押下する。
8) 次にワークフローを作成するため、「ロジック アプリ デザイナー」メニューを押下する。
10) ランタイムで「In-app」を選択し、検索された中から「Schedule」を押下する。
12) 今回は日本時間で2025/1/11 15:30以降に、5分間隔で実行したいため、以下のように入力し「保存」ボタンを押下する。
なお、毎週土曜日の10:00~実行したい場合は、以下のような指定となる。
13) 保存が完了すると、以下の赤枠のような完了メッセージが表示される。
14) 次に実行したい関数を指定するため、「Recurrence」下の「+」ボタンを押下する。
16) ランタイムで「In-app」を選択し、検索された中から「Azure Functions」を押下する。
17)「Choose an Azure function」を押下する。
18) 検索された中から「azureFuncPython」の「http_start」メソッドを選択し、「Add action」ボタンを押下する。
19) 以下の状態で表示されるため、「保存」ボタンを押下する。
20) 保存が完了すると、以下の赤枠のような完了メッセージが表示される。
Azure Logic Appsの動作検証
Azure Logic Appsの動作は、実行履歴やログで確認できる。その手順は、以下の通り。
1) 初回起動(2025/1/11 15:30)終了後、実行の履歴は以下のように確認できる。
2) 初回起動(2025/1/11 15:30)終了後、トリガーの履歴は以下のように確認できる。
3) 初回起動(2025/1/11 15:30)終了後、実行履歴は、開発ツールの実行履歴メニューからも確認できる。
4) 初回起動(2025/1/11 15:30)終了後、Azure Functionsの実行ログを確認した結果は以下の通りで、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
5) 2回目の起動(2025/1/11 15:35)終了後、開発ツールの実行履歴メニューから確認した実行履歴は以下の通りで、5分毎に関数が実行されているのが確認できる。
6) Logic Appsワークフローを即時実行するには、「実行」ボタンを押下する。
7) 即時実行(2025/1/11 15:42)終了後、開発ツールの実行履歴メニューから確認した実行履歴は以下の通りで、赤枠の実行履歴が確認できる。
要点まとめ
- Azure Logic Appsは、コードをほとんど使わずに、自動化されたワークフローを作成して実行できるツールで、これを利用すると、例えば特定の時間にAzure Functionsで定義したAPIを呼び出すことができる。