Event Grid イベントのイベント ハンドラーとして関数を使用する

イベント ハンドラーは、イベントの送信先となる場所です。 ハンドラーでは、イベントを処理するアクションが実行されます。 一部の Azure サービスは、イベントを処理するように自動的に構成されます。Azure Functions はその 1 つです。

Azure の関数をイベントのハンドラーとして使用するには、次のいずれかの方法に従います。

  • Event Grid トリガーを使用する。 エンドポイントのタイプとして Azure 関数を指定します。 さらに、関数アプリと、イベントを処理する関数を指定します。
  • HTTP トリガーを使用する。 エンドポイントのタイプとして Webhook を指定します。 さらに、イベントを処理する関数の URL を指定します。

お勧めするのは最初の方法 (Event Grid トリガー) です。この方法には、2 番目の方法と比較して次の利点があります。

  • Event Grid では、Event Grid トリガーが自動的に検証されます。 汎用 HTTP トリガーの場合は、検証応答を開発者自身が実装する必要があります。
  • Event Grid は、Event Grid イベントによってトリガーされる関数にイベントを配信する速度を、その関数がイベントを処理できるとみなされた速度に基づいて自動的に調整します。 この速度調整機能により、関数のイベント処理速度の経時的な変化が原因で関数がイベントを処理できなくなるために生じる配信エラーを防止できます。 スループットを高めて効率を向上させるには、イベント サブスクリプションでのバッチ処理を有効にします。 詳細については、「バッチ処理を有効にする」をご覧ください。

Note

  • Event Grid トリガーで Azure 関数を使用してイベント サブスクリプションを追加すると、Event Grid サービス プリンシパルの資格情報を使用して、Event Grid によってターゲット関数のアクセス キーがフェッチされます。 Azure サブスクリプションで Event Grid リソース プロバイダーを登録すると、アクセス許可が Event Grid に付与されます。
  • Microsoft Entra ID アプリケーションを使用して Azure 関数を保護する場合、HTTP トリガーを使用する一般的な Webhook アプローチを採用する必要があります。 サブスクリプションを追加するときは、Azure 関数エンドポイントを Webhook URL として使用します。

チュートリアル

タイトル 説明
クイック スタート: 関数を使用したイベントの処理 処理するカスタム イベントを関数に送信します。
チュートリアル: Event Grid を使用して、アップロードされたイメージのサイズ変更を自動化する ユーザーは、Web アプリを使ってストレージ アカウントにイメージをアップロードします。 ストレージ BLOB が作成されると、Event Grid によって Function App にイベントが送信され、アップロードされたイメージのサイズが変更されます。
チュートリアル: ビッグ データをデータ ウェアハウスにストリーミングする Event Hubs によってキャプチャ ファイルが作成されると、Event Grid が Function App にイベントを送信します。 アプリは Capture ファイルを取得し、データ ウェアハウスにデータを移行します。
チュートリアル:Azure Service Bus の Azure Event Grid への統合の例 Event Grid では、Service Bus トピックからのメッセージが、Function App とロジック アプリに送信されます。

REST の例 (PUT 用)

{
	"properties": 
	{
		"destination": 
		{
			"endpointType": "AzureFunction",
			"properties": 
			{
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
				"maxEventsPerBatch": 10,
				"preferredBatchSizeInKilobytes": 64
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

バッチ処理を有効にする

スループットを高めるには、サブスクリプションでバッチ処理を有効にします。 Azure portal を使用する場合は、サブスクリプションの作成時または作成後に、バッチごとの最大イベント数と優先バッチ サイズ (KB 単位) を設定できます。

バッチ設定の構成には、Azure portal、PowerShell、CLI、または Resource Manager テンプレートを使用できます。

Azure portal

UI でサブスクリプションを作成するときに、 [イベント サブスクリプションの作成] ページの [高度な機能] タブで、 [バッチごとの最大イベント数][優先バッチ サイズ (KB 単位)] の値を設定します。

Enable batching at the time of creating a subscription

既存のサブスクリプションについては、 [Event Grid トピック] ページの [機能] タブでこれらの値を更新できます。

Enable batching after creation

Azure Resource Manager テンプレート

Azure Resource Manager テンプレートで maxEventsPerBatchpreferredBatchSizeInKilobytes を設定できます。 詳細については、Microsoft.EventGrid eventSubscriptions テンプレートのリファレンスをご覧ください。

Azure CLI

az eventgrid event-subscription create コマンドでパラメーター --max-events-per-batch または --preferred-batch-size-in-kilobytes を使用して、バッチ関連の設定を構成できます。

Azure PowerShell

コマンドレット New-AzEventGridSubscription または Update-AzEventGridSubscription でパラメーター -MaxEventsPerBatch または -PreferredBatchSizeInKiloBytes を使用して、バッチ関連の設定を構成できます。

Note

Event Grid トリガーを使用すると、Event Grid サービスではターゲットの Azure 関数のクライアント シークレットがフェッチされ、それを使用して Azure 関数にイベントが配信されます。 Microsoft Entra アプリケーションを使用して Azure 関数を保護する場合、一般的な Webhook アプローチを実行して、HTTP トリガーを使用する必要があります。

次のステップ

サポートされているイベント ハンドラーの一覧については、「イベント ハンドラー」を参照してください。