Azure Functions における Azure Event Grid のバインド

このリファレンスでは、Azure Functions のトリガーとバインドを使って Azure Event Grid に接続する方法を示します。

Event Grid は、"パブリッシャー" 内で発生したイベントについてユーザーに通知する HTTP 要求を送信する Azure サービスです。 "パブリッシャー" は、イベントを生成するサービスまたはリソースです。 たとえば、Azure Blob Storage アカウントはパブリッシャーであり、BLOB のアップロードまたは削除がイベントです。 一部の Azure サービスには、Event Grid にイベントを発行するサポートが組み込まれています

イベント "ハンドラー" は、イベントを受信して処理します。 Azure Functions は、Event Grid イベントを処理する組み込みサポートを備えている Azure サービスの 1 つです。 Functions によって提供される Event Grid トリガーにより、Event Grid からイベントを受信したときに関数が呼び出されます。 同様の出力バインドを使って、関数から Event Grid カスタム トピックにイベントを送信できます。

また、HTTP トリガーを使って Event Grid イベントを処理することもできます。 詳しくは、「HTTP エンドポイントへのイベントの受信」をご覧ください。 Event Grid トリガーを HTTP トリガーで使用することをお勧めします。

アクション Type
Event Grid イベントがディスパッチされたときに関数を実行する トリガー
Event Grid イベントを送信する 出力バインド
返された HTTP 状態コードを制御する HTTP エンドポイント

拡張機能のインストール

インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。

関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。

拡張機能の機能性は、拡張機能のバージョンによって異なります。

プロジェクトにこの拡張機能を追加するには、NuGet パッケージ バージョン 3.x をインストールします。

バンドルのインストール

Event Grid 拡張機能は、host.json プロジェクト ファイルで指定される拡張機能バンドルの一部です。 Event Grid バインドのバージョンを変更するために、またはバンドルがまだインストールされていない場合には、このバンドルの変更が必要になることがあります。 詳細については、「拡張機能のバンドル」を参照してください。

このバージョンの拡張機能は、host.json ファイルで次の構成を追加するか、または置き換えることによって、拡張機能バンドル v3 から追加できます。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

詳細については、ユーザーの更新に関するページを参照してください。

バインドの種類

.NET でサポートされるバインドの種類は、拡張機能のバージョンと C# 実行モードの両方によって異なります。これは次のいずれかになります。

分離ワーカー プロセス クラス ライブラリでコンパイルされた C# 関数は、ランタイムから分離されたプロセスで実行されます。

バージョンを選択すると、モードとバージョンのバインドの種類の詳細が表示されます。

分離ワーカー プロセスは、以下の表に従ってパラメーターの型をサポートします。 Stream、および Azure.Messaging の型へのバインドのサポートはプレビュー段階です。

Event Grid トリガー

関数で 1 つのイベントを処理するとき、Event Grid トリガーは次の型にバインドできます。

Type 説明
JSON シリアル化可能な型 Functions はイベントの JSON データを Plain Old CLR Object (POCO) 型に逆シリアル化しようとします。
string 文字列としてのイベント。
BinaryData1 イベント メッセージのバイト数。
CloudEvent1 イベント オブジェクト。 CloudEvents スキーマを使用して配信するように Event Grid が構成されているときに使用します。
EventGridEvent1 イベント オブジェクト。 Event Grid スキーマを使用して配信するように Event Grid が構成されているときに使用します。

関数でイベントのバッチを処理するとき、Event Grid トリガーは次の種類にバインドできます。

Type 説明
CloudEvent[]1
EventGridEvent[]1
string[],
BinaryData[]1
バッチのイベントの配列。 各エントリは 1 つのイベントを表します。

1 これらの型を使用するには、Microsoft.Azure.Functions.Worker.Extensions.EventGrid 3.3.0 以降SDK 型バインドの一般的な依存関係に関する記事を参照する必要があります。

Event Grid 出力バインド

関数で 1 つのイベントを書き込むとき、Event Grid 出力バインドは次の型にバインドできます。

Type 説明
string 文字列としてのイベント。
byte[] イベント メッセージのバイト数。
JSON シリアル化可能な型 JSON イベントを表すオブジェクト。 Functions は、単純な従来の CLR オブジェクト (POCO) 型を JSON データにシリアル化しようとします。

関数で複数のイベントを書き込むとき、Event Grid 出力バインドは次の型にバインドできます。

Type 説明
T[] (T は単一のイベントの種類の 1 つ) 複数のイベントを含む配列。 各エントリは 1 つのイベントを表します。

その他の出力シナリオでは、Azure.Messaging.EventGrid から型を直接作成して使用します。

host.json 設定

Event Grid トリガーは Webhook HTTP 要求を使用します。これは、HTTP トリガーと同じ host.json 設定を使用して構成できます。

次のステップ