クイックスタート: Event Grid と Azure CLI を使用してカスタム イベントをイベント ハブにルーティングする
Azure Event Grid は、非常にスケーラブルなサーバーレスのイベント ブローカーであり、イベントを介してアプリケーションを統合するために使用できます。 Event Grid はイベントをサポートされているイベント ハンドラーに配信し、Azure Event Hubs はその 1 つです。
このクイック スタートでは、Azure CLI を使用して、そのトピックの Event Grid カスタム トピックと Event Hubs サブスクリプションを作成します。 次に、カスタム トピックにサンプル イベントを送信し、それらのイベントがイベント ハブに配信されることを確認します。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
リソース グループを作成する
Event Grid のトピックは Azure リソースであり、Azure リソース グループに配置する必要があります。 リソース グループは、Azure リソースをまとめてデプロイして管理するための論理上のコレクションです。
az group create コマンドを使ってリソース グループを作成します。 次の例では、westus2
の場所に gridResourceGroup
という名前のリソース グループを作成します。
[Cloud Shell を開く] を選択すると、右側のペインに Azure Cloud Shell が開きます。 [コピー] ボタンを選択してコマンドをコピーし、Cloud Shell に貼り付けて Enter キーを押すと、コマンドを実行することができます。
az group create --name gridResourceGroup --location westus2
Event Grid リソース プロバイダーを有効にする
Azure サブスクリプションで Event Grid を使用したことがない場合は、Event Grid リソース プロバイダーを登録する必要がある可能性があります。 以下のプロバイダーを登録するコマンドを実行します。
az provider register --namespace Microsoft.EventGrid
登録完了まで少し時間がかかることがあります。 状態を確認するには、次のコマンドを実行します。
az provider show --namespace Microsoft.EventGrid --query "registrationState"
registrationState
がRegistered
になったら、次に進めることができます。
カスタム トピックの作成
Event Grid のトピックは、イベントの送信先となるユーザー定義のエンドポイントになります。 次の例では、リソース グループにカスタム トピックを作成します。
<TOPIC NAME>
は、カスタム トピックの一意の名前に置き換えてください。 Event Grid トピック名は、ドメイン ネーム システム (DNS) エントリによって表されるため、一意である必要があります。
トピックの名前を指定します。
topicname="<TOPIC NAME>"
次のコマンドを実行して、トピックを作成します。
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
イベント ハブの作成
カスタム トピックをサブスクライブする前に、イベント メッセージ用のエンドポイントを作成します。 イベントを収集するためのイベント ハブを作成します。
Event Hubs 名前空間の一意の名前を指定します。
namespace="<EVENT HUBS NAMESPACE NAME>"
次のコマンドを実行して、Event Hubs 名前空間を作成し、その名前空間内に
demohub
という名前のイベント ハブを作成します。hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
カスタム トピックへのサブスクライブ
どのイベントを追跡するかは、Event Grid トピックにサブスクライブすることによって Event Grid に伝えます。次の例では、作成したカスタム トピックをサブスクライブし、それがエンドポイントのイベント ハブのリソース ID を渡します。 エンドポイントの形式は次のとおりです。
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
次のスクリプトは、イベント ハブのリソース ID を取得し、Event Grid トピックをサブスクライブします。 エンドポイントの種類を eventhub
に設定し、エンドポイントのイベント ハブ ID を使用します。
hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name subtoeventhub \
--endpoint-type eventhub \
--endpoint $hubid
イベント サブスクリプションを作成するアカウントは、イベント ハブへの書き込みアクセス権を持っている必要があります。
カスタム トピックへのイベントの送信
イベントをトリガーして、Event Grid でメッセージがエンドポイントにどのように配信されるかを確認します。 まず、カスタム トピックの URL とキーを取得します。
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
この記事では、単純化するために、サンプル イベント データをカスタム トピックに送信します。 通常はイベント データをアプリケーションまたは Azure サービスから送信することになります。
cURL ツールは HTTP 要求を送信します。 この記事では、cURL を使って、イベントをカスタム トピックに送信します。 次の例では、3 つのイベントを Event Grid トピックに送信します。
for i in 1 2 3
do
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 -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
Azure portal で、Event Hubs 名前空間の [概要] ページで、Event Grid によってそれらの 3 つのイベントがイベント ハブに送信されたことを確認します。 demohub
Event Hubs インスタンスの [概要] ページに、同じグラフが表示されます。
通常は、イベント ハブからイベント メッセージを取得するアプリケーションを作成します。 詳細については、以下を参照してください:
- .NET Standard でイベント プロセッサ ホストを使用したメッセージ受信を開始する
- Java を使用して Azure Event Hubs からイベントを受信する
- Apache Storm を使用して Event Hubs からイベントを受信する
リソースをクリーンアップする
引き続きこのイベントを使用する場合は、この記事で作成したリソースをクリーンアップしないでください。 それ以外の場合は、次のコマンドを使用して、リソースを削除します。
az group delete --name gridResourceGroup
関連するコンテンツ
トピックを作成し、イベントをサブスクライブする方法がわかったら、Event Grid でできることについて、さらに情報を収集しましょう。
- Event Grid について
- Azure Blob Storage のイベントをカスタム Web エンドポイントにルーティングする
- Azure Event Grid と Logic Apps で仮想マシンの変更を監視する
- ビッグ データをデータ ウェアハウスにストリーミングする
さまざまなプログラミング言語を使用した Event Grid へのイベントの発行、およびそのイベントの使用については、次のサンプルを参照してください。