この記事では、 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) エントリの一部であるため、一意である必要があります。
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
形式になっている必要があります。サイトは表示されますが、イベントはまだ送信されていないことを確認します。
Von Bedeutung
Azure Event Grid ビューアー ウィンドウを開いたままにして、イベントが送信された時点で表示されるようにします。
イベント サブスクリプションの作成
プッシュ配信をサポートする、配信モードを Push に設定するイベント サブスクリプションを作成 します。
- Event Hubs 名前空間 ページが開いているタブまたはウィンドウから、Event Grid 名前空間 ページが開いているタブまたはウィンドウに切り替えます。
- [Event Grid 名前空間] ページで、左側のメニューの [トピック] を選択します。
- [ トピック ] ページで、前の手順で作成したトピックを選択します。
- コマンド バーで [ + サブスクリプション ] を選択します。
-
[イベント サブスクリプションの作成] ページで、次の手順に従います。
[ 基本 ] タブで、イベント サブスクリプションの 名前 を入力します。
イベント配信モードとして [プッシュ ] を選択します。
[エンドポイントの種類] では、[webhook] を選びます。
[エンドポイントを構成する] を選択します。
[Web フック] ページで、次の例に示すようにエンドポイント (例:
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 Viewer がイベントを受信したことを確認する
Azure Event Grid Viewer Web アプリに、Event Grid から受信したイベントが表示されていることを確認します。
関連コンテンツ
このクイック スタートでは、イベント ハンドラーとして webhook を使用しました。 イベント ハンドラーとして Azure イベント ハブを使用するクイック スタートについては、 名前空間のトピックを使用した Azure Event Hubs へのイベントの配信に関するページを参照してください。