このチュートリアルでは、Event Grid カスタム トピックを使用して、Azure Event Grid 名前空間で受信した MQTT メッセージを Azure 関数にルーティングします。
Azure サブスクリプションを持っていない場合は、無料試用版にサインアップできます。
Event Grid トリガーを使用して Azure 関数を作成する
Visual Studio Code を使用した Azure 関数の作成に関するページの手順に従いますが、HTTP トリガーを使用する代わりに Azure Event Grid トリガーを使用します。
Von Bedeutung
すべてのリソースを同じリージョンに作成します。
次の例のようなコードが表示されます。
using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class MyEventGridTriggerFunc
{
private readonly ILogger<MyEventGridTriggerFunc> _logger;
public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
{
_logger = logger;
}
[Function(nameof(MyEventGridTriggerFunc))]
public void Run([EventGridTrigger] CloudEvent cloudEvent)
{
_logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
}
}
}
この Azure 関数は、このチュートリアルの後半でトピックのサブスクリプションのイベント ハンドラーとして使用します。
注
このチュートリアルは、.NET 8.0 (分離) ランタイム スタックを使用する Azure 関数でテストされています。
Event Grid トピックを作成する (カスタム トピック)
Event Grid トピックを作成します。 Azure portal を使用したカスタム トピックの作成に関するページを参照してください。 Event Grid トピックを作成するときに、[ 詳細 ] タブの [ イベント スキーマ] で [ クラウド イベント スキーマ v1.0] を選択します。
注
このチュートリアルでは、 どこでもクラウド イベント スキーマ v1.0 を使用します。
関数を使用してトピックにサブスクリプションを追加する
この手順では、前に作成した Azure 関数を使用して、Event Grid トピックのサブスクリプションを作成します。
[ Event Grid トピック ] ページで、[ サブスクリプション] を選択します。
[ イベント サブスクリプションの作成 ] ページで、次の手順を実行します。
イベント サブスクリプションの 名前 を入力します。
[イベント スキーマ] で、[クラウド イベント スキーマ 1.0] を選択します。
[エンドポイントのタイプ] で、 [Azure 関数] を選択します。
次に、[ エンドポイントの構成] を選択します。
[ Azure 関数の選択 ] ページで、次の手順を実行します。
[サブスクリプション] で、Azure サブスクリプションを選択します。
[リソース グループ] で、Azure 関数を持つリソース グループを選択します。
関数アプリの場合は、関数を持つ Functions アプリを選択します。
スロットで運用を選択します。
[関数] で、Azure 関数を選択します。
次に、[選択の確認] を選びます。
[ イベント サブスクリプションの作成 ] ページで、[ 作成] を選択します。
[ イベント サブスクリプション] ページに、作成したサブスクリプションが表示されます。
名前空間、クライアント、トピックスペース、およびアクセス許可バインディングを作成する
「クイック スタート: Azure portal で Event Grid 名前空間を使用して MQTT メッセージを発行してサブスクライブする」の手順に従って、次の操作を行います。
- Event Grid 名前空間を作成します。
- 2 つのクライアントを作成します。
- トピック空間を作成します。
- パブリッシャーとサブスクライバーのアクセス許可バインドを作成します。
- MQTTX アプリを使用してテストし、クライアントがメッセージを送受信できることを確認します。
名前空間のマネージド ID を有効にする
このセクションでは、Event Grid 名前空間に対してシステム割り当てマネージド ID を有効にします。 次に、特定の ID に Event Grid カスタム トピックへの 送信 権限を付与します。 その後、メッセージをカスタム トピックにルーティングできます。 これを有効にするには、カスタム トピックの Event Grid データ送信者 ロールにマネージド ID を追加します。
[ Event Grid 名前空間] ページで、[ ID] を選択します。 [オン] を選択し、[保存] を選択します。
"Event Grid カスタム トピックのために Event Grid トピックに移動します。"
左側のナビゲーション バーで [ アクセス制御 ] を選択します。
[ アクセス制御 ] ページで、[ 追加] を選択し、[ ロールの割り当ての追加] を選択します。
ロールの割り当ての追加ウィザードの [ロール] ページで、Event Grid データ送信者ロールを選択し、[次へ] を選択します。
[ ロールの割り当ての追加] の [ メンバー ] ページで、[ マネージド ID] を選択し、[ メンバーの選択] を選択します。
[ マネージド ID の選択 ] ページで、次の手順を実行します。
Azure のサブスクリプションを選択します。
[マネージド ID] には、[Event Grid 名前空間] を選択します。
Event Grid 名前空間と同じ名前のマネージド ID を選択します。
「を選択し、を選択してください。」
[ ロールの割り当ての追加] ページで、[ 次へ] を選択します。
[ 確認と割り当て ] ページで、設定を確認し、[ 確認と割り当て] を選択します。
カスタム トピックを使用して Azure 関数へのメッセージのルーティングを構成する
このセクションでは、受信したメッセージが作成したカスタム トピックにルーティングされるように、Event Grid 名前空間のルーティングを構成します。
[ Event Grid 名前空間] ページで 、[ ルーティング] を選択します。
[ルーティング] ページで、[ルーティングを有効にする] を選択します。
[トピックの種類] で、[カスタム トピック] を選択します。
[トピック] で、このチュートリアル用に作成したカスタム トピックを選択します。
配信のマネージド ID の場合は、[システム割り当て済み] を選択します。
を選択してを適用します。
MQTTX を使用してテスト MQTT メッセージを送信する
テスト MQTT メッセージを名前空間に送信し、関数が受け取っていることを確認します。
MQTTX アプリを使用した発行とサブスクライブの手順に従って、いくつかのテスト メッセージを Event Grid 名前空間に送信します。
イベントまたはメッセージのフローを次に示します。
MQTTX は、Event Grid 名前空間のトピック空間にメッセージを送信します。
メッセージは、構成したカスタム トピックにルーティングされます。
メッセージは、Azure 関数であるイベント サブスクリプションに転送されます。
ログ機能を使用して、関数がイベントを受信したことを確認します。