Share via


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

次のステップ