Knative Eventing は、外部イベントシステムからのイベントの取り込みプロセスを簡素化するイベントモデルを提供します。ACS クラスタに Knative Eventing コンポーネントをデプロイし、トリガーを作成してイベント駆動機能を有効にすることができます。イベントがアクセスされると、システム内で標準の CloudEvents 形式で転送されます。このトピックでは、EventBridge を使用して、Knative の本番環境でイベント駆動機能を提供する方法について説明します。
前提条件
ossutil がインストールされ、バケットが作成されていること。詳細については、ossutil のインストールとバケットの作成を参照してください。
EventBridge がアクティブ化され、必要な権限が RAM (Resource Access Management) ユーザーに付与されていること。詳細については、EventBridge のアクティブ化と RAM ユーザーへの権限の付与を参照してください。
EventBridge は、Alibaba Cloud が提供するサーバーレスのイベントバスサービスです。EventBridge には、他の Alibaba Cloud サービス、カスタムアプリケーション、および SaaS (Software-as-a-Service) アプリケーションから標準的かつ一元的にアクセスできます。さらに、EventBridge は、標準の CloudEvents 1.0 仕様に基づいて、これらのサービスとアプリケーション間でイベントをルーティングできます。EventBridge を使用して、疎結合の分散イベント駆動アーキテクチャを構築できます。
機能紹介
EventBridge は幅広いイベントソースをサポートしています。イベントバス、ルール、およびターゲットを設定して、イベントをフィルタリング、変換、および配信できます。EventBridge を使用して Knative サービスをトリガーしてイベントを消費することにより、オンデマンドでリソースを使用できます。次の図はアーキテクチャを示しています。
オブジェクトストレージサービス (OSS) をイベントソースとして EventBridge に接続できます。OSS をイベントソースとして EventBridge に接続する方法の詳細については、OSS イベントを参照してください。
手順 1: Eventing および EventBridge コンポーネントをデプロイする
Knative は EventBridge のイベント駆動機能を提供し、Alibaba Cloud サービスのイベントソースとイベント転送をサポートしています。
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
コンポーネントタブで、Eventing および EventBridge コンポーネントをデプロイします。
コンポーネントタブで、Eventing を見つけ、アクション列のデプロイをクリックします。
Eventing がデプロイされた後、EventBridge を見つけ、アクション列のデプロイをクリックします。表示されるダイアログボックスで、AccessKey ID と AccessKey シークレットを入力し、[OK] をクリックします。
AccessKey ペアの取得方法の詳細については、AccessKey ペアの作成を参照してください。
説明RAM ユーザーのアカウントセキュリティを確保するために、コンソールログイン時またはコンソールでの機密操作時に二次認証のために、RAM ユーザーに多要素認証 (MFA) デバイスをバインドすることをお勧めします。MFA は、ユーザー名とパスワードに加えて保護の層を追加するセキュリティ強化機能です。詳細については、RAM ユーザーへの MFA デバイスのバインドを参照してください。
コンポーネントの ステータス列にデプロイ済みと表示されている場合、コンポーネントはデプロイされています。
手順 2: Knative サービスを作成する
このセクションでは、event-display という名前の Knative サービスを例として使用します。このサービスは、受信したすべてのイベントを自動的に記録します。次のコンテンツでは、ACK コンソールと kubectl で Knative サービスを作成する方法について説明します。
ACK コンソールの使用
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
サービスタブをクリックし、テンプレートから作成をクリックして Knative サービスを作成します。
次のサンプルコードは例を示しています。
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サービスタブで、Knative サービスの ステータス列に作成済みと表示されている場合、Knative サービスは作成されています。
kubectl
event-display.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーします。このファイルは、Knative サービスの作成に使用されます。
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_3874dbdkubectl apply -f event-display.yaml次のコマンドを実行して、Knative サービスが作成されたかどうかを確認します。
kubectl get ksvc予期される出力:
NAME URL LATESTCREATED LATESTREADY READY REASON event-display http://event-display.default.example.com event-display-00001 event-display-00001 True
手順 3: トリガーを作成する
ACK コンソールの使用
Knative ページで、サービスタブをクリックし、Knative サービスの名前をクリックします。表示されるページで、トリガータブをクリックします。
トリガーの作成をクリックします。構成ページで、指示に基づいてパラメータを構成します。次の表はパラメータについて説明しています。
パラメータ
説明
例
名前
トリガーの名前を入力します。
my-service-trigger
ブローカー
EventBridge またはその他を選択できます。
EventBridge
イベントソース
複数のイベントソースがサポートされています。
OSS
イベントタイプ
複数のイベントタイプがサポートされています。
oss:ActionTrail:ConsoleOperation
トリガーが作成されると、トリガータブでトリガーを表示できます。

kubectl の使用
my-service-trigger.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーして、クラスタにデプロイします。このファイルは、トリガーの作成に使用されます。
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: defaultbroker: デフォルトのイベントバスに対応する eventbridge-default-broker に名前を設定します。source: EventBridge でサポートされているイベントソースを指定します。type: イベントソースのイベントタイプを指定します。複数のイベントタイプはコンマ (,) で区切ります。subscriber: サブスクライブするサービスを指定します。
kubectl apply -f my-service-trigger.yaml次のコマンドを実行して、トリガーが作成されたかどうかを確認します。
kubectl get triggers予期される出力:
NAME BROKER SUBSCRIBER_URI AGE READY REASON my-service-trigger eventbridge-default-broker http://helloworld-go.default.svc.cluster.local 42h True
手順 4: EventBridge が Knative サービスをトリガーしてイベントを消費できるかどうかを確認する
次の手順を実行する前に、ossutil をインストールする必要があります。
次のコマンドを実行して、ファイルを OSS にアップロードします。
説明OSS バケットと EventBridge は同じリージョンにデプロイする必要があります。
ossutil cp <ファイル名> oss://<バケット名>ファイルがアップロードされると、EventBridge は Knative サービスをトリガーしてイベントを消費します。
イベントトレースを表示します。
EventBridge コンソールにログインします。左側のナビゲーションペインで、イベントバスをクリックします。
イベントバスページで、default イベントを選択し、アクション列のイベントトラッキングをクリックします。時間範囲でクエリタブで、時間範囲パラメータを構成します。クエリをクリックします。
イベントソースをOSS に、イベントタイプをオブジェクトの配置に設定し、対応するイベントの 操作列のイベントトレースをクリックします。

イベントトレースページで、イベントが配信されたかどうかを確認できます。
Knative サービスがイベントを消費するかどうかを確認します。
次のコマンドを実行して、Knative サービスがイベントを消費するかどうかを確認します。
kubectl get pod予期される出力:
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7s次のコマンドを実行して、イベントの Knative サービスレコードを表示します。
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"}}}}
出力は、Knative サービスが OSS アップロードイベントを消費して記録することを示しています。これは、EventBridge が Knative サービスを正常にトリガーしてイベントを消費したことを意味します。
参照
他のイベントソースを使用してイベント駆動機能を有効にする方法の詳細については、Knative での GitHub イベントの使用を参照してください。