チュートリアル:Azure Event Grid 経由で受信した Azure Service Bus のイベントに Azure Logic Apps を使用して応答する

このチュートリアルでは、Azure Logic Apps を使用して、Azure Event Grid 経由で受信した Azure Service Bus イベントに応答する方法について説明します。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

Service Bus 名前空間を作成する

このチュートリアルの手順に従ってください。クイック スタート: Azure portal を使用して Service Bus トピックとそのサブスクリプションを作成する」で確認し、次のタスクを実行します:

  • Premium Service Bus 名前空間を作成します。
  • 接続文字列を取得します。
  • Service Bus トピックを作成します。
  • トピックへのサブスクリプションを作成します。 このチュートリアルで必要なサブスクリプションは 1 つだけです。そのため、サブスクリプション S2 および S3 を作成する必要はありません。

Service Bus トピックにメッセージを送信する

この手順では、サンプル アプリケーションを使用して、前の手順で作成した Service Bus トピックにメッセージを送信します。

  1. GitHub azure-service-bus リポジトリをクローンするか、zip ファイルをダウンロードし、解凍してファイルを抽出します。

  2. Visual Studio で \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 フォルダーに移動し、SBEventGridIntegration.sln ファイルを開きます。

  3. ソリューション エクスプローラー ウィンドウで、 [MessageSender] プロジェクトを展開し、 [Program.cs] を選択します。

  4. <SERVICE BUS NAMESPACE - CONNECTION STRING> を Service Bus 名前空間への接続文字列で置き換え、<TOPIC NAME> をトピックの名前で置き換えます。

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. 5 つのテスト メッセージを Service Bus トピックに送信するプログラム (const int numberOfMessages = 5;) をビルドして実行します。

    Console app output

Logic Apps を使用してメッセージを受信する

この手順では、Service Bus イベントを Azure Event Grid 経由で受信する Azure ロジック アプリを作成します。

  1. [+ リソースの作成][統合][ロジック アプリ] の順に選択します。

    Screenshot that shows the Create a resource -> Integration -> Logic app menu.

  2. [ロジック アプリの作成] ページで、次の手順のようにします。

    1. Azure サブスクリプションを選択します。
    2. [リソース グループ] では [既存のものを使用] を選択し、以前に作成済みの、他のリソース (Azure 関数、Service Bus 名前空間など) に使用したリソース グループを選択します。
    3. ロジック アプリの名前を入力します。
    4. ロジック アプリの [リージョン] を選択します。
    5. [プランの種類][従量課金] を選択します。
    6. [確認および作成] を選択します。 Screenshot that shows the Create a logic app page.
    7. [確認および作成] ページで [作成] を選択してロジック アプリを作成します。
  3. [デプロイ完了] ページで、[リソースに移動] を選択し、[ロジック アプリ] ページに移動します。

  4. [Logic Apps デザイナー] ページの [テンプレート] で、 [空のロジック アプリ] を選択します。

Event Grid 経由で Service Bus からメッセージを受信するステップを追加する

  1. [ロジック アプリ] ページで、左側のメニューの [ロジック アプリ デザイナー] を選択します。

  2. 右側のペインの [テンプレート][空のロジック アプリ] を選択します。

    Screenshot that shows the Logic app designer page with the Blank logic app option selected.

  3. デザイナーで、次の手順を実行します。

    1. Event Grid を検索します。

    2. [リソース イベントが発生したとき - Azure Event Grid] を選択します。

      Screenshot that shows the Logic Apps Designer with Event Grid trigger selected.

  4. [サインイン] を選択します。

    Screenshot that shows the Logic Apps Designer with the Sign-in button selected.

  5. [アカウントへのサインイン] ページで、Azure へのサインインに使用するアカウントを選択します。 1.

  6. [When a resource event occurs](リソース イベントが発生したとき) ページで、次の手順を実行します。

    1. Azure サブスクリプションを選択します。

    2. [リソースの種類] で、 [Microsoft.ServiceBus.Namespaces] を選択します。

    3. [リソース名] で、Service Bus 名前空間を選択します。

    4. [新しいパラメーターの追加] を選択し、 [サフィックス フィルター] を選択してから、フォーカスをドロップダウン リストの外に移動します。

      Screenshot that shows adding of a new parameter of type Suffix filter.

    5. [サフィックス フィルター] で、Service Bus トピックのサブスクリプションの名前を入力します。

      Screenshot that shows the Logic Apps Designer with connection configuration for the Service Bus namespace.

  7. デザイナーで [+ 新しいステップ] を選択し、次の手順を実行します。

    1. Service Bus を検索します。

    2. 一覧から [Service Bus] を選択します。

      Screenshot that shows the selection of Service Bus.

    3. [アクション] 一覧から [メッセージを取得します] を選択します。

    4. [トピック サブスクリプションからメッセージを取得する (ピークロック)] を選択します。

      Screenshot that shows the Logic Apps Designer with Get messages from a topic subscription selected.

    5. 次の手順のようにします。

      1. 接続名を入力します。 たとえば、「トピック サブスクリプションからのメッセージの取得」などです。

      2. [認証の種類][アクセス キー] に設定されていることを確認します。

      3. [接続文字列] で、接続文字列をコピーし、前に保存した Service Bus 名前空間に貼り付けます。

      4. [作成] を選択します

        Screenshot that shows the Logic Apps Designer with the Service Bus connection string specified.

    6. トピックサブスクリプションを選択します。

      Screenshot that shows the Logic Apps Designer with the Service Bus topic and subscription specified.

受信したメッセージを処理して完了するステップを追加する

このステップでは、受信したメッセージをメールで送信し、メッセージを完了するステップを追加します。 実際のシナリオでは、メッセージを完了する前にロジック アプリでメッセージを処理します。

foreach ループを追加する

  1. [+ New step (+ 新しいステップ)] を選択します。

  2. [コントロール] を選択して選択します。

    Screenshot that shows the Control category.

  3. [アクション] の一覧で [For each] を選択します。

    Screenshot that shows the For-each operation selected.

  4. [以前の手順から出力を選択] (必要に応じてテキスト ボックス内をクリック)では、 [Get messages from a topic subscription (peek-lock)](トピック サブスクリプションからメッセージを取得 (peek-lock)) の下の [本文] を選択します。

    Screenshot that shows the selection of For each input.

メッセージ本文を含む電子メールを送信するステップを For each ループ内に追加する

  1. For each ループ内で、 [アクションの追加] を選択します。

    Screenshot that shows the selection of Add an action button in the For-each loop.

  2. [コネクタとアクションを検索する] ボックスで、「Office 365」と入力します。

  3. 検索結果で、「Office 365 Outlook」を選択します。

    Screenshot that shows the selection of Office 365.

  4. アクションの一覧で、 [メールの送信 (V2)] を選択します。

    Screenshot that shows the selection of Send an email operation.

  5. [サインイン] を選択し、手順に従って Office 365 Outlook への接続を作成します。

  6. [メールの送信 (V2)] ウィンドウで、次の手順に従います。

  7. [本文] のテキスト ボックス内を選択し、次の手順に従います。

    1. [宛先] にはメール アドレスを入力します。

    2. [件名] には、「Message received from Service Bus topic's subscription」と入力します。

    3. [式] に切り替えます。

    4. 次の式を入力します。

      base64ToString(items('For_each')?['ContentData'])
      
    5. [OK] を選択します。

      Screenshot that shows the expression for Body of the Send an email activity.

For each ループに別のアクションを追加してメッセージを完了する

  1. For each ループ内で、 [アクションの追加] を選択します。

    1. [最近使った項目] 一覧から [Service Bus] を選択します。

    2. アクションの一覧から [トピック サブスクリプション内のメッセージを完了する] を選択します。

      Screenshot that shows the selection of Complete a message in a topic subscription.

    3. Service Bus トピックを選択します。

    4. トピックに対するサブスクリプションを選択します。

    5. [メッセージのロック トークン] で、 [動的なコンテンツ] から [ロック トークン] を選択します。

      Screenshot that shows the lock token field.

  2. Logic Apps デザイナーのツールバーの [保存] を選択して、ロジック アプリを保存します。

    Screenshot that shows the Save button in the Logic app designed.

アプリをテストする

  1. まだテスト メッセージをトピックに送信していない場合は、「Service Bus トピックにメッセージを送信する」セクションの手順に従って、トピックにメッセージを送信します。

  2. ロジック アプリの [概要] ページに切り替えてから、一番下のペインで [実行の履歴] タブに切り替えます。 トピックに送信されたロジック アプリの実行のメッセージが表示されます。 ロジック アプリの実行が確認できるまでに数分かかる場合があります。 ツール バーの [Refresh](最新の情報に更新) を選択して、ページを最新の情報に更新してください。

    Screenshot that shows the Logic app run history.

  3. ロジック アプリの実行を選択して詳細を確認します。 for ループで 5 つのメッセージが処理されていることに注目してください。

    Screenshot that shows the details for the selected logic app run.

  4. ロジック アプリによって受信された各メッセージの電子メールを受け取ります。

    Screenshot of Outlook with the messages received from the topics' subscription.

トラブルシューティング

しばらく待って最新の情報に更新しても呼び出しが表示されない場合は、次の手順に従います。

  1. メッセージが Service Bus トピックに到達したことを確認します。 [Service Bus トピック] ページの受信メッセージカウンターに注目してください。 この場合、MessageSender アプリケーションを 1 回実行したので、5 件のメッセージが表示されています。

    Screenshot that shows the Service Bus Topic page with incoming message count selected.

  2. Service Bus サブスクリプションにアクティブなメッセージがないことを確認します。 このページにイベントが 1 つも表示されない場合、 [Service Bus Subscription](Service Bus サブスクリプション) ページに [アクティブなメッセージ数] が表示されていないことを確認してください。 このカウンターの数値がゼロより大きい場合は、なんらかの理由により、サブスクリプションのメッセージがハンドラー関数 (イベント サブスクリプション ハンドラー) に転送されていません。 イベント サブスクリプションが適切に設定されていることを確認してください。

    Screenshot that shows the Service Bus Subscription page with the active message count selected.

  3. また、Service Bus 名前空間の [イベント] ページに配信済みイベントが表示されます。

    Screenshot that shows the Events page of the Service Bus Namespace page.

  4. イベントが配信されたことは、 [イベント サブスクリプション] ページでも確認できます。 このページには、 [イベント] ページでイベント サブスクリプションを選択することによってアクセスできます。

    Screenshot that shows the Event Subscription page with the delivered event count selected.

次のステップ