このクイック スタートでは、 curl
bash シェル コマンドを使用してプル配信を実行し、イベントの発行、受信、確認を行います。 Azure CLI コマンドを使用して、Azure Event Grid リソースを作成します。 この記事は、プル配信機能のクイック テストに適しています。
データ プレーン SDK を使用するサンプル コードについては、次のリソースを参照してください。
- .NET: Azure Event Grid 名前空間トピック (.NET) からのメッセージの送受信
- Java: Java を使用して名前空間トピックにイベントを発行する
- Java: Java でプル配信を使用してイベントを受信する
プル配信モデルの詳細については、 Azure Event Grid 名前空間の概念 と HTTP による プル配信 に関する記事を参照してください。
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
[前提条件]
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
メッセージが表示されたら、最初に使用するときに Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- この記事では、Azure CLI のバージョン 2.0.70 以降が必要です。 Azure Cloud Shell を使用する場合は、最新バージョンが既にインストールされています。
リソース グループを作成する
az group create コマンドで Azure リソース グループを作成します。 このリソース グループを使用して、この記事で作成したすべてのリソースを含める。
Cloud Shell を使用してコマンドを実行する一般的な手順は次のとおりです。
- [ Cloud Shell を開く ] を選択すると、右側のウィンドウに Azure Cloud Shell ウィンドウが表示されます。
- コマンドをコピーし、Azure Cloud Shell ウィンドウに貼り付けます。
- Enter キーを押してコマンドを実行します。
Azure リソース グループの名前を保持する変数を宣言します。
<your-resource-group-name>
を実際の値に置き換えて、リソース グループの名前を指定します。resource_group="<your-resource-group-name>"
リソース グループを作成する。 場所は任意の Azure の場所に変更できます。
az group create --name $resource_group --___location eastus
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 名前空間は、イベントを投稿するユーザー定義エンドポイントを提供します。 次の例では、Azure Cloud Shell で Bash を使用してリソース グループに名前空間を作成します。 名前空間名はドメイン ネーム システム (DNS) エントリの一部であるため、一意である必要があります。 名前空間名は、次の規則を満たしている必要があります。
- 3 ~ 50 文字にする必要があります。
- 地域的に一意である必要があります。
- 使用できる文字は、a から z、A から Z、0 ~ 9、および - のみです。
-
Microsoft
、System
、EventGrid
などの予約済みのキーワード プレフィックスで始めることはできません。
Event Grid 名前空間の名前を保持する変数を宣言します。
<your-namespace-name>
を値に置き換えて、名前空間の名前を指定します。namespace="<your-namespace-name>"
名前空間を作成する。 デプロイする場所を変更できます。
az eventgrid namespace create --resource-group $resource_group --name $namespace --___location eastus
名前空間トピックの作成
名前空間エンドポイントに発行されたすべてのイベントを保持するトピックを作成します。
名前空間トピックの名前を保持する変数を宣言します。
<your-topic-name>
を値に置き換えて、名前空間トピックの名前を指定します。topic="<your-topic-name>"
名前空間トピックを作成します。
az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
イベント サブスクリプションの作成
プル配信をサポートするキューに配信モードを設定するイベント サブスクリプションを作成します。 すべての構成オプションの詳細については、「 Azure Event Grid REST API」を参照してください。
名前空間トピックへのイベント サブスクリプションの名前を保持する変数を宣言します。
<your-event-subscription-name>
を実際の値に置き換えて、イベント サブスクリプションの名前を指定します。event_subscription="<your-event-subscription-name>"
名前空間トピックのイベント サブスクリプションを作成します。
az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
トピックにイベントを送信する
このセクションの手順に従って、名前空間トピックにサンプル イベントを送信します。
名前空間のアクセス キーを一覧表示する
作成した名前空間に関連付けられているアクセス キーを取得します。 イベントを発行するときに認証するには、そのうちの 1 つが必要です。 キーを一覧表示するには、完全な名前空間リソース ID を取得します。 次のコマンドを実行します。
namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)
名前空間から最初のキーを取得します。
key=$(az eventgrid namespace list-key --resource-group $resource_group --namespace-name $namespace --query "key1" --output tsv)
イベントを公開する
名前空間のホスト名を取得します。 これを使用して、イベントの送信先となる名前空間 HTTP エンドポイントを作成します。 次の操作は、最初に API バージョンの
2023-06-01-preview
で使用できます。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
イベントを受信する
イベント サブスクリプションを参照するエンドポイントを使用して Event Grid からイベントを受信します。
次のコマンドを実行して、エンドポイントを作成します。
receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
イベントを処理するリクエストを送信します。
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
イベントを確認する
イベントを受け取った後、そのイベントをアプリケーションに渡して処理します。 イベントを正常に処理した後、そのイベントをイベント サブスクリプションに含める必要はなくなります。 Event Grid にイベントを削除するよう指示するには、受信操作の応答で取得したロック トークンを使用してイベントを 確認 します。
前のセクションでは、
lockToken
プロパティを持つbrokerProperties
オブジェクトを含む応答を受け取りました。 ロック トークンの値をコピーし、環境変数に設定します。lockToken="<paste-the-lock-token-here>"
受信確認操作ペイロードをビルドします。これは、受信確認するイベントのロック トークンを指定します。
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
確認操作 URI を使用して文字列の構築に進みます。
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
最後に、受信したイベントを確認する要求を送信します。
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
ロック トークンの有効期限が切れる前に確認操作が実行された場合 (イベント サブスクリプションの作成時に設定された 300 秒)、次の例のような応答が表示されます。
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
次のステップ
プル配信モデルの詳細については、 HTTP を使用したプル配信に関するページを参照してください。