アクセス キーを使用して Azure Event Grid カスタム トピックにイベントを公開する
この記事では、アクセス キーを使用し、カスタム トピックにイベントを投稿する方法について説明します。 投稿とイベント データの形式を示します。 サービス レベル アグリーメント (SLA) は、予期される形式と一致する投稿に対してのみ適用されます。
Note
Microsoft Entra 認証は、アクセス キーや Shared Access Signature (SAS) トークン認証よりも優れた認証サポートを提供します。 Microsoft Entra 認証では、ID は Microsoft Entra ID プロバイダーに対して検証されます。 Microsoft Entra 認証を使用する場合、開発者がコード内のキーを処理する必要はありません。 Microsoft ID プラットフォームに組み込みのすべてのセキュリティ機能 (条件付きアクセスなど) の恩恵を受けることもでき、アプリケーションのセキュリティ態勢を向上させることができます。 詳細については、Azure Microsoft Entra ID を使用した発行クライアントの認証に関するページを参照してください。
エンドポイント
カスタム トピックに HTTP POST を送信するときは、https://<topic-endpoint>?api-version=2018-01-01
という URI 形式を使います。 たとえば、https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01
は有効な URI です。 Azure CLI を使用してカスタム トピックのエンドポイントを取得するには、以下を使用します。
az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"
Azure PowerShell を使用してカスタム トピックのエンドポイントを取得するには、以下を使用します。
(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint
ヘッダー
要求では、認証用のキーを含む aeg-sas-key
という名前のヘッダー値を設定します。 たとえば、aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx
は有効なヘッダー値です。 Azure CLI を使用してカスタム トピックのキーを取得するには、以下を使用します。
az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"
PowerShell を使用してカスタム トピックのキーを取得するには、以下を使用します。
(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1
イベント データ
カスタム トピックでは、最上位レベルのデータに、リソースによって定義される標準的なイベントと同じフィールドが含まれます。 これらのプロパティの 1 つは、カスタム トピックに固有のプロパティを含む data
プロパティです。 イベント発行元として、そのデータ オブジェクトのプロパティを決定します。 スキーマを次に示します。
[
{
"id": string,
"eventType": string,
"subject": string,
"eventTime": string-in-date-time-format,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string
}
]
これらのプロパティについては、「Azure Event Grid イベント スキーマ」をご覧ください。 Event Grid トピックにイベントを送信するとき、配列の合計サイズは最大 1 MB です。 イベントの最大許容サイズも 1 MB です。 64 KB を超えるイベントは、64 KB の増分単位で課金されます。 バッチでイベントを受信する場合、イベントの最大許容数は、バッチあたり 5,000 です。
たとえば、次に示すのは有効なイベント データ スキーマです。
[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0"
}]
Response
トピック エンドポイントへの投稿後に、応答を受信します。 応答は、標準 HTTP 応答コードです。 いくつかの一般的な応答を次に示します。
結果 | Response |
---|---|
Success | 200 OK |
イベント データの形式が正しくない | 400 Bad Request |
無効なアクセス キー | 401 権限がありません |
エンドポイントが正しくない | 404 見つかりません |
配列またはイベントが、サイズ制限を超えています | 413 ペイロードが大きすぎます |
エラーの場合、メッセージ本文は次の形式になります。
{
"error": {
"code": "<HTTP status code>",
"message": "<description>",
"details": [{
"code": "<HTTP status code>",
"message": "<description>"
}]
}
}
次のステップ
- イベント配信の監視について詳しくは、「Event Grid メッセージ配信の監視」をご覧ください。
- 認証キーについて詳しくは、「Event Grid のセキュリティと認証」をご覧ください。
- Azure Event Grid サブスクリプションの作成の詳細については、Event Grid サブスクリプション スキーマに関する記事を参照してください。