次の方法で共有


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

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

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

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

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

    Von Bedeutung

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

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

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

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

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

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

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

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

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

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

    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 Viewer がイベントを受信したことを確認する

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

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

このクイック スタートでは、イベント ハンドラーとして webhook を使用しました。 イベント ハンドラーとして Azure イベント ハブを使用するクイック スタートについては、 名前空間のトピックを使用した Azure Event Hubs へのイベントの配信に関するページを参照してください。