Kubernetes 上の Event Grid でのイベント ハンドラーと送信先

イベント ハンドラーは、エンドポイントを公開するすべてのシステムであり、Event Grid によって送信されるイベントの送信先です。 イベントを受信するイベント ハンドラーはそれに対して動作し、イベント ペイロードを使用して何らかのロジックを実行します。それにより、新しいイベントが発生することがあります。

送信先にイベントを送信するように Event Grid を構成するには、イベント サブスクリプションを作成します。 これは、Azure CLI管理 SDK、または 2020-10-15-preview API バージョンを使用した HTTP の直接呼び出しを使用して、行うことができます。

一般に、Kubernetes 上の Event Grid からは、Webhook を介して任意の送信先にイベントを送信できます。 Webhook は、サービスまたはワークロードによって公開される HTTP エンドポイントであり、Event Grid はそれに対するアクセス権を持っています。 Webhook となるワークロードは、同じクラスター内、同じネットワーク領域内、クラウド上、オンプレミス、または Event Grid が到達できる任意の場所の、どこでホストされていてもかまいません。

重要

Azure Arc を使用した Kubernetes 上の Event Grid は、現在パブリック プレビュー中です。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

Event Grid により、Webhook を通して、Kubernetes クラスターでホストされている次の送信先がサポートされます。

  • Azure Arc を使用する Kubernetes 上の Azure App Service。
  • Azure Arc を使用する Kubernetes 上の Azure Functions。
  • Azure Arc を使用する Kubernetes 上の Azure Logic Apps。

Webhook に加えて、Kubernetes 上の Event Grid からは、Azure でホストされている次の送信先にイベントを送信できます。

  • Azure Event Grid (Webhook を使用)
  • Azure Functions (Webhook のみを使用)
  • Azure Event Hubs (その Azure Resource Manager リソース ID を使用)
  • Azure Service Bus のトピックまたはキュー (その Azure Resource Manager リソース ID を使用)
  • Azure Storage キュー (その Azure Resource Manager リソース ID を使用)

機能パリティ

Kubernetes 上の Event Grid からは、イベント サブスクリプションに対する Azure Event Grid のサポートに関して、高いレベルの機能パリティが提供されます。 次の一覧は、イベント サブスクリプション機能での主な相違点です。 これらの違いとは別に、Kubernetes 上の Event Grid でイベント サブスクリプションを管理するときは、Azure Event Grid の REST API バージョン 2020-10-15-preview を参照として使用できます。

  1. REST API バージョン 2020-10-15-preview を使用します。
  2. Azure Functions 用の Azure Event Grid トリガーはサポートされていません。 Azure Functions にイベントを配信するには、Webhook 送信先の種類を使用できます。
  3. 配信不能の場所はサポートされていません。 つまり、イベント サブスクリプション ペイロードで properties.deadLetterDestination を使用することはできません。
  4. 送信先としての Azure Relay のハイブリッド接続は、まだサポートされていません。
  5. CloudEvents スキーマだけがサポートされています。 サポートされているスキーマの値は "CloudEventSchemaV1_0" です。 クラウド イベント スキーマは拡張可能であり、オープン標準に基づいています。
  6. ラベル (properties.labels) は、Kubernetes 上の Event Grid には適用できません。 そのため、これらは使用できません。
  7. リソース ID を使用した配信はサポートされていません。 そのため、イベント サブスクリプション ID のすべてのプロパティはサポートされていません。
  8. 送信先エンドポイントの検証はまだサポートされていません。

イベント サブスクリプションでのイベントのフィルター処理

イベント サブスクリプションの構成でのもう 1 つの重要な側面は、送信先に配信されるイベントの選択です。 詳細については、イベントのフィルター処理に関する記事を参照してください。

送信先の構成のサンプル

次に、意図される送信先に応じた基本的な構成のサンプルをいくつか示します。

WebHook

WebHook エンドポイントに発行するには、endpointTypeWebHook に設定し、以下を指定します。

  • endpointUrl: Webhook エンドポイント URL

        {
          "properties": {
            "destination": {
              "endpointType": "WebHook",
              "properties": {
                "endpointUrl": "<your-webhook-endpoint>"
              }
            }
          }
        }
    

Azure Event Grid

Azure Event Grid クラウド エンドポイントに発行するには、endpointTypeWebHook に設定し、以下を指定します。

  • endpointUrl: クラウド内の Azure Event Grid トピック URL。API バージョン パラメーターは 2018-01-01 に設定され、aeg-sas-key は URL エンコードされた SAS キーに設定されています。

      {
        "properties": {
          "destination": {
            "endpointType": "WebHook",
            "properties": {
              "endpointUrl": "<your-event-grid-cloud-topic-endpoint-url>?api-version=2018-01-01&aeg-sas-key=urlencoded(sas-key-value)"
            }
          }
        }
      }
    

Event Hubs

Event Hubs に発行するには、endpointTypeeventHub に設定し、次を指定します。

  • resourceId: 特定のイベント ハブのリソース ID。

        {
          "properties": {
            "destination": {
              "endpointType": "eventHub",
              "properties": {
                "resourceId": "<Azure Resource ID of your event hub>"
              }
            }
          }
        }
    

Service Bus キュー

Service Bus キューに発行するには、endpointTypeserviceBusQueue に設定し、以下を指定します。

  • resourceId: 特定の Service Bus キューのリソース ID。

        {
          "properties": {
            "destination": {
              "endpointType": "serviceBusQueue",
              "properties": {
                "resourceId": "<Azure Resource ID of your Service Bus queue>"
              }
            }
          }
        }
    

Service Bus トピック

Service Bus トピックに発行するには、endpointTypeserviceBusTopic に設定し、以下を指定します。

  • resourceId: 特定の Service Bus トピックのリソース ID。

    {
      "properties": {
        "destination": {
          "endpointType": "serviceBusTopic",
          "properties": {
            "resourceId": "<Azure Resource ID of your Service Bus topic>"
          }
        }
      }
    }
    

ストレージ キュー

ストレージ キューに発行するには、endpointTypestorageQueue に設定し、以下を指定します。

  • queueName: 発行先の Azure ストレージ キューの名前。

  • resourceID: キューが含まれるストレージ アカウントの Azure リソース ID。

    {
      "properties": {
        "destination": {
          "endpointType": "storageQueue",
          "properties": {
            "queueName": "<your-storage-queue-name>",
            "resourceId": "<Azure Resource ID of your Storage account>"
          }
        }
      }
    }
    

次の手順