EventBridgeは、Knativeで本番向けのイベント駆動型アプリケーションの開発に役立ちます。 EventBridgeを使用して、イベントバス、ルール、およびターゲットを設定できます。 イベントをフィルタリングおよび変換した後、EventBridgeは、イベントを消費するためにKnativeサービスまたは関数の実行をトリガーするイベントを生成します。 これにより、オンデマンドでリソースを使用できます。
前提条件
EventingおよびKafkaコンポーネントはKnative用にデプロイされます。 詳細については、「Knativeコンポーネントのデプロイ」をご参照ください。
ossutilがインストールされています。 詳細については、「ossutilのインストール」をご参照ください。
EventBridgeがアクティブになり、EventBridgeコンソールを使用する権限が付与されます。 詳細については、「EventBridgeの有効化とRAMユーザーへの権限付与」をご参照ください。
EventBridgeは、Alibaba Cloudが提供するサーバーレスイベントバスサービスです。 EventBridgeは、他のAlibaba Cloudサービス、カスタムアプリケーション、およびSaaS (software-as-a-service) アプリケーションから、標準的かつ集中化された方法でアクセスできます。 さらに、EventBridgeは、標準のCloudEvents 1.0仕様に基づいて、これらのサービスとアプリケーション間でイベントをルーティングできます。 EventBridgeを使用して、疎結合および分散型のイベント駆動型アーキテクチャを構築できます。
機能紹介
EventBridgeは、さまざまなイベントソースをサポートしています。 イベントバス、ルール、ターゲットを設定して、イベントをフィルタリング、変換、配信できます。 EventBridgeを使用してKnativeサービスをトリガーしてイベントを消費することで、オンデマンドでリソースを使用できます。 次の図はアーキテクチャを示しています。
イベントソースとしてObject Storage Service (OSS) をEventBridgeに接続できます。 イベントソースとしてOSSをEventBridgeに接続する方法の詳細については、「OSSイベント」をご参照ください。
手順1: Knativeサービスの作成
このセクションでは、イベント表示という名前のKnativeサービスを例として使用します。 サービスは、受信したすべてのイベントを自動的に記録します。
event-display.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、Knative Serviceを作成するために使用されます。
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 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
Knativeサービスのドメイン名とゲートウェイアドレスを取得します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
Knativeページで、[サービス] タブをクリックし、Knativeサービスのデフォルトのドメイン名とゲートウェイアドレスを取得します。
ステップ2: 接続とAPI宛先の設定
EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、クラスターがデプロイされているリージョンを選択します。
[接続設定] タブをクリックします。 [作成] をクリックします。 [接続設定の作成] パネルで、接続の名前と説明を指定し、[認証] を [なし] に設定し、[ネットワーク] を [インターネット] に設定して、[OK] をクリックします。
[APIの宛先] タブをクリックします。 [作成] をクリックします。 [基本情報] セクションで、[メソッド] を [カスタム] に設定し、API宛先の名前と説明を指定します。
[API設定] セクションで、URLをステップ3で取得したKnativeゲートウェイアドレス (http:// 8.141.XX.XX.XXなど) に設定し、HTTPメソッドをPOSTに設定します。
説明Application Load Balancer (ALB) ゲートウェイを使用する場合は、ALBインスタンスのドメイン名にURLを設定します。
[接続設定] セクションで、[既存の接続の選択] をクリックし、既存の接続を選択し、[OK] をクリックします。
ステップ3: ルールを作成する
EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。
[イベントバス] ページで、[デフォルト] イベントを選択し、[アクション] 列の [イベントルール] をクリックします。 [イベントルール] ページで、[ルールの作成] をクリックします。
[基本情報の設定] ウィザードページで、ルールの名前と説明を指定し、[次のステップ] をクリックします。
[イベントパターンの設定] ウィザードページで、[イベントソース] をacs.ossに、[イベントタイプ] をoss:ObjectCreated:PutObjectに設定し、[次のステップ] をクリックします。
[ターゲットの設定] ウィザードページで、パラメーターを設定し、[作成] をクリックします。
パラメーター
説明
サービスタイプ
[API宛先によるトリガー] を選択します。
移動方法
[既存のアイテムを使用] を選択し、ステップ2で作成したAPIの宛先を選択します。
HTTPパラメータ
EventBridgeがイベントをKnative Serviceに配信するときに渡すパラメーターキーと値を指定します。
[ヘッダー] タブで、[キー] タイプを [固定値] に、キーを
[ホスト]
に設定します。 次に、[値] タイプを [固定値] に設定し、値をステップ4で取得したKnative Serviceドメイン名に設定します。[本文] タブをクリックします。 [生データ] を選択します。 [パラメーター] コードエディターに
{ "data": "$.data"}
、[テンプレート] コードエディターに{ "data": ${data}}
と入力します。 コードエディターの下にある[JSON (application/json)]
を選択します。 イベントの詳細については、「概要」をご参照ください。
手順4: EventBridgeがKnativeサービスをトリガーしてイベントを消費できるかどうかを確認する
次の手順を実行する前に、ossutilをインストールする必要があります。
次のコマンドを実行して、ファイルをOSSにアップロードします。
説明OSSバケットとEventBridgeは同じリージョンにデプロイする必要があります。
ossutil cp <File name> oss://<Bucket name>
ファイルがアップロードされた後、EventBridgeはイベントを消費するためにKnativeサービスをトリガーします。
イベントトレースを表示します。
EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。
[イベントバス] ページで、[デフォルト] イベントを選択し、[アクション] 列の [イベントトラッキング] をクリックします。 [時間範囲でクエリ] タブで、[時間範囲] を [過去1時間] に設定します。 [クエリ] をクリックします。
[イベントソース] を [OSS] に、[イベントタイプ] を [オブジェクトの配置] に設定し、対応するイベントの [操作] 列の [イベントトレース] をクリックします。
[イベントトレース] ページで、イベントが配信されたかどうかを確認できます。
Knativeサービスがイベントを消費するかどうかを確認します。
次のコマンドを実行して、Knativeサービスがイベントを消費するかどうかを確認します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7s
次のコマンドを実行して、イベントのKnative Serviceレコードを表示します。
kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-container
期待される出力:
Defaulted container "user-container" out of: user-container, queue-proxy { "data":{"eventVersion":"1.0","responseElements":{"requestId":"6524C9F5F326DB333575119B"},"eventSource":"acs:oss","eventTime":"2023-10-10T03:50:13.000Z","requestParameters":{"sourceIPAddress":"101.132.XX.XX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"203097492760048007"},"region":"cn-beijing","oss":{"bucket":{"name":"ossutil-demo-liu","arn":"acs:oss:cn-beijing:1159648454668874:ossutil-demo-liu","virtualBucket":"","ownerIdentity":"1159648454668874"},"ossSchemaVersion":"1.0","object":{"size":603050,"objectMeta":{"mimeType":"text/markdown; charset=utf-8"},"deltaSize":0,"eTag":"3298F4DC29D2A0578088FF5810C210B3","key":"RELEASENOTES.md"}}}
出力は、KnativeサービスがOSSアップロードイベントを消費および記録することを示します。 これは、EventBridgeがKnativeサービスを正常にトリガーしてイベントを消費することを意味します。
関連ドキュメント
他のイベントソースを使用してイベント駆動機能を有効にする方法の詳細については、「KnativeでのGitHubイベントの使用」をご参照ください。