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 つのイベントを表します。 |
その他の出力シナリオでは、 EventGridPublisherClient Azure.Messaging.EventGrid の他の型 を直接作成して使用します。 依存関係の挿入を使用して Azure SDK からクライアントの種類を作成する例については Azure クライアントの登録に関するページを参照してください。
host.json 設定
Event Grid トリガーは Webhook HTTP 要求を使用します。これは、HTTP トリガーと同じ host.json 設定を使用して構成できます。
次のステップ
- ご質問がある場合は、こちらからチームに問題をお送りください
- Event Grid トリガー
- Event Grid 出力バインド
- Event Grid イベントがディスパッチされたときに関数を実行する
- Event Grid イベントをディスパッチする