名前空間トピックを使用して Webhook にイベントを配信する - Azure portal (プレビュー)

この記事では、CloudEvents JSON 形式でイベントを Azure Event Grid に発行し、プル配信モデルを使用してそれらのイベントを配信する詳細な手順について説明します。 具体的には、イベントを Event Grid の名前空間トピックに発行し、それらのイベントをイベント サブスクリプションから Webhook ハンドラーの宛先にプッシュします。 プッシュ配信モデルの詳細については、プッシュ配信の概要に関するページを参照してください。

Note

Azure Event Grid 名前空間では、現在、Shared Access Signature (SAS) トークンとアクセス キー認証がサポートされています。

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

Event Grid 名前空間を作成する

Event Grid 名前空間は、イベントの投稿先となるユーザー定義のエンドポイントになります。 次の例では、Azure Cloud Shell の Bash を利用し、リソース グループに名前空間が作成されます。 名前空間名は、ドメイン ネーム システム (DNS) エントリの一部であるため、一意である必要があります。

  1. Azure Portal に移動します。

  2. トピックの検索バーに「Event Grid Namespaces」と入力し、結果から [Event Grid Namespaces] を選択します。

    Azure portal の検索バーを示すスクリーンショット。

  3. [Event Grid 名前空間] ページで、コマンド バーの [+ 作成] を選択します。 コマンド バーの [作成] ボタンが選択されている [Event Grid 名前空間] ページを示すスクリーンショット。

  4. [名前空間の作成] ページで、これらの手順を実行します。

    1. 名前空間を作成する [Azure サブスクリプション] を選択します。
    2. [新規作成] を選んで新しいリソース グループを作成するか、既存のリソース グループを選びます。
    3. 名前空間の名前を入力します。
    4. リソース グループを作成する [場所] を選択します。
    5. 次に [確認と作成] を選択します。
      [名前空間の作成] ページを示すスクリーンショット。
    6. [確認および作成] ページで、 [作成] を選択します。
  5. デプロイに成功したら、[デプロイメント] ページで [リソースに移動] を選択します。

アクセス キーを取得する

  1. [Event Grid 名前空間] ページで、左側のメニューの [アクセス キー] を選択します。
  2. アクセス キーの横にあるコピー ボタンを選択します。 [アクセス キー] タブが選択されている [Event Grid 名前空間] ページを示すスクリーンショット。
  3. アクセス キーを任意の場所に保存します。 後ほど、このクイックスタートで使用します。

名前空間にトピックを作成する

名前空間エンドポイントに発行されたすべてのイベントを保持するトピックを作成します。

  1. 左側のメニューで [トピック] を選択します。
  2. [トピック] ページで、コマンド バーの [+ トピック] を選択します。 [トピック] ページを示すスクリーンショット。
  3. [トピックの作成] ページで、次の手順に従います。
    1. トピックの名前を入力します。
    2. [作成] を選択します
      [トピックの作成] ページを示すスクリーンショット。

メッセージ エンドポイントの作成

イベントをサブスクライブする前に、イベント メッセージ用のエンドポイントを作成しましょう。 通常、エンドポイントは、イベント データに基づくアクションを実行します。 このクイックスタートを簡素化するために、イベント メッセージを表示する構築済みの Web アプリをデプロイします。 デプロイされたソリューションには、App Service プラン、App Service Web アプリ、および GitHub からのソース コードが含まれています。

  1. [Deploy to Azure](Azure にデプロイ) を選択して、ソリューションをサブスクリプションにデプロイします。

    Resource Manager テンプレートを Azure にデプロイするボタン。

  2. [カスタム デプロイ] ページで、次の手順を実行します。

    1. [リソース グループ] で、ストレージ アカウントの作成時に作成したリソース グループを選択します。 チュートリアルの完了後は、リソース グループを削除して容易にクリーンアップすることができます。

    2. [サイト名] に、Web アプリの名前を入力します。

    3. Web アプリのホストに使用する App Service プランの名前を [ホスティング プラン名] に入力します。

    4. [Review + create](レビュー + 作成) を選択します。

      [カスタム デプロイ] ページのスクリーンショット。

  3. [確認および作成] ページで、 [作成] を選択します。

  4. デプロイが完了するまでに数分かかる場合があります。 [デプロイ] ページで、[リソース グループに移動] を選択します。

    デプロイに成功したページと、リソース グループに移動するためのリンクを示すスクリーンショット。

  5. [リソース グループ] ページのリソースの一覧で、作成した Web アプリを選択します。 この一覧には、App Service プランとストレージ アカウントも表示されます。

    リソース グループ内の Web アプリの選択を示すスクリーンショット。

  6. Web アプリの [App Service] ページで、Web サイトに移動するための URL を選択します。 この URL は、https://<your-site-name>.azurewebsites.net 形式になっている必要があります。

    Web アプリに移動するためのリンクの選択を示すスクリーンショット。

  7. サイトは表示されますが、イベントはまだ送信されていないことを確認します。

    新しいサイトのスクリーンショット。

    重要

    Azure Event Grid ビューアー ウィンドウを開いたままにして、イベントが送信された時点で表示されるようにします。

イベント サブスクリプションの作成

プッシュ配信をサポートする "プッシュ" に配信モードを設定するイベント サブスクリプションを作成します。

  1. [Event Hubs 名前空間] ページが開いているタブまたはウィンドウから [Event Grid 名前空間] ページが開いているタブまたはウィンドウに切り替えます。
  2. [Event Grid 名前空間] ページで、左側のメニューの [トピック] を選択します。
  3. [トピック] ページで、先ほどの手順で作成したトピックを選択します。
  4. コマンド バーの [+ サブスクリプション] を選択します。 [サブスクリプションの作成] ボタンが選択されている [トピック] ページを示すスクリーンショット。
  5. [イベント サブスクリプションの作成] ページで、次の手順に従います。
    1. [基本] タブで、イベント サブスクリプションの名前を入力します。

    2. イベント配信モードで [プッシュ] を選択します。

    3. [エンドポイントの種類] では、[webhook] を選びます。

    4. [エンドポイントを構成する] を選択します。

      配信モードとして [プッシュ]、エンドポイントの種類として [Webhook] が選択されている [サブスクリプションの作成] ページを示すスクリーンショット。

    5. [Web hook] ページで、次の例に示すようにエンドポイントを指定し (例: https://spegridsite0520.azurewebsites.net/api/updates)、[選択の確認] を選びます。

      サブスクライバー エンドポイントの値を含む [Web hook] ページを示すスクリーンショット。

    6. [サブスクリプションの作成] ページに戻って、[作成]を選びます。

      すべてのフィールドが入力された [サブスクリプションの作成] ページを示すスクリーンショット。

トピックにイベントを送信する

ここで、このセクションの手順に従って、名前空間トピックにサンプル イベントを送信します。

変数の宣言

  1. Azure portal で Cloud Shell を起動します。 [Bash] に切り替えます。

    Cloud Shell を示すスクリーンショット。

  2. 次のコマンドを実行して、リソース グループ名を保持する変数を宣言します。 RESOUREGROUPNAME は、実際の Azure リソース グループの名前に置き換えます。

    resource_group=RESOURCEGROUPNAME
    
  3. Cloud Shell で、次のコマンドを実行して、名前空間名を保持する変数を宣言します。 NAMESPACENAME は、実際の Event Grid 名前空間の名前に置き換えます。

    namespace=NAMESPACENAME
    
  4. 次のコマンドを実行して、前に記録しておいたアクセス キーの値を保持する変数を宣言します。 ACCESSKEY は、実際の Event Grid 名前空間へのアクセス キーの値に置き換えます。

    key=ACCESSKEY
    
  5. Cloud Shell で、次のコマンドを実行して、名前空間名を保持する変数を宣言します。

    topic=TOPICNAME
    

イベントを発行する

  1. 名前空間のホスト名を取得します。 これを使用して、イベントの送信先となる名前空間 HTTP エンドポイントを作成します。 次の操作は、API バージョン 2023-06-01-preview で最初に利用可能になりました。 また、ホスト名は、Azure portal の Event Grid 名前空間の [概要] ページでわかります。

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. CloudEvents に準拠したサンプル イベントを作成します。

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    data 要素がイベントのペイロードです。 このフィールドには、適切な形式の JSON であればどのようなものでも格納することができます。 イベントに含めることができるプロパティ (コンテキスト属性とも呼ばれます) の詳細については、CloudEvents の仕様に関するページを参照してください。

  3. CURL を使用してイベントをトピックに送信します。 CURL は、HTTP 要求を送信するユーティリティです。

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Azure Event Grid ビューアーがイベントを受信したことを確認する

Azure Event Grid ビューアー Web アプリに、Event Grid から受信したイベントが表示されていることを確認します。

受信したサンプル イベントを含む Azure Event Grid ビューアーを示すスクリーンショット。

このクイックスタートでは、イベント ハンドラーとして Webhook を使いました。 Azure イベント ハブをイベント ハンドラーとして使うクイックスタートについては、「名前空間トピックを使用して Azure Event Hubs にイベントを配信する」をご覧ください。