アクセスキーを使ってAzure Event Gridのカスタムトピックにイベントを公開する

Event Gridのカスタムトピックは、アプリケーションが独自のイベントを送信するエンドポイントであり、Event Gridがそれらのイベントを関心のある購読者にルーティングできるようにします。 この記事では、アクセスキーを使ってカスタムトピックにイベントを公開する方法を紹介しており、Microsoft Entra IDの設定なしでリクエストを認証できます。 トピックエンドポイントとアクセスキーを取得し、イベントペイロードをフォーマットし、サンプルイベントを送信し、応答を確認します。

サービスレベル契約(SLA)は、期待されるフォーマットに合致する投稿にのみ適用されます。

前提条件

Microsoft Entra認証は、アクセスキーや共有アクセス署名(SAS)トークン認証よりも優れた認証サポートを提供します。 Microsoft Entra認証を使用することで、Microsoft EntraのアイデンティティプロバイダーがIDを検証するため、コード内の鍵を扱う必要がありません。 また、条件付きアクセス(Conditional Access)などのMicrosoft ID プラットフォームに組み込まれたセキュリティ機能も活用でき、アプリケーションのセキュリティ向上に役立ちます。 詳細については、Microsoft Entra ID を使用して発行クライアントを認証するを参照してください。

トピック エンドポイントを取得する

カスタムトピックにイベントを公開するには、以下のURI形式でHTTPのPOSTリクエストを送信します: https://<topic-endpoint>?api-version=2018-01-01。 たとえば、https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01 は有効な URI です。 カスタムトピックのエンドポイントを取得するには、Azure portal、Azure CLI、またはAzure PowerShellを使いましょう。

Azureポータルのイベントグリッドトピックページの「概要」タブでトピックのエンドポイントを見つけてください。

Azure portal の Event Grid トピック ページのスクリーンショット。トピック エンドポイントが強調表示されています。

アクセス キーを取得する

要求では、認証用のキーを含む aeg-sas-key という名前のヘッダー値を設定します。 たとえば、aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx は有効なヘッダー値です。 カスタムトピックのキーを取得するには、Azure portal、Azure CLI、またはAzure PowerShellを使いましょう。

カスタムトピックのアクセスキーを取得するには、Azureポータルのイベントグリッドトピックページにあるアクセスキータブを選択してください。

Azure portal の [Event Grid トピック] ページの [アクセス キー] タブを示すスクリーンショット。

イベントペイロードのフォーマット

各イベントをJSONオブジェクトとしてフォーマットします。 最上位フィールドは標準的なリソース定義イベントと同じで、 data プロパティはカスタムトピック固有のプロパティを保持しています。 出版者として、 data オブジェクトの内容を定義します。 各プロパティの説明については、Azure Event Grid Event schema を参照してください。

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

ペイロードを作る際には、以下のサイズ制限を念頭に置いてください:

  • イベントアレイの総サイズは最大1MBまで可能です。
  • 単一イベントの最大サイズは1MBです。 64KBを超えるイベントは64KB単位で課金されます。
  • バッチには最大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"
}]

サンプル イベントを送信する

このセクションでは、サンプル イベントをカスタム トピックに送信する方法について説明します。

  1. Azure portal で Cloud Shell を起動します。

  2. Cloud Shell 内で、Bash または PowerShell セッションで Azure PowerShell または Azure CLI からコマンドを実行します。

    Azure portal の Cloud Shell を示すスクリーンショット。

応答を確認する

トピックエンドポイントに投稿すると、返信が届きます。 応答は、標準 HTTP 応答コードです。 いくつかの一般的な応答を次に示します。

結果 回答
成功 200 OK(正常に処理されました)
イベント データの形式が正しくない 400 無効な要求
無効なアクセス キー 401 権限がありません
エンドポイントが正しくない 404 見つかりません
配列またはイベントが、サイズ制限を超えています 413 ペイロードが大きすぎます

エラーについては、メッセージ本文は以下の形式を使用します。

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