DataWorks の HTTP トリガーノードを使用して、外部スケジューリングシステムのタスクが完了したときにタスクをトリガーします。このトピックでは、外部システムで HTTP トリガーノードを使用するための手順と考慮事項について説明します。
前提条件
DataWorks Enterprise Edition 以上がアクティブ化されていること。
ワークフローとターゲットコンピュートノードが存在すること。例えば、MaxCompute SQL を使用してタスク計算を行う場合、MaxCompute SQL ノードを作成するには、「ODPS SQL タスクの開発」をご参照ください。
背景情報
外部スケジューリングシステムは、次の2つのシナリオでタスクをトリガーします。
HTTP トリガーノードにアップストリームノードがない場合
このシナリオでは、HTTP トリガーノードを作成し、外部システムでトリガーを構成し、DataWorks でスケジューリング依存関係を構成します。詳細については、「HTTP トリガーノードの作成」および「外部スケジューリングシステム向けトリガー構成」をご参照ください。HTTP トリガーノードにアップストリームノードがある場合
このシナリオでは、次のようになります。HTTP トリガーノードを作成し、外部システムでトリガーを構成し、DataWorks でスケジューリング依存関係を構成します。詳細については、「HTTP トリガーノードの作成」および「外部スケジューリングシステム向けトリガー構成」をご参照ください。
デフォルトでは、アップストリームノードはワークフローのルートノードです。その他のアップストリームノードは手動で構成する必要があります。
HTTP トリガーノードは、アップストリームノードが完了し、外部システムがスケジューリングコマンドを発行した後にのみ、ダウンストリームノードをトリガーします。
外部システムがアップストリームノードの完了前にコマンドを発行した場合、HTTP トリガーノードはダウンストリームノードをすぐにトリガーしません。DataWorks はコマンドを保持し、アップストリームノードが完了した後にのみダウンストリームノードをトリガーします。
重要外部トリガーコマンドは24時間有効です。この期間内にアップストリームノードが完了しない場合、コマンドは有効期限切れになります。
制限事項
HTTP トリガーノードには、DataWorks Enterprise Edition 以上が必要です。DataWorks エディションの詳細については、「DataWorks エディション別の機能詳細」をご参照ください。
HTTP トリガーノードは、T+1 インスタンス生成のみをサポートしており、データバックフィルインスタンスによってトリガーすることはできません。したがって、外部システムは、本番環境にデプロイされた翌日からのみノードをトリガーできます。
HTTP トリガーノードはトリガーとしてのみ機能し、コンピューティングタスクを直接実行することはできません。実行したいタスクノードを HTTP トリガーノードのダウンストリームノードとして構成する必要があります。
ワークフローが作成され、正常に実行された後にトリガーノードを再実行する場合は、DataWorks でノードを再実行し、外部スケジューリングシステムからトリガーコマンドを発行する必要があります。HTTP トリガーノードを再実行しても、すでに正常に実行されたダウンストリームノードはトリガーされません。
ダウンストリームノードの履歴実行結果を取得するには、データバックフィル操作を実行します (「データバックフィルインスタンスの O&M」をご参照ください)。データバックフィルには外部トリガーコマンドは必要ありません。HTTP トリガーノードはダウンストリームノードを直接トリガーします。したがって、データバックフィルを使用して外部トリガーをテストすることはできません。
サポートされているリージョン: 中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、日本 (東京)、シンガポール、マレーシア (クアラルンプール)、ドイツ (フランクフルト)、米国 (シリコンバレー)。
トリガーロジック
HTTP トリガーノードは、次の場合にのみ実行されます。
ノードに対してサイクルインスタンスが存在します(オペレーションセンターの [サイクルインスタンス] パネルで検索可能です)。このインスタンスは、RunTriggerNode API によって正常にトリガーされるまで、トリガー待機状態のままです。RunTriggerNode API が HTTP トリガーノードを正常にトリガーするまで、後続ノードはブロックされます。
すべての親ノードが正常に実行されている場合 (インスタンスが成功状態である場合)。
HTTP トリガーノード用に生成されたサイクルインスタンスのスケジュールされた時間に達した場合。
スケジューリング用リソースグループは、トリガー時刻に十分なリソースがあります。
HTTP トリガーノードがフリーズ状態ではない場合。
HTTP トリガーノードは、トリガー保留状態の場合にのみトリガーできます (正常にトリガーされたノードは再度トリガーできません)。
HTTP トリガーノードの作成
[Data Studio] に移動します。
DataWorks コンソールにログインします。DataWorks コンソール の上部ナビゲーションバーで、目的のリージョンを選択します。左側ナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発へ移動] をクリックします。
[DataStudio] ページに移動し、
アイコンにカーソルを合わせ、 を選択します。あるいは、特定のワークフローを開き、[一般] を右クリックしてから、 を選択します。
[ノードの作成] ダイアログボックスで、[パス] と [名前] のパラメーターを設定します。
- [確定] をクリックします。
ノード構成タブの右側にある [プロパティ] をクリックして、ノードのスケジューリングプロパティを設定します。詳細については、「基本プロパティの設定」をご参照ください。
説明デフォルトでは、アップストリームノードはワークフローのルートノードです。その他のアップストリームノードは手動で構成する必要があります。
ノードを保存して提出します。
重要ノードをコミットする前に、[プロパティ] タブで [再実行] および [親ノード] パラメーターを設定する必要があります。
上部のツールバーにある
アイコンをクリックしてノードを保存します。 ツールバーにある
アイコンをクリックします。 ダイアログボックスで、[変更の説明] パラメーターを設定します。
[OK] をクリックします。
使用しているワークスペースが標準モードの場合、コミットした後にノードをデプロイするには、右上隅の [デプロイ] をクリックする必要があります。詳細については、「タスクのデプロイ」をご参照ください。
ノードに対する O&M 操作を実行します。詳細については、「自動トリガーノードに対する基本的な O&M 操作の実行」をご参照ください。
外部スケジューリングシステム向けトリガー構成
外部スケジューリングシステムから HTTP トリガーノードをトリガーするには、次のいずれかの方法を使用して、API (RunTriggerNode) の 2020 バージョンを呼び出します。
Java
Java SDK をインストールします (「Alibaba Cloud SDK V1.0 for Java の開始」をご参照ください)。
DataWorks SDK には、以下の pom 構成を使用します。
<dependency> <groupId>com.aliyun</groupId> <artifactId>dataworks_public20200518</artifactId> <version>8.0.0</version> </dependency>サンプルコード
「」または「RunTriggerNode デバッグページ」にアクセスし、[SDK サンプル] タブをクリックして、完全な例を表示します。

Python
Python SDK をインストールします (「SDK の統合」をご参照ください)。
DataWorks SDK をインストールするには、次のコマンドを実行します。
pip install aliyun-python-sdk-dataworks-public==2.1.2サンプルコード
「」または「RunTriggerNode デバッグページ」にアクセスし、[SDK サンプル] タブをクリックして、完全な例を表示します。

API
API の呼び出し方法については、「RunTriggerNode」をご参照ください。
関連ドキュメント
DataWorks は、テナント間でタスクをトリガーおよび実行するための HTTP トリガーノード機能を提供します。詳細については、「HTTP トリガーノードを使用したテナント間タスク実行」をご参照ください。