チュートリアル:Azure CLI および Azure Event Grid を利用した Azure Relay Hybrid Connections へのカスタム イベントの転送Tutorial: Route custom events to Azure Relay Hybrid Connections with Azure CLI and Event Grid

Azure Event Grid は、クラウドのイベント処理サービスです。Azure Event Grid is an eventing service for the cloud. Azure Relay Hybrid Connections はサポートされているイベント ハンドラーの 1 つです。Azure Relay Hybrid Connections is one of the supported event handlers. パブリックなエンドポイントがないアプリケーションからのイベントを処理する必要がある場合は、イベント ハンドラーとしてハイブリッド接続を利用します。You use hybrid connections as the event handler when you need to process events from applications that don't have a public endpoint. そうしたアプリケーションは、コーポレート エンタープライズ ネットワークに存在することがあります。These applications might be within your corporate enterprise network. この記事では、Azure CLI からカスタム トピックを作成してカスタム トピックにサブスクライブし、イベントをトリガーして結果を表示します。In this article, you use the Azure CLI to create a custom topic, subscribe to the custom topic, and trigger the event to view the result. イベントはハイブリッド接続に送信します。You send the events to the hybrid connection.

前提条件Prerequisites

  • Azure Cloud Shell で Bash 環境を使用します。Use the Bash environment in Azure Cloud Shell.

    新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window

  • 必要に応じて、Azure CLI をインストールして、CLI リファレンス コマンドを実行します。If you prefer, install the Azure CLI to run CLI reference commands.

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。If you're using a local installation, sign in to the Azure CLI by using the az login command. 認証プロセスを完了するには、ターミナルに表示される手順に従います。To finish the authentication process, follow the steps displayed in your terminal. その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。For additional sign-in options, see Sign in with the Azure CLI.

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。When you're prompted, install Azure CLI extensions on first use. 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。For more information about extensions, see Use extensions with the Azure CLI.

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。Run az version to find the version and dependent libraries that are installed. 最新バージョンにアップグレードするには、az upgrade を実行します。To upgrade to the latest version, run az upgrade.

  • この記事では、Azure CLI のバージョン 2.0.56 以降が必要です。This article requires version 2.0.56 or later of the Azure CLI. Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。If using Azure Cloud Shell, the latest version is already installed.

リソース グループを作成するCreate a resource group

Event Grid のトピックは Azure リソースであり、Azure リソース グループに配置する必要があります。Event Grid topics are Azure resources, and must be placed in an Azure resource group. リソース グループは、Azure リソースをまとめてデプロイして管理するための論理上のコレクションです。The resource group is a logical collection into which Azure resources are deployed and managed.

az group create コマンドを使用して、リソース グループを作成します。Create a resource group with the az group create command.

次の例では、gridResourceGroup という名前のリソース グループを westus2 の場所に作成します。The following example creates a resource group named gridResourceGroup in the westus2 location.

az group create --name gridResourceGroup --location westus2

カスタム トピックの作成Create a custom topic

Event Grid のトピックは、イベントの送信先となるユーザー定義のエンドポイントになります。An event grid topic provides a user-defined endpoint that you post your events to. 次の例では、リソース グループにカスタム トピックを作成します。The following example creates the custom topic in your resource group. <topic_name> は、カスタム トピックの一意の名前に置き換えてください。Replace <topic_name> with a unique name for your custom topic. イベント グリッド トピック名は、DNS エントリによって表されるため、一意である必要があります。The event grid topic name must be unique because it's represented by a DNS entry.

az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup

カスタム トピックへのサブスクライブSubscribe to a custom topic

どのイベントを追跡するかは、イベント グリッド トピックにサブスクライブすることによって Event Grid に伝えます。次の例では、作成したカスタム トピックにサブスクライブして、エンドポイントに対するハイブリッド接続のリソース ID を渡しています。You subscribe to an event grid topic to tell Event Grid which events you want to track. The following example subscribes to the custom topic you created, and passes the resource ID of the hybrid connection for the endpoint. ハイブリッド接続の ID は以下の形式です。The hybrid connection ID is in the format:

/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Relay/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>

次のスクリプトは、リレー名前空間のリソース ID を取得します。The following script gets the resource ID of the relay namespace. ハイブリッド接続の ID を作成し、イベント グリッドのトピックにサブスクライブします。It constructs the ID for the hybrid connection, and subscribes to an event grid topic. このスクリプトは、エンドポイントのタイプを hybridconnection に設定し、そのエンドポイントにハイブリッド接続 ID を使用します。The script sets the endpoint type to hybridconnection and uses the hybrid connection ID for the endpoint.

relayname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>

relayid=$(az resource show --name $relayname --resource-group $relayrg --resource-type Microsoft.Relay/namespaces --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint-type hybridconnection \
  --endpoint $hybridid \
  --expiration-date "<yyyy-mm-dd>"

サブスクリプションに有効期限の日付が設定されていることに注意してください。Notice that an expiration date is set for the subscription.

イベントを処理するアプリケーションを作成するCreate application to process events

ハイブリッド接続からイベントを取得できるアプリケーションが必要です。You need an application that can retrieve events from the hybrid connection. C# 用の Microsoft Azure Event Grid Hybrid Connection Consumer サンプルは、その操作を実行します。The Microsoft Azure Event Grid Hybrid Connection Consumer sample for C# performs that operation. 前提条件の手順は既に完了しています。You've already finished the prerequisite steps.

  1. Visual Studio 2019 以降を使用していることを確認してください。Make sure you have Visual Studio 2019 or later.

  2. ローカル コンピューターにリポジトリを複製します。Clone the repository to your local machine.

  3. Visual Studio に HybridConnectionConsumer プロジェクトを読み込みます。Load HybridConnectionConsumer project in Visual Studio.

  4. Program.cs で、<relayConnectionString><hybridConnectionName> を、作成した Relay 接続文字列およびハイブリッド接続名に置き換えます。In Program.cs, replace <relayConnectionString> and <hybridConnectionName> with the relay connection string and hybrid connection name that you created.

  5. Visual Studio からアプリケーションをコンパイルして実行します。Compile and run the application from Visual Studio.

トピックへのイベントの送信Send an event to your topic

イベントをトリガーして、Event Grid がメッセージをエンドポイントに配信するようすを見てみましょう。Let's trigger an event to see how Event Grid distributes the message to your endpoint. この記事では、Azure CLI を使ってイベントをトリガーする方法を示します。This article shows how to use Azure CLI to trigger the event. 代わりに、Event Grid パブリッシャー アプリケーションを使うこともできます。Alternatively, you can use Event Grid publisher application.

まず、カスタム トピックの URL とキーを取得します。First, let's get the URL and key for the custom topic. もう一度、<topic_name> に実際のカスタム トピック名を使用します。Again, use your custom topic name for <topic_name>.

endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -g gridResourceGroup --query "key1" --output tsv)

この記事では、単純化するために、サンプル イベント データをカスタム トピックに送信します。To simplify this article, you use sample event data to send to the custom topic. 通常はイベント データをアプリケーションまたは Azure サービスから送信することになります。Typically, an application or Azure service would send the event data. CURL は、HTTP 要求を送信するユーティリティです。CURL is a utility that sends HTTP requests. この記事では、CURL を使用して、イベントをカスタム トピックに送信します。In this article, use CURL to send the event to the custom topic.

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

リスナー アプリケーションはイベント メッセージを受信することになります。Your listener application should receive the event message.

リソースをクリーンアップするClean up resources

引き続きこのイベントを使用する場合は、この記事で作成したリソースをクリーンアップしないでください。If you plan to continue working with this event, don't clean up the resources created in this article. それ以外の場合は、次のコマンドを使用して、この記事で作成したリソースを削除します。Otherwise, use the following command to delete the resources you created in this article.

az group delete --name gridResourceGroup

次のステップNext steps

トピックを作成し、イベントをサブスクライブする方法がわかったら、Event Grid でできることについて、さらに情報を収集しましょう。Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: