Azure Python

Azure Logic AppsからDurable Functionsを呼び出してみた

Azure Logic Appsは、コードをほとんど使わずに、自動化されたワークフローを作成して実行できるツールで、これを利用すると、例えば特定の時間にAzure Functionsで定義したAPIを呼び出すことができる。

今回は、Azure Logic Appsから、Durable Functionsを利用したPythonアプリケーションを呼び出してみたので、その手順を共有する。

前提条件

下記サイトの手順に従って、Durable Functionsを利用したPythonアプリケーションの作成が完了していること。

Azure Functions上で動作するPythonアプリケーションでDurable Functionsを利用してみたDurable Functionsは、複数の処理を同調させて1つのワークフローを構成できるコード実行サービスで、関数と呼ばれるプログラム...

やってみたこと

  1. Durable Functionsの修正
  2. Azure Logic Appsの作成
  3. Azure Logic Appsの動作検証

Durable Functionsの修正

このままAzure Logic Appsから、Durable Functionsを利用したPythonアプリケーションを呼び出すワークフローを作成しようとすると、以下のような「ワークフローの検証失敗」画面が表示され、ワークフローの作成ができない。
Durable Functionsの修正_1

そのため、前提条件の記事の「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」コマンドを実行する。
Durable Functionsの修正_2_1

Durable Functionsの修正_2_2

その後、ブラウザ上で「http://localhost:7071/api/http_start」にアクセスすると、以下のように、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
Durable Functionsの修正_3_1

Durable Functionsの修正_3_2

さらに、以下の記事の「Azure上でのAzure Functions動作検証」と同じ手順で、Azure上にソースコードをデプロイする。

Azure Functions上で動作するPythonアプリケーションを作成してみたAzureが提供するサービスに、さまざまなイベントによって駆動し、サーバーの構築や保守をすることなくプログラムを実行できる「Azure ...

デプロイ後、ブラウザ上で「https://azurefuncpython.azurewebsites.net/api/http_start」にアクセスした後でログを確認すると、以下のように、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
Durable Functionsの修正_4_1

Durable Functionsの修正_4_2



株式会社ベアフォスターホールディングスでスキルチェンジできました私はこれまで、Javaを中心としたシステム開発を行ってきましたが、将来的には、Pythonを利用したAI(人工知能)開発を行いたいと思う...

Azure Logic Appsの作成

Azure Logic Appsを作成し、Durable Functionsを利用したPythonアプリケーションを呼び出すワークフローを作成する。その手順は、以下の通り。

1) Azure Portalにログインし、「ロジック アプリ」を選択する。
Azure Logic Appsの作成_1

2) Logic Appsを作成するため、「追加」ボタンを押下する。
Azure Logic Appsの作成_2

3) 今回は従量課金プランを利用したいため、「マルチテナント」を選択し「選択」ボタンを押下する。
Azure Logic Appsの作成_3

4) Logic Appsを作成するための、以下の画面が表示される。
Azure Logic Appsの作成_4

5) 各項目を入力後、「確認および作成」ボタンを押下する。
Azure Logic Appsの作成_5

6) 作成するLogic Appsの内容を確認し、「作成」ボタンを押下する。
Azure Logic Appsの作成_6

7) デプロイが完了すると以下の画面が表示されるため、「リソースに移動」ボタンを押下する。
Azure Logic Appsの作成_7

8) 次にワークフローを作成するため、「ロジック アプリ デザイナー」メニューを押下する。
Azure Logic Appsの作成_8

9)「トリガーの追加」ボタンを押下する。
Azure Logic Appsの作成_9

10) ランタイムで「In-app」を選択し、検索された中から「Schedule」を押下する。
Azure Logic Appsの作成_10

11)「Recurrence」を押下する。
Azure Logic Appsの作成_11

12) 今回は日本時間で2025/1/11 15:30以降に、5分間隔で実行したいため、以下のように入力し「保存」ボタンを押下する。
Azure Logic Appsの作成_12_1

なお、毎週土曜日の10:00~実行したい場合は、以下のような指定となる。
Azure Logic Appsの作成_12_2

13) 保存が完了すると、以下の赤枠のような完了メッセージが表示される。
Azure Logic Appsの作成_13

14) 次に実行したい関数を指定するため、「Recurrence」下の「+」ボタンを押下する。
Azure Logic Appsの作成_14

15) 表示された「アクションの追加」ボタンを押下する。
Azure Logic Appsの作成_15

16) ランタイムで「In-app」を選択し、検索された中から「Azure Functions」を押下する。
Azure Logic Appsの作成_16

17)「Choose an Azure function」を押下する。
Azure Logic Appsの作成_17

18) 検索された中から「azureFuncPython」の「http_start」メソッドを選択し、「Add action」ボタンを押下する。
Azure Logic Appsの作成_18

19) 以下の状態で表示されるため、「保存」ボタンを押下する。
Azure Logic Appsの作成_19

20) 保存が完了すると、以下の赤枠のような完了メッセージが表示される。
Azure Logic Appsの作成_20



「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

Azure Logic Appsの動作検証

Azure Logic Appsの動作は、実行履歴やログで確認できる。その手順は、以下の通り。

1) 初回起動(2025/1/11 15:30)終了後、実行の履歴は以下のように確認できる。
Azure Logic Appsの作成_1

2) 初回起動(2025/1/11 15:30)終了後、トリガーの履歴は以下のように確認できる。
Azure Logic Appsの作成_2

3) 初回起動(2025/1/11 15:30)終了後、実行履歴は、開発ツールの実行履歴メニューからも確認できる。
Azure Logic Appsの作成_3

4) 初回起動(2025/1/11 15:30)終了後、Azure Functionsの実行ログを確認した結果は以下の通りで、ログに赤枠の「Hello (都市名)」が出力されているのが確認できる。
Azure Logic Appsの作成_4

5) 2回目の起動(2025/1/11 15:35)終了後、開発ツールの実行履歴メニューから確認した実行履歴は以下の通りで、5分毎に関数が実行されているのが確認できる。
Azure Logic Appsの作成_5

6) Logic Appsワークフローを即時実行するには、「実行」ボタンを押下する。
Azure Logic Appsの作成_6_1

Azure Logic Appsの作成_6_2

7) 即時実行(2025/1/11 15:42)終了後、開発ツールの実行履歴メニューから確認した実行履歴は以下の通りで、赤枠の実行履歴が確認できる。
Azure Logic Appsの作成_7

要点まとめ

  • Azure Logic Appsは、コードをほとんど使わずに、自動化されたワークフローを作成して実行できるツールで、これを利用すると、例えば特定の時間にAzure Functionsで定義したAPIを呼び出すことができる。