名前空間トピックを使用して 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) エントリの一部であるため、一意である必要があります。
Azure Portal に移動します。
トピックの検索バーに「
Event Grid Namespaces
」と入力し、結果から [Event Grid Namespaces
] を選択します。[名前空間の作成] ページで、これらの手順を実行します。
デプロイに成功したら、[デプロイメント] ページで [リソースに移動] を選択します。
アクセス キーを取得する
- [Event Grid 名前空間] ページで、左側のメニューの [アクセス キー] を選択します。
- アクセス キーの横にあるコピー ボタンを選択します。
- アクセス キーを任意の場所に保存します。 後ほど、このクイックスタートで使用します。
名前空間にトピックを作成する
名前空間エンドポイントに発行されたすべてのイベントを保持するトピックを作成します。
メッセージ エンドポイントの作成
イベントをサブスクライブする前に、イベント メッセージ用のエンドポイントを作成しましょう。 通常、エンドポイントは、イベント データに基づくアクションを実行します。 このクイックスタートを簡素化するために、イベント メッセージを表示する構築済みの Web アプリをデプロイします。 デプロイされたソリューションには、App Service プラン、App Service Web アプリ、および GitHub からのソース コードが含まれています。
[Deploy to Azure](Azure にデプロイ) を選択して、ソリューションをサブスクリプションにデプロイします。
[カスタム デプロイ] ページで、次の手順を実行します。
[リソース グループ] で、ストレージ アカウントの作成時に作成したリソース グループを選択します。 チュートリアルの完了後は、リソース グループを削除して容易にクリーンアップすることができます。
[サイト名] に、Web アプリの名前を入力します。
Web アプリのホストに使用する App Service プランの名前を [ホスティング プラン名] に入力します。
[Review + create](レビュー + 作成) を選択します。
[確認および作成] ページで、 [作成] を選択します。
デプロイが完了するまでに数分かかる場合があります。 [デプロイ] ページで、[リソース グループに移動] を選択します。
[リソース グループ] ページのリソースの一覧で、作成した Web アプリを選択します。 この一覧には、App Service プランとストレージ アカウントも表示されます。
Web アプリの [App Service] ページで、Web サイトに移動するための URL を選択します。 この URL は、
https://<your-site-name>.azurewebsites.net
形式になっている必要があります。サイトは表示されますが、イベントはまだ送信されていないことを確認します。
重要
Azure Event Grid ビューアー ウィンドウを開いたままにして、イベントが送信された時点で表示されるようにします。
イベント サブスクリプションの作成
プッシュ配信をサポートする "プッシュ" に配信モードを設定するイベント サブスクリプションを作成します。
- [Event Hubs 名前空間] ページが開いているタブまたはウィンドウから [Event Grid 名前空間] ページが開いているタブまたはウィンドウに切り替えます。
- [Event Grid 名前空間] ページで、左側のメニューの [トピック] を選択します。
- [トピック] ページで、先ほどの手順で作成したトピックを選択します。
- コマンド バーの [+ サブスクリプション] を選択します。
- [イベント サブスクリプションの作成] ページで、次の手順に従います。
[基本] タブで、イベント サブスクリプションの名前を入力します。
イベント配信モードで [プッシュ] を選択します。
[エンドポイントの種類] では、[webhook] を選びます。
[エンドポイントを構成する] を選択します。
[Web hook] ページで、次の例に示すようにエンドポイントを指定し (例:
https://spegridsite0520.azurewebsites.net/api/updates
)、[選択の確認] を選びます。[サブスクリプションの作成] ページに戻って、[作成]を選びます。
トピックにイベントを送信する
ここで、このセクションの手順に従って、名前空間トピックにサンプル イベントを送信します。
変数の宣言
Azure portal で Cloud Shell を起動します。 [Bash] に切り替えます。
次のコマンドを実行して、リソース グループ名を保持する変数を宣言します。
RESOUREGROUPNAME
は、実際の Azure リソース グループの名前に置き換えます。resource_group=RESOURCEGROUPNAME
Cloud Shell で、次のコマンドを実行して、名前空間名を保持する変数を宣言します。
NAMESPACENAME
は、実際の Event Grid 名前空間の名前に置き換えます。namespace=NAMESPACENAME
次のコマンドを実行して、前に記録しておいたアクセス キーの値を保持する変数を宣言します。
ACCESSKEY
は、実際の Event Grid 名前空間へのアクセス キーの値に置き換えます。key=ACCESSKEY
Cloud Shell で、次のコマンドを実行して、名前空間名を保持する変数を宣言します。
topic=TOPICNAME
イベントを発行する
名前空間のホスト名を取得します。 これを使用して、イベントの送信先となる名前空間 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
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 の仕様に関するページを参照してください。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 から受信したイベントが表示されていることを確認します。
関連するコンテンツ
このクイックスタートでは、イベント ハンドラーとして Webhook を使いました。 Azure イベント ハブをイベント ハンドラーとして使うクイックスタートについては、「名前空間トピックを使用して Azure Event Hubs にイベントを配信する」をご覧ください。