データ処理が OSS への新規ファイルアップロードや Kafka への新規メッセージ到着など、予測不可能な外部イベントに依存する場合、従来の定期スケジューリングではリソースが無駄になり、データ処理の遅延が発生することがあります。DataWorks のトリガーはこのようなシナリオ向けに設計されています。トリガーは外部イベントをリアルタイムで監視し、関連付けられたワークフローをオンデマンドで起動します。このアプローチにより、イベント駆動型のデータパイプラインが実現され、自動化とデータの適時性が向上します。本トピックでは、トリガーの作成、構成、および管理方法について説明します。
仕組み
DataWorks トリガーは、イベント駆動型スケジューリングを可能にするコンポーネントです。その主な機能は、事前定義されたイベントを監視することです。指定されたイベントが発生すると、トリガーは関連付けられたイベントトリガーワークフローを起動し、イベント情報をパラメーターとしてワークフローに渡します。
複数のソースからのイベント監視:トリガーはさまざまなソースからのイベントを監視できます。
外部ストレージイベント:OSS バケット内の新しいオブジェクトの作成を監視します。
外部メッセージイベント:Kafka、RocketMQ、RabbitMQ などのメッセージキューに新規メッセージが到着したことを監視します。
動的パラメーターの取得と受け渡し:トリガーはイベントコンテキストを取得し、それをダウンストリームのワークフローにパラメーターとして渡します。
OSS イベントの場合、取得される情報にはファイルの詳細が含まれます。
メッセージキューイベントの場合、取得される情報にはキー、値、ヘッダーなどのメッセージ本文全体が含まれます。
ワークフロー内のノードは、これらのパラメーターを使用してイベントに基づいたデータ処理を行います。
サポートされるタイプ:
メッセージキュー:Kafka、RocketMQ、RabbitMQ
ストレージオブジェクト:OSS
利用可能範囲
リージョン:この機能は、中国 (杭州)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深セン)、中国 (香港)、およびシンガポールの各リージョンでのみ利用可能です。
エディション:この機能は DataWorks Professional Edition 以降でのみ利用可能です。現在ご利用のエディションでこの機能がサポートされていない場合は、DataWorks を Professional Edition またはそれ以降のエディションにスペックアップしてください。
課金
イベントトリガーワークフローが実行されると、定期タスクの実行にかかる料金に加えて、EventBridge でも料金が発生します。イベントストリームの課金をご参照ください。課金はイベント数に基づいて行われます。
前提条件
トリガーは EventBridge のイベントルールに依存しています。EventBridge を有効化して権限を付与し、Message Serviceを有効化する必要があります。
監視対象のイベントソース(例:OSS インスタンス、またはクラウドメッセージキュー (Kafka、RocketMQ、または RabbitMQ) インスタンス)がワークスペースと同じリージョンに存在し、インスタンスへのアクセスに必要な権限を持っている必要があります。
対象のワークスペースのメンバーであり、開発者、O&M、またはワークスペース管理者のいずれかのロールを保有している必要があります。詳細については、「ワークスペースメンバーの追加とロール管理」をご参照ください。
トリガー管理ページへの移動
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウのをクリックします。ドロップダウンリストからワークスペースを選択し、入力 操作とメンテナンスセンターをクリックします。
オペレーションセンターの左側ナビゲーションウィンドウで、 をクリックし、Trigger Management タブをクリックします。
トリガーの作成
開発者、O&M、またはワークスペース管理者のロールを保有している場合、Trigger Management タブでトリガーを作成できます。
Create Trigger をクリックして、Create Trigger 構成ページに移動します。
説明DataWorks のイベントトリガー機能は EventBridge に依存しています。この機能を初めて使用する場合、または AliyunServiceRoleForDataWorksScheduler サービスリンクロール が存在しない場合は、Authorize をクリックして必要な権限を付与してください。
必要な権限:
ram:CreateServiceLinkedRoleおよびarms:CheckServiceStatus。詳細については、「サービスリンクロール作成に必要な最小限の権限」をご参照ください。
以下の表に従ってパラメーターを構成します。
Kafka トリガー
パラメーター
説明
Applicable Workspace
トリガーを適用するワークスペースを選択します。Data 開発の新バージョンを使用しているワークスペースのみが表示されます。
Applicable Environment
トリガーは本番環境にのみ適用されます。開発環境では、手動でパラメーターを入力する必要があります。
Owner
ドロップダウンリストからトリガーの所有者を選択します。
Trigger Type
ApsaraMQ for Kafka を選択します。
Trigger Event
このトリガーは、Kafka メッセージによってトリガーされる
alikafka:Topic:Messageイベントをサポートしています。メッセージ送信方法については、「Kafka メッセージの送受信」をご参照ください。Kafka Instance
ワークスペースと同じリージョンにある Kafka インスタンスを選択します。利用可能なインスタンスがない場合は、Kafka インスタンスを購入してください。
Topic
トリガーが監視するトピックを指定します。利用可能なトピックがない場合は、トピックを作成してください。
Key
メッセージキーを指定できます。ワークフローは、メッセージのキーが完全に一致した場合にのみ実行されます。このパラメーターは任意です。空欄のままにすると、消費されたすべてのメッセージがワークフローをトリガーします。
コンシューマーグループ ID
[Quick Create] または [Use Existing] を選択できます。クイック作成を選択すると、システムは自動生成されたグループ ID を持つコンシューマーグループを作成します。
Message Format Example
Kafka メッセージフォーマットの例です。
トリガーされたワークフロー内のタスクでは、${workflow.triggerMessage} を使用してメッセージ本文全体を取得したり、${workflow.triggerMessage.xxx} を使用してメッセージ本文内の特定のフィールドの値を取得したりできます。
RocketMQ トリガー
パラメーター
説明
Applicable Workspace
トリガーを適用するワークスペースを選択します。Data 開発の新バージョンを使用しているワークスペースのみが表示されます。
Applicable Environment
トリガーは本番環境にのみ適用されます。開発環境では、手動でパラメーターを入力する必要があります。
Owner
ドロップダウンリストからトリガーの所有者を選択します。
Trigger Type
ApsaraMQ for RocketMQ を選択します。
説明5.x 未満のバージョンはサポートされていません。デフォルトで 5.x バージョンが使用されます。
Trigger Event
このトリガーは、RocketMQ メッセージの消費によってトリガーされる
mq:Topic:SendMessageイベントをサポートしています。ApsaraMQ for RocketMQ Instance
ワークスペースと同じリージョンにある RocketMQ インスタンスを選択します。利用可能なインスタンスがない場合は、RocketMQ インスタンス管理に移動して作成してください。
Topic
トリガーが監視するトピックを指定します。利用可能なトピックがない場合は、トピック管理に移動して作成してください。
タグ
メッセージタグを指定できます。ワークフローは、メッセージのタグが完全に一致した場合にのみ実行されます。このパラメーターは任意です。空欄のままにすると、消費されたすべてのメッセージがワークフローをトリガーします。
Security Group
RocketMQ インスタンスがサブスクリプションインスタンスの場合、セキュリティグループを選択できます。
Consumer Group
Quick Create または Use Existing を選択できます。クイック作成を選択すると、システムは自動生成されたグループ ID を持つコンシューマーグループを作成します。
Message Format Example
RocketMQ メッセージフォーマットの例です。
トリガーされたワークフロー内のタスクでは、${workflow.triggerMessage} を使用してメッセージ本文全体を取得したり、${workflow.triggerMessage.xxx} を使用してメッセージ本文内の特定のフィールドの値を取得したりできます。
RabbitMQ トリガー
パラメーター
説明
Applicable Workspace
トリガーを適用するワークスペースを選択します。Data 開発の新バージョンを使用しているワークスペースのみが表示されます。
Applicable Environment
トリガーは本番環境にのみ適用されます。開発環境では、手動でパラメーターを入力する必要があります。
Owner
ドロップダウンリストからトリガーの所有者を選択します。
Trigger Type
ApsaraMQ for RabbitMQ を選択します。
Trigger Event
このトリガーは、RabbitMQ メッセージの消費によってトリガーされる
amqp:Queue:SendMessageイベントをサポートしています。ApsaraMQ for RabbitMQ Instance
ワークスペースと同じリージョンにある RabbitMQ インスタンスを選択します。利用可能なインスタンスがない場合は、RabbitMQ インスタンスを作成してください。
Vhost
RabbitMQ バーチャルホスト (vhost) の名前で、キューを論理的に分離するために使用されます。利用可能な vhost がない場合は、「Vhost 管理」をご参照ください。
Queue
トリガーが監視するキューを指定します。適切なキューがない場合は、「キュー管理」をご参照ください。
Message Format Example
RabbitMQ メッセージ本文の例です。
トリガーされたワークフロー内のタスクでは、${workflow.triggerMessage} を使用してメッセージ本文全体を取得したり、${workflow.triggerMessage.xxx} を使用してメッセージ本文内の特定のフィールドの値を取得したりできます。
OSS トリガー
パラメーター
説明
Applicable Workspace
トリガーを適用するワークスペースを選択します。Data 開発の新バージョンを使用しているワークスペースのみが表示されます。
Applicable Environment
トリガーは本番環境にのみ適用されます。開発環境では、手動でパラメーターを入力する必要があります。
Owner
ドロップダウンリストからトリガーの所有者を選択します。
Trigger Type
OSS
Trigger Event
以下のイベントタイプがサポートされています。
oss:ObjectCreated:PutObject:オブジェクトのアップロード
oss:ObjectCreated:PostObject:HTML フォームを使用したオブジェクトのアップロード
oss:ObjectCreated:CompleteMultipartUpload:マルチパートアップロードの完了
Bucket Name
ドロップダウンリストからイベントソースとして使用する OSS バケットを選択します。バケットを作成していない場合は、バケットを作成してください。
File Name
イベントをトリガーするファイルの名前を指定します。ワイルドカードがサポートされています。
プレフィックス一致:
例:
task*説明:OSS に
taskプレフィックスを持つファイル(例:task10.txt)をアップロードすると、イベントがトリガーされます。
サフィックス一致:
例:
*task.txt説明:OSS に
task.txtサフィックスを持つファイル(例:work_task.txt)をアップロードすると、イベントがトリガーされます。
柔軟な一致:
例:
*task*説明:OSS にファイル名に
taskを含むファイル(例:work_task.txt)をアップロードすると、イベントがトリガーされます。
確認 をクリックしてトリガーを作成します。
トリガーの使用
トリガーはイベントトリガーワークフローと併用する必要があります。トリガーできるのは、オペレーションセンターに公開されたイベントトリガーワークフローのみです。
イベント駆動型スケジューリングを実装するには、トリガーをイベントトリガーワークフローとペアにする必要があります。イベントトリガーワークフローをオペレーションセンターに提出すると、監視対象のイベントが発生した際にワークフロー内のタスクが自動的に実行されます。
イベントトリガーワークフローを作成します。
イベントトリガーワークフローを構成する際、Scheduling Policy セクションで作成済みのトリガーを選択します。
イベントトリガーワークフローの内部ノードは、通常のワークフローと同様に構成します。
主な違いは、ワークフローが固定スケジュールではなく外部イベントに応じて実行されることです。
トリガーの管理
Trigger Management タブで、対象のトリガーを見つけ、参照されているタスクの確認、変更、バージョンの表示、ロールバックなどの操作を行えます。
View Nodes That Reference Calendar:トリガーがイベントトリガーワークフローから参照されている場合、操作 列の View Nodes That Reference Calendar をクリックします。View Nodes That Reference Calendar ページに、そのトリガーを参照しているイベントトリガーワークフローが表示されます。
Edit:操作 列の Edit をクリックします。Modify Trigger ページでトリガー情報を編集し、確認 をクリックします。
説明トリガーを変更すると、システムが自動的に新しいバージョンを作成します。
ビュー Version:
操作 列の Version をクリックして、View Versions ページでトリガーのすべての履歴バージョンを表示します。
特定のバージョンの 操作 列にある ビュー をクリックして、そのバージョンの詳細を確認できます。
以前のバージョンにロールバックできます。ロールバックするには、目的のバージョン横にある Roll Back をクリックします。表示されるダイアログボックスにロールバックの 備考 を入力し、確認 をクリックします。
説明ロールバックを実行すると、システムは選択したバージョンに基づいて新しいバージョンを生成します。
トリガーの削除:トリガーを削除する前に、そのトリガーを参照しているすべてのイベントトリガーワークフローをオフラインにして削除してください。その後、削除 をクリックし、確認ダイアログボックスで 確認 をクリックします。
次のステップ
トリガーの作成と構成が完了したら、イベントトリガーワークフローで使用できます。詳細については、「イベントトリガーワークフロー」をご参照ください。