クイックスタート: Azure Event Grid と Azure portal を使用してカスタム イベントを Web エンドポイントに送信する
このクイックスタートでは、トピックを作成し、Webhook エンドポイントを使用する、そのトピックへのサブスクリプションを作成した後、結果を表示します。 通常は、イベント データを処理し、アクションを実行するエンドポイントにイベントを送信します。 ただし、このチュートリアルでは、単純化するために、メッセージを収集して表示する Web アプリにイベントを送信します。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
- Azure Event Grid を初めて使用する場合は、Event Grid の概要を参照してください。
Event Grid リソース プロバイダーを登録する
これまでに Event Grid を使用したことがない場合は、Event Grid リソース プロバイダーを登録する必要があります。 Event Grid を使用したことがある場合は、次のセクションに進んでください。
Azure portal で、次の手順を実行します。
左側のメニューで [サブスクリプション] を選択します。
サブスクリプションの一覧から Event Grid に使用するサブスクリプションを選択します。
[サブスクリプション] ページで、左側のメニューの [設定] の下の [リソース プロバイダー] を選択します。
Microsoft.EventGrid を検索し、[状態] が [未登録] であることを確認します。
プロバイダーの一覧で [Microsoft.EventGrid] を選択します。
コマンド バーの [登録] を選択します。
最新の情報に更新して、Microsoft.EventGrid の状態が [登録済み] に変更されたことを確認します。
カスタム トピックの作成
Event Grid のトピックは、イベントの送信先となるユーザー定義のエンドポイントになります。
Azure ポータルにサインインします。
トピックの検索バーに「Event Grid トピック」と入力し、ドロップ ダウン リストから [Event Grid トピック] を選択します。
[Event Grid トピック] ページで、ツール バーの [+ 作成] を選択します。
[トピックの作成] ページで、次の手順に従います。
Azure サブスクリプションを選択します。
既存のリソース グループを選択するか、 [新規作成] を選択し、リソース グループの名前を入力します。
カスタム トピックの一意の名前を指定します。 トピック名は、DNS エントリによって表されるため、一意である必要があります。 画像に示されている名前は使用しないでください。 代わりに、必ず 3 - 50 文字以内で、a - z、A - Z、0 - 9、および
-
のみを含む独自の名前を作成します。Event Grid トピックの場所を選択します。
ページ下部にある [確認と作成] を選択します。
[トピックの作成] ページの [確認と作成] タブで、 [作成] を選択します。
デプロイが正常に完了したら、 [リソースに移動] を選択して、トピックの [Event Grid トピック] ページに移動します。 このページは開いたままにしておきます。 後ほど、このクイック スタートで使用します。
注意
クイックスタートをシンプルにするため、トピックの作成には [基本] ページのみを使います。 ウィザードの他のページでネットワーク、セキュリティ、データ所在地の設定を構成する詳細な手順については、カスタム トピックの作成に関するページを参照してください。
メッセージ エンドポイントの作成
カスタム トピックのサブスクリプションを作成する前に、イベント メッセージのエンドポイントを作成します。 通常、エンドポイントは、イベント データに基づくアクションを実行します。 このクイックスタートを簡素化するために、イベント メッセージを表示する構築済みの Web アプリをデプロイします。 デプロイされたソリューションには、App Service プラン、App Service Web アプリ、および GitHub からのソース コードが含まれています。
この記事ページで [Deploy to Azure](Azure にデプロイ) を選択して、ソリューションを自分のサブスクリプションにデプロイします。 Azure portal で、パラメーターの値を指定します。
[カスタム デプロイ] ページで、次の手順を実行します。
[リソース グループ] で、既存のリソース グループを選ぶか、リソース グループを作成します。
[サイト名] に、Web アプリの名前を入力します。
Web アプリのホストに使用する App Service プランの名前を [ホスティング プラン名] に入力します。
[Review + create](レビュー + 作成) を選択します。
[確認および作成] ページで、 [作成] を選択します。
デプロイが完了するまでに数分かかることがあります。 ポータルでアラート (ベルのアイコン) を選択し、 [リソース グループに移動] を選択します。
[リソース グループ] ページのリソースの一覧で、作成した Web アプリ (次の例では contosoegriviewer) を選択します。
Web アプリの [App Service] ページで、Web サイトに移動するための URL を選択します。 この URL は、
https://<your-site-name>.azurewebsites.net
形式になっている必要があります。サイトは表示されますが、イベントはまだ送信されていないことを確認します。
カスタム トピックのサブスクライブ
どのイベントを追跡し、どこにイベントを送信するかは、Event Grid トピックをサブスクライブすることによって Event Grid に伝えます。
次に、カスタム トピックの [Event Grid トピック] ページで、ツール バーの + [イベント サブスクリプション] を選択します。
[イベント サブスクリプションの作成] ページで、次の手順に従います。
イベント サブスクリプションの名前を入力します。
[エンドポイントのタイプ] には [Webhook] を選択します。
[エンドポイントの選択] を選択します。
Web hook エンドポイントに対して、Web アプリの URL を入力し、ホーム ページの URL に
api/updates
を追加します。 [選択の確認] を選択します。再び [イベント サブスクリプションの作成] ページで、 [作成] を選択します。
Web アプリをもう一度表示し、その Web アプリにサブスクリプションの検証イベントが送信されたことに注目します。 目のアイコンを選択してイベント データを展開します。 Event Grid は検証イベントを送信するので、エンドポイントはイベント データを受信することを確認できます。 Web アプリには、サブスクリプションを検証するコードが含まれています。
トピックへのイベントの送信
では、イベントをトリガーして、Event Grid がメッセージをエンドポイントに配信するようすを見てみましょう。 Azure CLI または PowerShell を使用して、テスト イベントをカスタム トピックに送信します。 通常はイベント データをアプリケーションまたは Azure サービスから送信することになります。
最初の例では、Azure CLI を使用しています。 この例では、カスタム トピックの URL とキー、およびサンプル イベント データを取得します。 <topic name>
には、実際のカスタム トピック名を使用してください。 これによりサンプルのイベント データが作成されます。 JSON の data
要素がイベントのペイロードです。 このフィールドには、適切な形式の JSON であればどのようなものでも格納することができます。 また、高度なルーティングやフィルタリングを行う場合には、subject フィールドを使用することもできます。 CURL は、HTTP 要求を送信するユーティリティです。
Azure CLI
Azure portal で、 [Cloud Shell] を選択します。 Cloud Shell が Web ブラウザーの下部ペインに表示されます。
Cloud Shell で PowerShell セッションが開かれる場合は、Cloud Shell ウィンドウの左上隅にある [Bash に切り替える] を選択します。 開かれない場合は、次の手順に進みます。
次のコマンドを実行して、トピックのエンドポイントを取得します。コマンドをコピーして貼り付けた後、コマンドを実行する前にトピック名とリソース グループ名を更新してください。 このトピック エンドポイントにサンプル イベントを発行します。
endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
次のコマンドを実行して、カスタム トピックのキーを取得します。コマンドをコピーして貼り付けた後、コマンドを実行する前にトピック名とリソース グループ名を更新してください。 これは、Event Grid トピックの主キーです。 このキーを Azure portal から取得するには、 [Event Grid トピック] ページの [アクセス キー] タブに切り替えます。 カスタム トピックにイベントを投稿できるようにするには、アクセス キーが必要です。
key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
イベント定義を含む次のステートメントをコピーし、Enter キーを押します。
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
次の Curl コマンドを実行して、イベントを送信します。このコマンドでは、
aeg-sas-key
ヘッダーは前に取得したアクセス キーに設定されています。curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
2 番目の例では、PowerShell を使用して、同様の手順を実行します。
Azure portal で [Cloud Shell] を選択します (または
https://shell.azure.com/
にアクセスします)。 Cloud Shell が Web ブラウザーの下部ペインに表示されます。Cloud Shell で、Cloud Shell ウィンドウの左上隅の [PowerShell] を選択します。 「Azure CLI」セクションにあるサンプルの Cloud Shell ウィンドウの画像を参照してください。
次の変数を設定します。 コマンドをコピーして貼り付けた後、トピック名とリソース グループ名を更新してから、次のコマンドを実行します。
[リソース グループ] :
$resourceGroupName = "<resource group name>"
Event Grid トピック名:
$topicName = "<topic name>"
次のコマンドを実行して、トピックのエンドポイントとキーを取得します。
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
イベントを準備します。 ステートメントをコピーし、Cloud Shell ウィンドウ内で実行します。
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct body using Hashtable $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert event body from Hashtable to JSON Object #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest コマンドレットを使用して、イベントを送信します。
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Event Grid ビューアーでの確認
以上でイベントがトリガーされ、そのメッセージが、Event Grid によってサブスクライブ時に構成したエンドポイントに送信されました。 Web アプリを表示して、送信したイベント確認します。
リソースをクリーンアップする
引き続きこのイベントを使用する場合は、この記事で作成したリソースをクリーンアップしないでください。 それ以外の場合は、この記事で作成したリソースを削除してください。
左側のメニューの [リソース グループ] を選択します。 左側のメニューにこれが表示されていない場合は、左側のメニューの [すべてのサービス] を選択し、 [リソース グループ] を選択します。
リソース グループを選択して [リソース グループ] ページを開きます。
ツール バーの [リソース グループの削除] を選択します。
リソース グループの名前を入力して削除を確認し、 [削除] を選択します。
画像に表示されている他のリソース グループは、Cloud Shell ウィンドウによって作成および使用されたものです。 後で Cloud Shell ウィンドウを使用しない場合はこれを削除してください。
関連するコンテンツ
カスタム トピックを作成し、イベントをサブスクライブする方法がわかったら、Event Grid でできることについて、さらに情報を収集しましょう。