Share via


Azure Functions の Dapr 入力バインド トリガー

重要

Azure Functions の Dapr 拡張機能は現在プレビュー段階であり、Azure Container Apps 環境でのみサポートされています。

Azure Functions は、次の Dapr イベントを使用して、Dapr 入力バインドでトリガーできます。

Dapr 拡張機能のセットアップと構成の詳細については、「Dapr 拡張機能の概要」を参照してください。

A C# 関数は、次の C# モードのいずれかを使用して作成できます。

実行モデル 説明
分離ワーカー モデル 関数コードは、別の .NET ワーカー プロセスで実行されます。 .NET と .NET Framework のサポートされているバージョンで使います。 詳細については、.NET 分離ワーカー プロセス関数の開発に関する記事を参照してください。
インプロセス モデル 関数コードは、Functions ホスト プロセスと同じプロセスで実行されます。 .NET の長期サポート (LTS) バージョンのみをサポートします。 詳細については、.NET クラス ライブラリ関数の開発に関する記事を参照してください。
[FunctionName("ConsumeMessageFromKafka")]
public static void Run(
    // Note: the value of BindingName must match the binding name in components/kafka-bindings.yaml
    [DaprBindingTrigger(BindingName = "%KafkaBindingName%")] JObject triggerData,
    ILogger log)
{
    log.LogInformation("Hello from Kafka!");
    log.LogInformation($"Trigger data: {triggerData}");
}

Dapr 入力バインド トリガーの Java コードを次に示します。

@FunctionName("ConsumeMessageFromKafka")
public String run(
        @DaprBindingTrigger(
            bindingName = "%KafkaBindingName%")
)

オブジェクトを app 使用して以下を登録します daprBindingTrigger

const { app, trigger } = require('@azure/functions');

app.generic('ConsumeMessageFromKafka', {
    trigger: trigger.generic({
        type: 'daprBindingTrigger',
        bindingName: "%KafkaBindingName%",
        name: "triggerData"
    }),
    handler: async (request, context) => {
        context.log("Node function processed a ConsumeMessageFromKafka request from the Dapr Runtime.");
        context.log(context.triggerMetadata.triggerData)
    }
});

次の例は、function.json ファイル内の Dapr トリガーと、それらのバインドを使用する PowerShell コードを示しています。

daprBindingTriggerfunction.json ファイルを次に示します。

{
  "bindings": [
    {
      "type": "daprBindingTrigger",
      "bindingName": "%KafkaBindingName%",
      "name": "triggerData",
      "direction": "in"
    }
  ]
}

function.json ファイルのプロパティについて詳しくは、「構成」セクションをご覧ください。

コード内で以下のように指定します。

using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq

param (
    $triggerData
)

Write-Host "PowerShell function processed a ConsumeMessageFromKafka request from the Dapr Runtime."

$jsonString = $triggerData | ConvertTo-Json

Write-Host "Trigger data: $jsonString"

次の例は、v2 Python プログラミング モデルを使用する Dapr 入力バインド トリガーを示しています。 Python 関数アプリ コードで daprBinding を使用するには、次の手順を実行してください。

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="ConsumeMessageFromKafka")
@app.dapr_binding_trigger(arg_name="triggerData", binding_name="%KafkaBindingName%")
def main(triggerData: str) -> None:
    logging.info('Python function processed a ConsumeMessageFromKafka request from the Dapr Runtime.')
    logging.info('Trigger data: ' + triggerData)

属性

インプロセス モデルでは、DaprBindingTrigger を使用して、次のプロパティをサポート Dapr 入力バインドをトリガーします。

パラメーター 説明
BindingName Dapr トリガーの名前。 指定しない場合、関数の名前がトリガー名として使用されます。

注釈

DaprBindingTrigger 注釈を使用すると、作成したバインド コンポーネントによってトリガーされる関数を作成できます。

要素 説明
bindingName Dapr バインドの名前。

構成

次の表では、コードで設定するバインド構成プロパティについて説明します。

プロパティ 説明
bindingName バインディングの名前。

次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 説明
bindingName バインディングの名前。

次の表は、Python コードで設定する @dapp.dapr_binding_trigger のバインド構成プロパティについて説明しています。

プロパティ 説明
binding_name バインディングの名前。

完全な例については、セクションの例を参照してください。

使用法

Dapr 入力バインド トリガーを使用するには、まず Dapr 入力バインド コンポーネントを設定します。 使用するコンポーネントとその設定方法の詳細については、Dapr の公式ドキュメントを参照してください。

Python v2 で daprBindingTrigger を使用するには、正しい依存関係でプロジェクトを設定します。

  1. 仮想環境を作成してアクティブにする

  2. requirements.text ファイルに、次の行を追加します。

    azure-functions==1.18.0b3
    
  3. ターミナルで、Python ライブラリをインストールします。

    pip install -r .\requirements.txt
    
  4. 次の構成で local.setting.json ファイルを変更します。

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

次のステップ

Dapr サービス呼び出しの詳細。