アクセス キーを使用して 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>"
    }]
  }
}

次のステップ