Azure Event Grid のカスタム トピックに投稿するPost to custom topic for Azure Event Grid

この記事では、カスタム トピックにイベントを投稿する方法について説明します。This article describes how to post an event to a custom topic. 投稿とイベント データの形式を示します。It shows the format of the post and event data. サービス レベル アグリーメント (SLA) は、予期される形式と一致する投稿に対してのみ適用されます。The Service Level Agreement (SLA) only applies to posts that match the expected format.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

エンドポイントEndpoint

カスタム トピックに HTTP POST を送信するときは、https://<topic-endpoint>?api-version=2018-01-01 という URI 形式を使います。When sending the HTTP POST to a custom topic, use the URI format: https://<topic-endpoint>?api-version=2018-01-01.

たとえば、https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01 は有効な URI です。For example, a valid URI is: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01.

Azure CLI でカスタム トピックのエンドポイントを取得するには、次のコマンドを使います。To get the endpoint for a custom topic with Azure CLI, use:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Azure PowerShell でカスタム トピックのエンドポイントを取得するには、次のコマンドを使います。To get the endpoint for a custom topic with Azure PowerShell, use:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

要求では、認証用のキーを含む aeg-sas-key という名前のヘッダー値を設定します。In the request, include a header value named aeg-sas-key that contains a key for authentication.

たとえば、aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg== は有効なヘッダー値です。For example, a valid header value is aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==.

Azure CLI でカスタム トピックのキーを取得するには、次のコマンドを使います。To get the key for a custom topic with Azure CLI, use:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

PowerShell でカスタム トピックのキーを取得するには、次のコマンドを使います。To get the key for a custom topic with PowerShell, use:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

イベント データEvent data

カスタム トピックでは、最上位レベルのデータに、リソースによって定義される標準的なイベントと同じフィールドが含まれます。For custom topics, the top-level data contains the same fields as standard resource-defined events. これらのプロパティの 1 つは、カスタム トピックに固有のプロパティを含むデータ プロパティです。One of those properties is a data property that contains properties unique to the custom topic. イベントの発行元が、そのデータ オブジェクトのプロパティを決定します。As event publisher, you determine the properties for that data object. 次のスキーマを使います。Use the following schema:

[
  {
    "id": string,    
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

これらのプロパティについては、「Azure Event Grid イベント スキーマ」をご覧ください。For a description of these properties, see Azure Event Grid event schema. Event Grid トピックへイベントを送信する際の、配列の合計サイズの上限は 1 MB です。When posting events to an event grid topic, the array can have a total size of up to 1 MB. 配列内の各イベントは 64 KB (一般提供) または 1 MB (プレビュー) に制限されます。Each event in the array is limited to 64 KB (General Availability) or 1 MB (preview).

注意

最大 64 KB のサイズのイベントは、一般提供 (GA) サービス レベル アグリーメント (SLA) の対象になっています。An event of size up to 64 KB is covered by General Availability (GA) Service Level Agreement (SLA). 最大 1 MB のサイズのイベントのサポートは現在、プレビュー段階です。The support for an event of size up to 1 MB is currently in preview. 64 KB を超えるイベントは、64 KB の増分単位で課金されます。Events over 64 KB are charged in 64-KB increments.

たとえば、次に示すのは有効なイベント データ スキーマです。For example, a valid event data schema is:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

ResponseResponse

トピック エンドポイントへの投稿後に、応答を受信します。After posting to the topic endpoint, you receive a response. 応答は、標準 HTTP 応答コードです。The response is a standard HTTP response code. いくつかの一般的な応答を次に示します。Some common responses are:

結果Result ResponseResponse
SuccessSuccess 200 OK200 OK
イベント データの形式が正しくないEvent data has incorrect format 400 Bad Request400 Bad Request
無効なアクセス キーInvalid access key 401 権限がありません401 Unauthorized
エンドポイントが正しくないIncorrect endpoint 404 見つかりません404 Not Found
配列またはイベントが、サイズ制限を超えていますArray or event exceeds size limits 413 ペイロードが大きすぎます413 Payload Too Large

エラーの場合、メッセージ本文は次の形式になります。For errors, the message body has the following format:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}

次の手順Next steps