すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Knative におけるイベント駆動型アプリケーション向けの EventBridge の利用

最終更新日:Mar 26, 2026

Container Service for Kubernetes (ACK) でオンデマンドワークロードを実行する際、Knative Eventing のセットアップにおいて、EventBridge をイベントブローカーとして使用します。イベント(例:Object Storage Service (OSS) へのオブジェクトアップロード)が到着すると、EventBridge はそのイベントをデフォルトイベントバス経由で Trigger にルーティングします。Trigger はイベントソースおよびイベントタイプに基づいてフィルタリングを行い、該当するイベントを Knative Service へ転送して処理します。

イベントフロー:OSS アップロード → EventBridge → eventbridge-default-broker → Trigger(ソースおよびタイプでフィルタリング)→ Knative Service Pod。

OSS をイベントソースとして EventBridge に接続できます。詳細については、「OSS イベント」をご参照ください。
Architecture diagram showing how OSS events flow through EventBridge and a Knative Trigger to a Knative Service

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

EventBridge の概念の概要については、「EventBridge とは

ステップ 1:Eventing および EventBridge コンポーネントのデプロイ

まず Eventing をデプロイし、その後 EventBridge をデプロイします。Eventing は Broker および Trigger の基盤を提供し、EventBridge は Alibaba Cloud サービスのイベントソースをこの基盤に接続します。

  1. ACK コンソールにログインします。左側ナビゲーションウィンドウで、ACK コンソールACK コンソール[クラスター] をクリックします。

  2. [クラスター] ページで、管理対象のクラスター名をクリックします。左側ナビゲーションウィンドウから、[アプリケーション] > [Knative] を選択します。

  3. [コンポーネント] タブで、以下の順序で 2 つのコンポーネントをデプロイします。両コンポーネントの [ステータス] 列に [デプロイ済み] と表示されたら、準備完了です。

    1. [Eventing] を見つけ、[Actions] 列の [Deploy] をクリックします。

    2. Eventing が [ステータス] 列に [デプロイ済み] と表示されたら、[EventBridge] を見つけ、[アクション] 列の [デプロイ] をクリックします。ダイアログボックスで、AccessKey ID と AccessKey Secret を入力し、[OK] をクリックします。AccessKey ペアを取得するには、「AccessKey の作成」をご参照ください。> 注意: RAM ユーザーアカウントを保護するには、コンソールへのログイン時や機密性の高い操作時の 2 次認証のために、多要素認証 (MFA) デバイスをバインドしてください。詳細については、「RAM ユーザーへの MFA デバイスのバインド」をご参照ください。

ステップ 2:Knative Service の作成

イベントコンシューマーとして機能する Knative Service を作成します。以下では、受信したすべてのイベントを記録する event-display というサービスを使用します。これにより、エンドツーエンドのイベント配信を検証できます。

ACK コンソールを使用する場合

  1. ACK コンソールにログインし、対象クラスターの [アプリケーション] > [Knative] ページに移動します。

  2. [サービス] タブをクリックし、[テンプレートから作成] をクリックします。

  3. 以下の YAML を貼り付け、送信します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: event-display
      namespace: default
    spec:
      template:
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbd

    [サービス] タブで、[ステータス] 列に [作成済み] と表示されたら、サービスの準備が完了しています。

kubectl を使用する場合

  1. 以下の内容で event-display.yaml というファイルを作成します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: event-display
      namespace: default
    spec:
      template:
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbd
  2. マニフェストを適用します。

    kubectl apply -f event-display.yaml
  3. サービスの準備状況を確認します。

    kubectl get ksvc

    READYTrue になったら、サービスの準備が完了しています。

    NAME            URL                                        LATESTCREATED         LATESTREADY           READY   REASON
    event-display   http://event-display.default.example.com   event-display-00001   event-display-00001   True

    READYFalse の場合は、数秒待ってから再度コマンドを実行してください。

ステップ 3:Trigger の作成

Trigger は、Broker に対してどのイベントを転送し、どこに送信するかを指示します。broker フィールドは Trigger をイベントバスに接続します。filter フィールドは通過させるイベントを決定します — 指定されたすべての属性に一致するイベントのみがサブスクライバーに届きます。subscriber フィールドは、一致したイベントを受信する Knative Service を指します。

ACK コンソールを使用する場合

  1. [Knative] ページで、[サービス] タブをクリックし、Knative Service の名前をクリックします。サービス詳細ページで、[Trigger] タブをクリックします。

  2. [Trigger の作成] をクリックし、[設定] ページでパラメーターを構成します。Trigger が作成されると、[Triggers] タブに表示されます。

    パラメーター説明
    名前Trigger の名前my-service-trigger
    ブローカー[EventBridge] または [その他]EventBridge
    [イベントソース]フィルタリング対象のイベントソース。複数のイベントソースを指定できます。OSS
    イベントの種類フィルタリング対象のイベントタイプ。複数のタイプを指定できます。指定されたいずれのタイプにも一致しないイベントは破棄されます。oss:ActionTrail:ConsoleOperation

    Triggers tab showing a newly created trigger named my-service-trigger

kubectl を使用する場合

  1. 以下の内容で my-service-trigger.yaml というファイルを作成します。

    フィールド効果
    brokereventbridge-default-brokerTrigger をデフォルト EventBridge イベントバスに接続します。このバス上のイベント以外は無視されます。
    sourceacs.ossOSS からのイベントのみを転送します。他のソースからのイベントは破棄されます。
    typeoss:ActionTrail:ConsoleOperationこのタイプのイベントのみを転送します。複数のタイプを指定する場合は、カンマ(,)で区切ります。
    subscriberサービス名および名前空間一致したイベントを受信する Knative Service です。
    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      name: my-service-trigger
    spec:
      broker: eventbridge-default-broker
      filter:
        attributes:
          source: acs.oss
          type: 'oss:ActionTrail:ConsoleOperation'
      subscriber:
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: helloworld-go
          namespace: default

    イベントルーティングに影響を与える主なフィールドとその効果:

  2. マニフェストを適用します。

    kubectl apply -f my-service-trigger.yaml
  3. Trigger の準備状況を確認します。

    kubectl get triggers

    READYTrue になったら、Trigger の準備が完了しています。

    NAME                         BROKER                       SUBSCRIBER_URI                                   AGE   READY   REASON
    my-service-trigger           eventbridge-default-broker   http://helloworld-go.default.svc.cluster.local   42h   True

    READYFalse の場合は、数秒待ってから再度コマンドを実行してください。

ステップ 4:エンドツーエンドのイベント配信の検証

OSS イベントをトリガーし、EventBridge がそれを Knative Service に正しく配信することを確認します。

  1. OSS バケットにオブジェクトをアップロードします。

    重要

    OSS バケットと EventBridge は同一リージョンに配置する必要があります。

    ossutil cp <file-name> oss://<bucket-name>

    アップロードが完了すると、EventBridge がイベントを検出し、Trigger 経由で Knative Service にルーティングします。

  2. EventBridge コンソールでイベントトレースを確認します。

    1. EventBridge コンソールにログインします。左側ナビゲーションウィンドウで、[イベントバス] をクリックします。

    2. イベントバスページで、[デフォルト] イベントバスを見つけ、[イベントトレース][操作] 列からクリックします。

    3. [時間範囲によるクエリ] タブで、[時間範囲] を設定し、[クエリ] をクリックします。

    4. [イベントソース]OSS に、[イベントタイプ][Put Object] に設定してから、[操作] 列の [イベントトレース] をクリックして、イベントが配信されたことを確認します。 image.png

  3. Knative Service がイベントを消費したことを確認します。

    1. Pod が実行中であることを確認します。

      kubectl get pod

      期待される出力:

      NAME                                              READY   STATUS    RESTARTS   AGE
      event-display-00001-deployment-56cc79****-z2vhv   2/2     Running   0          7s

      Pod が表示されない場合は、数秒待ってから再度コマンドを実行してください。Knative Service はアイドル時にスケールダウンし、イベント受信時に新しい Pod を起動します。

    2. イベントログを表示します。

      kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-container

      期待される出力:

      {"data":{"eventVersion":"1.0","responseElements":{"requestId":"63E21F5FEE852133319101AD"},"eventSource":"acs:oss","eventTime":"2023-02-07T09:52:31.000Z","requestParameters":{"sourceIPAddress":"XX.XXX.XX.XXX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"1118324452360952"},"region":"cn-hangzhou","oss":{"bucket":{"name":"knative","arn":"acs:oss:cn-hangzhou:1581204543170042:knative","virtualBucket":"","ownerIdentity":"1581204543170042"},"ossSchemaVersion":"1.0","object":{"size":225496,"objectMeta":{"mimeType":"application/octet-stream"},"deltaSize":0,"eTag":"B350C082843DAC7E9E634193437EBA30","key":"demo.data"}}}}

      ログには "eventSource":"acs:oss" および "eventName":"ObjectCreated:PutObject" が含まれており、EventBridge が OSS アップロードイベントを正しく Knative Service にトリガーしたことが確認できます。

次のステップ

他のイベントソースでイベント駆動型ワークフローを設定するには、「GitHub イベントを Knative で使用する」をご参照ください。