ラボ 09: Event Grid イベントの発行とサブスクライブ

Microsoft Azure ユーザー インターフェイス

Microsoft クラウド ツールの動的な性質を考慮すると、このトレーニング コンテンツの開発の後に発生する Azure UI の変更に気付くかもしれません。 その結果、ラボの指示とラボの手順が正しく整合しなくなる可能性があります。

Microsoft は、コミュニティから必要な変更の通知があったときに、このトレーニング コースを更新します。 ただし、クラウドの更新は頻繁に発生するため、このトレーニング コンテンツの更新の前に UI の変更に気付く可能性があります。 これが発生した場合は、その変更に適応し、ラボでは必要に応じてそれらに対応してください。

Instructions

開始する前に

ラボ環境にサインインする

次の資格情報を使用して Windows 11 仮想マシン (VM) にサインインします。

  • ユーザー名: Admin
  • パスワード: Pa55w.rd

: 仮想ラボ環境に接続するための手順は、インストラクターから提供されます。

インストールされているアプリケーションを確認する

Windows 11 デスクトップでタスク バーを探します。 タスク バーには、このラボで使用する次のようなアプリケーションのアイコンが含まれています。

  • Microsoft Edge
  • Microsoft Visual Studio Code

課題シナリオ

このラボでは、コンテナーでホストされている概念実証 Web アプリから始めます。これは、Event Grid のサブスクライブに使用されます。 このアプリを使用すると、イベントを送信し、そのイベントが成功したことを示す確認メッセージを受信できます。

アーキテクチャの図

ユーザーによる Event Grid イベントの発行とサブスクライブを示すアーキテクチャの図。

演習 1: Azure リソースを作成する

タスク 1: Azure portal を開く

  1. タスク バーで、Microsoft Edge アイコンを選択します。

  2. 開いたブラウザー ウィンドウで、Azure portal (https://portal.azure.com) に移動してから、このラボで使用するアカウントでサインインします。

    :初めて Azure portal にサインインする場合は、このポータルのツアーが表示されます。 [はじめに] を選択してツアーをスキップし、ポータルの使用を開始します。

タスク 2: Azure Cloud Shell を開く

  1. Azure portal で [Cloud Shell] アイコン Cloud Shell アイコン を選択して Cloud Shell を開きます。 Cloud Shell が既定で PowerShell セッションに設定されている場合は、[Cloud Shell] メニューの [Bash に切り替える] を選択し、[確認] を選択します。

    : Cloud Shell は、大なり記号 (>) とアンダースコア文字 (_) で表されます。

    Cloud Shell を初めて起動した場合は、リソースを作成するための一連のプロンプトが表示されます。 次の表に示すアクションを実行します。

    プロンプト アクション
    ページで、 [Bash] を選択します。
    はじめに [ストレージ アカウントのマウント] を選択し、ドロップダウンから自分の [ストレージ アカウント サブスクリプション] を選択し、最後に [適用] を選択します。
    ストレージ アカウントのマウント [ストレージ アカウントを自動的に作成する] を選択し、[次へ] を選択します。
  2. Azure portal の Cloud Shell コマンド プロンプトで次のコマンドを実行して、Azure コマンド ライン インターフェイス (Azure CLI) ツールのバージョンを取得します。

     az --version
    

タスク 3: Microsoft EventGrid プロバイダーの登録を確認する

  1. [Cloud Shell] ペインで次のコマンドを実行して、リソース プロバイダー “Microsoft.EventGrid” が登録されたかどうかを確認します。

     az provider show --namespace Microsoft.EventGrid --query "registrationState"
    
  2. Microsoft.EventGrid プロバイダーが既に登録されていることに注意してください。

  3. [Cloud Shell] ペインを閉じます。

タスク 4: カスタム Event Grid トピックを作成する

  1. Azure portal のナビゲーション ウィンドウで [リソースの作成] を選択します。

  2. [リソースの作成] ブレードで、[サービスとマーケットプレースの検索] テキスト ボックスに「Event Grid トピック」と入力し、Enter キーを押します。

  3. Marketplace 検索結果ブレードで “Event Grid トピック” という結果を選択し、 [作成] を選択します。

  4. [トピックの作成] ブレードの [基本] タブで、次のアクションを実行してから、 [詳細] タブを選択します。

    設定 アクション
    [サブスクリプション] ドロップダウン リスト 既定値のままにします
    [リソース グループ] ドロップダウン リスト [新規作成] を選択し、「PubSubEvents」と入力して、 [OK] を選択します
    [名前] テキスト ボックス hrtopic [ご自分の名前] 」と入力します
    [リージョン] ドロップダウン リスト [米国東部] を選択します。

    次のスクリーンショットには、 [基本] タブに構成されている設定が示されています。

    [トピックの作成] ブレードで構成された設定を示すスクリーンショット

  5. [詳細] タブで、[イベント スキーマ] ドロップダウン リストから [イベント グリッド スキーマ] エントリが選択されていることを確認し、[確認および作成] を選択します。

  6. [確認と作成] タブで、前の手順で選択したオプションを確認します。

  7. [作成] を選択し、指定した構成を使用して Event Grid トピックを作成します。

    : ラボを続行する前に、Azure がトピックの作成を完了するまで待ってください。 トピックが作成されると、通知が届きます。

タスク 5: Web アプリに Azure Event Grid ビューアーをデプロイする

  1. Azure portal のナビゲーション ウィンドウで [リソースの作成] を選択します。

  2. [リソースの作成] ブレードで、[サービスとマーケットプレースの検索] テキスト ボックスに「Web アプリ」と入力し、Enter キーを押します。

  3. Marketplace 検索結果ブレードで “Web アプリ” という結果を選択し、 [作成] を選択します。

  4. [Web アプリの作成] ブレードの [基本] タブで、次のアクションを実行してから、[Docker] タブを選択します。

    設定 アクション
    [サブスクリプション] ドロップダウン リスト 既定値のままにします
    [リソース グループ] ドロップダウン リスト リストで [PubSubEvents] を選択します。
    [名前]  テキスト ボックス eventviewer [ご自分の名前] 」と入力します
    [公開] セクション [Docker コンテナー] を選択します
    [オペレーティング システム] セクション [Linux] を選択します
    [リージョン] ドロップダウン リスト [米国東部] を選択します。
    Linux Plan (East US) セクション [新規作成] を選択し、 [名前] テキスト ボックスに「EventPlan」と入力して、 [OK] を選択します
    [価格プラン] セクション 既定値のままにします

    次のスクリーンショットは、 [Web アプリの作成] ブレードで構成されている設定を示しています。

    [Web アプリの作成] ブレードで構成された設定を示すスクリーンショット

  5. [Docker] タブで、次のアクションを実行し、 [確認と作成] を選択します。

    設定 アクション
    [オプション] ドロップダウン リスト [単一コンテナー] を選択します
    [イメージのソース] ドロップダウン リスト [Docker Hub] を選択します
    [アクセスの種類] ドロップダウン リスト [Public] を選択します
    [イメージとタグ] テキスト ボックス microsoftlearning/azure-event-grid-viewer:latest」と入力します

    次のスクリーンショットには、 [Docker] タブに構成されている設定が示されています。

    [Web アプリの作成] の [Docker] タブで構成された設定を示すスクリーンショット

  6. [確認と作成] タブで、前の手順で選択したオプションを確認します。

  7. [作成] を選択し、指定した構成を使用して Web アプリを作成します。

    : ラボを続行する前に、Azure が Web アプリの作成を完了するまで待ってください。 アプリが作成されると、通知が届きます。

確認

この演習では、ラボの残りの部分で使用する、Event Grid トピックと Web アプリを作成しました。

演習 2: Event Grid サブスクリプションを作成する

タスク 1: Event Grid ビューアー Web アプリにアクセスする

  1. Azure portal のナビゲーション ウィンドウで [リソース グループ] を選択します。

  2. [リソース グループ] ブレードで、PubSubEvents リソース グループを選択します。

  3. [PubSubEvents] ブレードで、eventviewer [自分の名前] Web アプリを選択すると、 [概要] セクションが表示されます。

  4. [概要] セクションで、[要点] ペインの [既定のドメイン] の値を記録します。 この値は、ラボの後半で使用します。

  5. 引き続き [概要] セクションで、 [参照] ボタンをクリックします。

  6. 現在実行中の Azure Event Grid ビューアー Web アプリを確認します。 ラボの残りの部分で、この Web アプリを実行したままにします。

    : この Web アプリは、イベントがエンドポイントに送信されるとリアルタイムで更新されます。 このアプリを使用して、ラボ全体でイベントを監視します。

  7. Azure portal を表示する、現在開いているブラウザー ウィンドウに戻ります。

タスク 2: 新しいサブスクリプションを作成する

  1. Azure portal のナビゲーション ウィンドウで [リソース グループ] を選択します。

  2. [リソース グループ] ブレードで、このラボで先ほど作成した PubSubEvents リソース グループを選択します。

  3. [PubSubEvents] ブレードで、このラボで先ほど作成した hrtopic [自分の名前] Event Grid トピックを選択します。

  4. [Event Grid トピック] ブレードで、 [+ イベント サブスクリプション] を選択します。

  5. [イベント サブスクリプションの作成] ブレードで、次のアクションを実行し、 [作成] を選択します。

    設定 アクション
    [名前]  テキスト ボックス basicsub」と入力します
    [イベント スキーマ] ドロップダウン リスト [Event Grid スキーマ] を選択します
    [エンドポイントの種類] ドロップダウン リスト [Web hook] を選択します
    エンドポイント [エンドポイントを構成する] を選択します。 [サブスクライバー エンドポイント] テキスト ボックスに、前に記録しておいた Web アプリ URL の値を入力し、https:// プレフィックスが使用されていることを確認し、サフィックス /api/updates を追加して、 [選択の確認] を選択します。 たとえば、Web アプリ URL の値が http://eventviewerstudent.azurewebsites.net/ の場合は、サブスクライバー エンドポイントhttps://eventviewerstudent.azurewebsites.net/api/updates になります。

    次のスクリーンショットには、 [イベント サブスクリプションの作成] ブレードに構成されている設定が示されています。

    [イベント サブスクリプションの作成] ブレードで構成された設定を示すスクリーンショット

    : ラボを続行する前に、Azure がサブスクリプションの作成を完了するまで待ってください。 サブスクリプションが作成されると、通知が届きます。

タスク 3: サブスクリプション検証イベントを確認する

  1. Azure Event Grid ビューアー Web アプリを表示しているブラウザー ウィンドウに戻ります。

  2. サブスクリプション作成プロセスの一環で作成された、Microsoft.EventGrid.SubscriptionValidationEvent イベントを確認します。

  3. イベントを選択し、その JSON コンテンツを確認します。

  4. Azure portal がある、現在開いているブラウザー ウィンドウに戻ります。

タスク 4: サブスクリプションの資格情報を記録する

  1. Azure portal のナビゲーション ウィンドウで [リソース グループ] を選択します。

  2. [リソース グループ] ブレードで、このラボで先ほど作成した PubSubEvents リソース グループを選択します。

  3. [PubSubEvents] ブレードで、このラボで先ほど作成した hrtopic [自分の名前] Event Grid トピックを選択します。

  4. [Event Grid トピック] ブレードで、 [トピック エンドポイント] フィールドの値を記録します。 この値は、ラボの後半で使用します。

  5. [設定] カテゴリで、 [アクセス キー] リンクを選択します。

  6. [アクセス キー] セクションで、 [キー 1] テキスト ボックスの値を記録します。 この値は、ラボの後半で使用します。

確認

この演習では、新しいサブスクリプションを作成し、その登録を検証し、トピックに新しいイベントを発行するために必要な資格情報を記録しました。

演習 3: .NET から Event Grid イベントを発行する

タスク 1: .NET プロジェクトを作成する

  1. [スタート] 画面で、 [Visual Studio Code] タイルを選択します。

  2. [ファイル] メニューの [フォルダーを開く] を選択します。

  3. 開いたエクスプローラーのウィンドウで、”Allfiles (F):\Allfiles\Labs\09\Starter\EventPublisher” を参照し、 [フォルダーの選択] を選択します。

  4. [Visual Studio Code] ウィンドウで、上部のメニュー バーから [ターミナル] メニューに移動し、 [新しいターミナル] を選択します。

  5. 次のコマンドを実行して、現在のフォルダーに EventPublisher という名前の新しい .NET プロジェクトを作成します。

     dotnet new console --framework net8.0 --name EventPublisher --output . 
    

    : dotnet new コマンドは、プロジェクトと同じ名前のフォルダーに新しいコンソール プロジェクトを作成します。

  6. 次のコマンドを実行して、NuGet から Azure.Messaging.EventGrid のバージョン 4.11.0 をインポートします。

     dotnet add package Azure.Messaging.EventGrid --version 4.11.0
    

    : dotnet add package コマンドは、NuGet から Microsoft.Azure.EventGrid パッケージを追加します。 詳細については、「Azure.Messaging.EventGrid」を参照してください。

  7. 次のコマンドを実行して、.NET Web アプリをビルドします。

     dotnet build
    
  8. [ターミナルの強制終了] またはごみ箱 アイコンを選択して、現在開いているターミナルおよび関連プロセスを閉じます。

タスク 2: Event Grid に接続するように Program クラスを変更する

  1. [Visual Studio Code] ウィンドウの [エクスプローラー]  ペインで、Program.cs ファイルを開きます。

  2.  Program.cs ファイルのコード エディター タブで、既存のファイルのすべてのコードを削除します。

  3. 次のコードを追加します。

     using Azure;
     using Azure.Messaging.EventGrid;
     using System;
     using System.Threading.Tasks;    
     public class Program
     {
         private const string topicEndpoint = "<topic-endpoint>";
         /* Update the topicEndpoint string constant by setting its value to the Topic
            Endpoint of the Event Grid topic that you recorded previously in this lab. */
         private const string topicKey = "<topic-key>";
         /* Update the topicKey string constant by setting its value to the Key of the Event Grid topic that you recorded previously in this lab. */     
         public static async Task Main(string[] args)
         {
             //Add Main code here
         }
     }
    
  4. 7 行目で、<topic-endpoint> プレースホルダーを、このラボで前に記録しておいた Event Grid トピック エンドポイントの値に置き換えます。

  5. 10 行目で、<topic-key> プレースホルダーを、このラボで前に記録しておいた Event Grid トピックのアクセス キーの値に置き換えます。

タスク 3: 新しいイベントを発行する

  1. Program.cs ファイルの Main メソッドを次のコードで置き換えます。

     public static async Task Main(string[] args)
     {   
         /* To create a new variable named "endpoint" of type "Uri", 
            using the "topicEndpoint" string constant as a constructor parameter */
         Uri endpoint = new Uri(topicEndpoint);
    
         /* To create a new variable named "credential" of type "AzureKeyCredential",
            use the "topicKey" string constant as a constructor parameter. */
         AzureKeyCredential credential = new AzureKeyCredential(topicKey);
    
         /* To create a new variable named "client" of type "EventGridPublisherClient", 
            using the "endpoint" and "credential" variables as constructor parameters */
         EventGridPublisherClient client = new EventGridPublisherClient(endpoint, credential);
    
         /* To create a new variable named "firstEvent" of type "EventGridEvent",
            and populate that variable with sample data */        
         EventGridEvent firstEvent = new EventGridEvent(
             subject: $"New Employee: Alba Sutton",
             eventType: "Employees.Registration.New",
             dataVersion: "1.0",
             data: new
             {
                 FullName = "Alba Sutton",
                 Address = "4567 Pine Avenue, Edison, WA 97202"
             }
         );
    
         /* To create a new variable named "secondEvent" of type "EventGridEvent",
            and populate that variable with sample data */
         EventGridEvent secondEvent = new EventGridEvent(
             subject: $"New Employee: Alexandre Doyon",
             eventType: "Employees.Registration.New",
             dataVersion: "1.0",
             data: new
             {
                 FullName = "Alexandre Doyon",
                 Address = "456 College Street, Bow, WA 98107"
             }
         );
    
         /* To asynchronously invoke the "EventGridPublisherClient.SendEventAsync"
            method using the "firstEvent" variable as a parameter */
         await client.SendEventAsync(firstEvent);
         Console.WriteLine("First event published");
    
         /* To asynchronously invoke the "EventGridPublisherClient.SendEventAsync"
            method using the "secondEvent" variable as a parameter */
         await client.SendEventAsync(secondEvent);
         Console.WriteLine("Second event published");
     }
    

    : 詳細については、「AzureKeyCredential」を参照してください

    : Event Grid の詳細については、以下のリンクをクリックしてください。

  2.  Program.cs ファイルを保存します。

  3. Visual Studio Code ウィンドウのメニュー バーで、 [ターミナル] を選択し、 [新しいターミナル] を選択します。

  4. 次のコマンドを実行して、.NET Web アプリを実行します。

     dotnet run
    

    : ビルド エラーが発生した場合は、Allfiles (F):\Allfiles\Labs\09\Solution\EventPublisher フォルダーにある Program.cs ファイルを確認してください。

  5. 現在実行中のコンソール アプリケーションからの成功メッセージの出力を確認します。

  6. [ターミナルの強制終了] またはごみ箱 アイコンを選択して、現在開いているターミナルおよび関連プロセスを閉じます。

タスク 4: 発行されたイベントを確認する

  1. Azure Event Grid ビューアー Web アプリがあるブラウザー ウィンドウに戻ります。

  2. コンソール アプリケーションによって作成された Employees.Registration.New イベントを確認します。

  3. 任意のイベントを選択し、その JSON コンテンツを確認します。

  4. Azure Portal に戻ります。

確認

この演習では、.NET コンソール アプリケーションを使用して、Event Grid トピックに新しいイベントを発行しました。