DataWorks は、異なるテナント間でタスクの実行をトリガーするための HTTP トリガーノードを提供します。このトピックでは、DataWorks で HTTP トリガーノードを設定し、クロステナントのワークフローをオーケストレーションする方法について説明します。
背景情報
多くの組織では、データ処理と分析のワークフローが、複数のテナントにまたがって、または同一テナント内の異なるリージョンで実行されています。 DataWorks では、これらのシナリオをサポートするために HTTP トリガーノードを提供しています:
-
異なるテナント環境間で依存タスクをオーケストレーションします。
-
同一テナント内の複数リージョンにある、異なるスケジューリングシステム間でワークフローを連携します。例えば、システム B のワークフローは、システム A のノードがタスクを完了した後にのみ開始できます。
次の図は、クロステナントシナリオにおけるトリガーメカニズムの仕組みを示しています。
図の説明 :テナント B 環境のワークフローには HTTP トリガーノードが含まれており、オペレーションセンターにデプロイされています。ワークフローの実行時、上流ノードはスケジュールに基づいて順に実行されます。実行が HTTP トリガーノードに到達すると、そのノードと下流タスクは待機状態になります。HTTP トリガーノードがテナント A からのトリガーコマンドを受信して検証すると、HTTP トリガーノードと下流タスクが順に実行を開始します。
前提条件
-
2 つのテナント環境があり、それぞれに個別のルートアカウントがあること。
-
各環境でワークスペースを作成していること。
-
各環境のワークスペースにサーバーレスリソースグループを関連付けていること。
-
トリガー元のワークスペースに関連付けられているサーバーレスリソースグループの VPC に、Internet NAT Gateway と EIP を 設定 していること。
重要シェルノードが HTTP トリガーノードをトリガーする場合、トリガーコマンドはパブリックインターネット経由で送信する必要があります。
-
トリガーコマンドを送信するシェルノードを含むワークスペースに、MaxCompute コンピューティングリソースを関連付けていること。詳細については、「コンピューティングリソースの管理」をご参照ください。
注意事項
-
HTTP トリガーノードはトリガーとしてのみ機能します。このノードにコードを設定する必要はありません。
-
ワークスペースのタイプに一致する例を参照してください:
-
[新しいバージョンのData Development (Data Studio) を使用する]:Data Studio (新バージョン) の例を参照してください。
-
対象新しいバージョンのData Development (Data Studio) を使用する: 以前の Data Studio の例に従ってください。
説明新しいバージョンのData Development (Data Studio) を使用する しないワークスペースでは、http トリガーノードは DataWorks エンタープライズ版でのみ利用可能です。
-
Data Studio の例
テナント A からテナント B の Data Studio ワークスペース内のノードをトリガーするには、以下の手順に従ってください。
テナント B:HTTP トリガーワークフローの作成
テナント B のワークスペースで、リモートでトリガーできるワークフローを作成します。このワークフローには、トリガーコマンドを受信するための HTTP トリガーノードと、下流で実行される ビジネスノード を含める必要があります。このトピックでは、シェルノードを例として使用し、クロステナントトリガーが機能することを確認します。
-
Data Studio に移動します。
DataWorks ワークスペースリストに移動し、上部のナビゲーションバーで対象のリージョンに切り替えます。対象のワークスペースを見つけ、Operation 列で をクリックして Data Studio を開きます。
-
ワークフローを作成します。
-
左側メニューで、
アイコンをクリックします。Project Directory の右側にある
アイコンをクリックし、Create Workflow を選択します。Create Workflow ダイアログボックスが表示されます。 -
Create Workflow ダイアログボックスで、ワークフローの Name を入力します。この例では、
HTTP_Workflowを使用します。Confirm をクリックしてワークフローエディターを開きます。
-
-
ノードを作成します。
-
ワークフローエディターキャンバスで、Create Node パネルから、ノードとGeneral > [シェル]ノードをキャンバスにドラッグします。
-
シェルノードを HTTP トリガーノードの下流ノードとして接続します。
-
-
シェルノードを編集します。
重要HTTP トリガーノードはトリガーとしてのみ機能し、コードの設定は不要です。
-
シェルノードにカーソルを合わせ、Open Node をクリックします。ノードエディタータブで、次のコードを入力します:
echo "DataWorks"; -
右側の Scheduling Settings パネルで、Resource Group をワークスペースに関連付けられているサーバーレスリソースグループに設定します。
-
タブ上部のツールバーで、Save をクリックします。
-
-
ワークフローをデプロイします。
-
[プロジェクトディレクトリ] で、作成した
HTTP_Workflowワークフローを見つけます。右側の Scheduling Settings パネルで、Instance generation method を Instant generation after publishing に設定します。 -
ツールバーで
アイコンをクリックしてデプロイパネルを開きます。Start Release Production をクリックします。タスクはデプロイワークフローに従ってデプロイされます。詳細については、「ノードとワークフローのデプロイ」をご参照ください。
-
-
HTTP インスタンスのパラメーターを記録します。
HTTP トリガーノードはすぐに 定期インスタンス を生成するため、オペレーションセンター に移動してパラメーターを表示および記録できます。
[オペレーションセンター] ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[オペレーションセンターに移動] をクリックします。
-
左側のナビゲーションペインで、 をクリックして Cycle Examples ページに移動します。
-
リストで、作成された HTTP トリガーノードインスタンスを見つけます。その [タスク ID] と [スケジュール時刻] を記録します。
説明HTTP トリガーノードインスタンスの名前にカーソルを合わせると、その タスク ID が表示されます。
ローカル環境:サンプルコードの準備
-
pom 依存関係を追加します。
TriggerSchedulerTaskInstance デバッグページに移動します。[SDK の例] タブで、完全な SDK インストール情報 を確認します。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.demo.CrossTenantTriggerSchedulerTaskInstance</mainClass> <!-- ここをメインクラスに置き換えてください --> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <!-- package フェーズで実行されます --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>dataworks_public20240518</artifactId> <version>6.2.0</version> </dependency> </dependencies>重要コードの開発が完了したら、
mainClassパラメーターをメインの Java クラスの名前に置き換える必要があります。名前は、パッケージ名を含む完全修飾クラス名である必要があります。例:com.example.demo.CrossTenantTriggerSchedulerTaskInstance。 コードを開発します。
package com.example.demo; import com.aliyun.dataworks_public20240518.Client; import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceRequest; import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceResponse; import com.aliyun.teautil.models.RuntimeOptions; import java.text.SimpleDateFormat; import java.util.Calendar; public class CrossTenantTriggerSchedulerTaskInstance { // Alibaba Cloud DataWorks クライアントを作成するメソッド。 public static Client createClient20240518(String accessId, String accessKey, String endpoint) throws Exception { // OpenAPI 設定オブジェクトを初期化します。 com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); config.setAccessKeyId(accessId); // AccessKey ID を設定します。 config.setAccessKeySecret(accessKey); // AccessKey Secret を設定します。 config.setEndpoint(endpoint); // サービスエンドポイントを設定します。 return new Client(config); // 初期化されたクライアントインスタンスを返します。 } // DataWorks ノードの実行をトリガーするメソッド。 public static TriggerSchedulerTaskInstanceResponse runTriggerScheduler(Client client, Long nodeId, String EnvType,Long TriggerTime) throws Exception { TriggerSchedulerTaskInstanceRequest request = new TriggerSchedulerTaskInstanceRequest(); // API リクエストオブジェクトを作成します。 request.setTaskId(nodeId); // トリガーするノードの ID を設定します。 request.setEnvType(EnvType); // プロジェクト環境を設定します。 request.setTriggerTime(TriggerTime); // スケジュールされたトリガー時刻 (ミリ秒単位のタイムスタンプ) を設定します。 RuntimeOptions runtime = new RuntimeOptions(); // ランタイムオプションを初期化します。 return client.triggerSchedulerTaskInstanceWithOptions(request, runtime); // API 呼び出しを実行し、レスポンスを返します。 } // プログラムのエントリポイント。 public static void main(String[] args) throws Exception { // ノード ID を初期化します (サンプル値)。 String nodeId1 = ""; // プロジェクト環境を初期化します (サンプル値)。 String EnvTypeStr = ""; // スケジュール時刻を初期化します (サンプル値)。 String cycTimeStr = ""; // コマンドライン引数を処理し、nodeId1、EnvTypeStr、cycTimeStr に割り当てるループ。 int i; for(i = 0; i < args.length; ++i) { if (i == 0) { nodeId1 = args[i]; } else if (i == 1) { EnvTypeStr = args[i]; }else if (i == 2) { cycTimeStr = args[i]; } } // 文字列をノード ID の Long 型に変換します。 Long nodeId = Long.parseLong(nodeId1); // 使用方法を出力します。 System.out.println("Usage: java -jar test-1.0-SNAPSHOT.jar nodeId EnvTypeStr cycTimeStr"); // スケジュール時刻を解析し、タイムスタンプに変換します。 SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdft.parse(cycTimeStr)); // 時刻文字列を解析します。 Long cycTime = calendar.getTimeInMillis(); // 時刻をミリ秒単位で取得します。 // デバッグ情報 (タイムスタンプ) を出力します。 System.out.println("Scheduled timestamp: " + cycTime); // Alibaba Cloud サービスパラメーターを設定します。 String endpoint = "dataworks.cn-hangzhou.aliyuncs.com"; // サービスエンドポイント。 String accessId = "xxx"; // AccessKey ID。 String accessKey = "xxx"; // AccessKey Secret。 // Alibaba Cloud クライアントインスタンスを作成します。 Client client = createClient20240518(accessId, accessKey, endpoint); // トリガーノード操作を実行します。 TriggerSchedulerTaskInstanceResponse response = runTriggerScheduler(client, nodeId,EnvTypeStr, cycTime); // API レスポンスを JSON 形式で出力します。 System.out.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(response))); } }上記のコードの
endpoint、accessId、accessKeyパラメーターを、次の表の説明に従って実際の値に置き換えてください。パラメーター
説明
endpoint
対象の HTTP トリガーノードのワークスペースがあるリージョンのサービスエンドポイント。エンドポイントのリストについては、「Alibaba Cloud OpenAPI Developer Portal」をご参照ください。
accessId
対象の HTTP トリガーノードを所有する Alibaba Cloud アカウントの
AccessKey ID。DataWorks コンソールにログインします。右上のプロフィール画像にカーソルを合わせ、AccessKey に移動して、対象の HTTP トリガーノードに関連付けられている RAM ユーザー の
AccessKey IDとAccessKey Secretを取得できます。警告ルートアカウントの AccessKey ペアは完全な権限を付与します。漏洩した AccessKey ペアは高いセキュリティリスクをもたらします。対象のワークスペースに対する ワークスペース管理者 権限のみを持つ RAM ユーザー の AccessKey ペアを使用することを推奨します。accessKey
対象の HTTP トリガーノードを所有する Alibaba Cloud アカウントの
AccessKey Secret。上記のコードを、
jar-with-dependencies.jarで終わる JAR ファイルにパッケージ化します。
テナント A:シェルノードの設定
テナント A のワークスペースで、トリガーコマンドを送信するためのシェルノードを作成および設定します。
Data Studio に移動します。
DataWorks ワークスペースリストに移動し、トップナビゲーションバーで対象のリージョンに切り替えます。 対象のワークスペースを見つけ、Operation 列で をクリックしてデータスタジオを開きます。
JAR リソースをアップロードします。
左側メニューで、
アイコンをクリックして [リソース管理] に移動します。Resource Management ページで、Create ボタンまたは
アイコンをクリックし、 を選択します。[新規リソースと関数] ダイアログボックスで、リソース名を
http_node_work.jarに設定し、[確認] をクリックします。リソース詳細ページで、Click Upload をクリックして、「ローカル環境:サンプルコードの準備」の手順で生成した JAR ファイルをアップロードします。Data Sources には、ワークスペースに関連付けられている MaxCompute データソースを選択します。
リソースを保存してデプロイします。
JAR リソースがアップロードされた後、ツールバーの
アイコンをクリックしてデプロイパネルを開きます。Start Release Production をクリックし、デプロイワークフローの手順を完了します。詳細については、「ノードとワークフローのデプロイ」をご参照ください。トリガーとなるシェルノードを作成します。
左側メニューで、
アイコンをクリックします。Project Directory の右側にある
アイコンをクリックします。General > [シェル] を選択します。New Node ダイアログボックスが表示されます。
ノードのカスタム Name を入力し、Confirm をクリックしてノードエディターを開きます。
トリガーとなるシェルノードを編集します。
シェルノードエディターの左側メニューで、
アイコンをクリックし、アップロードした JAR リソース (http_node_work.jar) を見つけます。JAR リソースを右クリックし、Insert Resource Path を選択します。
シェルノードで、トリガーコード実行のためのパラメーターを指定します。
##@resource_reference{"http_node_work.jar"} java -jar http_node_work.jar nodeId "EnvTypeStr" "cycTimeStr"パラメーター
説明
java -jar
JAR 実行コマンド。
http_node_work.jar
参照したリソースの名前。
nodeId
「テナント B:HTTP トリガーワークフローの作成」の手順で記録した HTTP トリガーノードの タスク ID を指定します。
EnvTypeStr
対象の HTTP トリガーノードのプロジェクト環境。この例のノードは本番環境にデプロイされるため、このパラメーターを
Prodに設定します。開発環境で HTTP トリガーノードを実行するには、このパラメーターを
Devに設定します。cycTimeStr
「テナント B:HTTP トリガーワークフローの作成」の手順で記録した HTTP トリガーノードタスクの スケジュール時刻。時刻は
yyyy-MM-dd HH:mm:ss形式である必要があります。トリガーとなるシェルノードを設定します。
シェルノードエディターの右側にあるScheduling Settingsパネルで、を探し、Resource Groupとしてワークスペースにバインドされているサーバーレスリソースグループを選択します。
ワークフローの実行と結果の確認
テナント A のシェルノードを実行して、テナント B の HTTP トリガーノードとその下流タスクをトリガーします。
トリガーとなるシェルノードを実行します。
「テナント A:シェルノードの設定」の手順で設定したシェルノードのツールバーで、Run をクリックします。
実行結果を確認します。
テナント B の環境に移動し、以下の手順で結果を確認します:
[オペレーションセンター] ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[オペレーションセンターに移動] をクリックします。
左側のナビゲーションペインで、 をクリックして、定期インスタンスページに移動します。
トリガーされた HTTP トリガーノードインスタンスを見つけ、そのステータスを確認します。
レガシー Data Studio の例
テナント A からテナント B のレガシー Data Studio ワークスペース内にあるノードをトリガーする場合は、以下の手順に従ってください。
テナント B:HTTP トリガーワークフローの作成
テナント B のワークスペースで、リモートでトリガーできるワークフローを作成します。このワークフローには、トリガーコマンドを受信するための HTTP トリガーノードと、実行対象のダウンストリーム ビジネスノードを含める必要があります。このトピックでは、シェルノードを例に、クロステナントトリガーが機能することを確認します。
HTTP トリガーノードを作成します。
シェルノードを作成します。
「ノードエディター」タブに、次のコードを入力します。 右側のスケジューリング設定で、RUN Attribute と Resource Group for Scheduling を設定します。 次に、Save をクリックしてノード設定を保存します。
echo "DataWorks";オペレーションセンターにワークフローをデプロイします。
HTTP インスタンスのパラメーターを記録します。
http トリガーノードは定時インスタンスを
T+1ベースで生成するため、インスタンス情報は翌日に表示できます。 ワークフローの右上隅にある
アイコンをクリックします。 Operation and Maintenance Center で に移動すると、HTTP インスタンスのパラメーターを表示できます。作成した HTTP トリガーノードインスタンスを見つけ、その [タスク ID]、[定時実行時間]、および [業務日付] を記録します。
説明HTTP トリガーノードインスタンスの名前にカーソルを合わせると、その [タスク ID] が表示されます。
ローカル環境:コードの準備
pom 依存関係を追加します。
RunTriggerNode デバッグページに移動します。[SDKの例] タブで、完全な [SDKインストール情報] を表示します。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.demo.CrossTenantTriggerNode</mainClass> <!-- お使いのメインクラスに置き換えてください --> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>dataworks_public20200518</artifactId> <version>7.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.3.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-console</artifactId> <version>0.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-util</artifactId> <version>0.2.23</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>1.0.1</version> </dependency> </dependencies>重要コードの開発が完了したら、
mainClassパラメーターを、お使いのメイン Java クラスの名前に置き換える必要があります。この名前は、パッケージ名を含む完全修飾クラス名である必要があります。例:com.example.demo.CrossTenantTriggerNode。コードを開発します。
package com.example.demo; import java.text.SimpleDateFormat; import java.util.Calendar; import com.aliyun.dataworks_public20200518.Client; import com.aliyun.dataworks_public20200518.models.RunTriggerNodeRequest; import com.aliyun.dataworks_public20200518.models.RunTriggerNodeResponse; import com.aliyun.teautil.models.RuntimeOptions; public class CrossTenantTriggerNode { // Alibaba Cloud DataWorks クライアントを作成するメソッド。 public static Client createClient20200518(String accessId, String accessKey, String endpoint) throws Exception { // OpenAPI 設定オブジェクトを初期化します。 com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); config.setAccessKeyId(accessId); // AccessKey ID を設定します。 config.setAccessKeySecret(accessKey); // AccessKey Secret を設定します。 config.setEndpoint(endpoint); // サービスエンドポイントを設定します。 return new Client(config); // 初期化されたクライアントインスタンスを返します。 } // DataWorks ノードの実行をトリガーするメソッド。 public static RunTriggerNodeResponse runTriggerNode(Client client, Long nodeId, Long cycleTime, Long bizDate, Long appId) throws Exception { RunTriggerNodeRequest request = new RunTriggerNodeRequest(); // API リクエストオブジェクトを作成します。 request.setNodeId(nodeId); // トリガーするノードの ID を設定します。 request.setCycleTime(cycleTime); // サイクルタイム (ミリ秒単位のタイムスタンプ) を設定します。 request.setBizDate(bizDate); // 業務日付 (ミリ秒単位のタイムスタンプ) を設定します。 request.setAppId(appId); // アプリケーション ID を設定します。 RuntimeOptions runtime = new RuntimeOptions(); // ランタイムオプションを初期化します。 return client.runTriggerNodeWithOptions(request, runtime); // API 呼び出しを実行し、レスポンスを返します。 } // プログラムのエントリポイント。 public static void main(String[] args) throws Exception { // ノード ID を初期化します (サンプル値)。 String nodeId1 = ""; // 定時実行時間と業務日付を初期化します (サンプル値)。 String cycTimeStr = ""; String bizTimeParam = ""; // コマンドライン引数を処理し、nodeId1、cycTimeStr、bizTimeParam に割り当てるループ。 int i; for(i = 0; i < args.length; ++i) { if (i == 0) { nodeId1 = args[i]; } else if (i == 1) { cycTimeStr = args[i]; }else if (i == 2) { bizTimeParam = args[i]; } } // 文字列を Long 型のノード ID に変換します。 Long nodeId = Long.parseLong(nodeId1); // 使用方法を出力します。 System.out.println("Usage: java -jar test-1.0-SNAPSHOT.jar nodeId cycTimeParam bizTimeParam"); // 定時実行時間を解析し、タイムスタンプに変換します。 SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdft.parse(cycTimeStr)); // 時刻文字列を解析します。 Long cycTime = calendar.getTimeInMillis(); // 時刻をミリ秒単位で取得します。 // 業務日付を解析し、タイムスタンプに変換します。 SimpleDateFormat sdfti = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendari = Calendar.getInstance(); calendari.setTime(sdfti.parse(bizTimeParam)); Long bizTime = calendari.getTimeInMillis(); // デバッグ情報 (タイムスタンプ) を出力します。 System.out.println("Scheduled timestamp: " + cycTime); System.out.println("Business date timestamp: " + bizTime); // Alibaba Cloud サービスパラメーターを設定します。 String endpoint = "dataworks.cn-hangzhou.aliyuncs.com"; // サービスエンドポイント。 String accessId = "xxx"; // AccessKey ID。 String accessKey = "xxx"; // AccessKey Secret。 Long appId = Long.valueOf(xxx); // アプリケーション ID (実際の値に置き換えてください)。 // Alibaba Cloud クライアントインスタンスを作成します。 Client client = createClient20200518(accessId, accessKey, endpoint); // トリガーノード操作を実行します。 RunTriggerNodeResponse response = runTriggerNode(client, nodeId, cycTime, bizTime, appId); // API レスポンスを JSON 形式で出力します。 System.out.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(response))); } }上記のコードの
endpoint、accessId、accessKey、およびappIdパラメーターを、実際の値に置き換えてください。パラメーター
説明
endpoint
対象の HTTP トリガーノードがあるワークスペースのリージョンのサービスエンドポイント。エンドポイントのリストについては、「Alibaba Cloud OpenAPI Developer Portal」をご参照ください。
accessId
対象の HTTP トリガーノードを所有する Alibaba Cloud アカウントの
AccessKey ID。DataWorks コンソールにログインします。 右上隅のプロフィール画像にポインターを合わせ、AccessKey に移動して
AccessKey IDとAccessKey Secretを取得します。警告ルートアカウントの AccessKey ペアは完全な権限を持ちます。AccessKey ペアが漏洩すると、高いセキュリティリスクをもたらします。対象のワークスペースに対する [ワークスペース管理者] 権限のみを持つ RAM ユーザー の AccessKey ペアを使用することを推奨します。accessKey
対象の HTTP トリガーノードを所有する Alibaba Cloud アカウントの
AccessKey Secret。appId
対象の HTTP トリガーノードが配置されているワークスペースの ID。[管理] でワークスペース ID を確認できます。
上記のコードを、ファイル名が
jar-with-dependencies.jarで終わる JAR ファイルにパッケージ化します。
テナント A:シェルノードの設定
以下の手順に従って、テナント A のワークスペースで、テナント B のワークスペースにある HTTP トリガーノードをトリガーするためのシェルノードを設定します。
JAR リソースを作成してアップロードします。
「ローカル環境:コードの準備」の手順でパッケージ化した JAR ファイルから MaxCompute リソースを作成します。詳細については、「MaxComputeリソースの作成と使用」をご参照ください。
トリガーとなるシェルノードを開発します。
シェルノードを作成し、そのノードから MaxCompute リソースを参照します。シェルノードで、次の例に示すように、トリガーコード実行用のパラメーターを指定します。
##@resource_reference{"http_node_work.jar"} java -jar http_node_work.jar nodeId "cycleTime" "bizDate"パラメーター
説明
http_node_work.jar
参照したリソースの名前。
nodeId
「テナント B:HTTP トリガーワークフローの作成」の手順で記録した HTTP トリガーノードのタスク ID。
cycleTime
「テナント B:HTTP トリガーワークフローの作成」の手順で記録したトリガーノードタスクの定時実行時間。値は
yyyy-MM-dd HH:mm:ss形式である必要があります。bizDate
「テナント B:HTTP トリガーワークフローの作成」の手順で記録したトリガーノードタスクの業務日付。値は
yyyy-MM-dd形式である必要があります。トリガーとなるシェルノードを設定します。
シェルノードエディターの右側にあるScheduling Settingsパネルで、を探し、スケジューリングリソースグループを、お使いのワークスペースにバインドされているサーバーレスリソースグループに設定します。
ワークフローの実行と結果の確認
テナント A のシェルノードを実行し、テナント B にある HTTP トリガーノードとそのダウンストリームタスクをトリガーします。
トリガーとなるシェルノードを実行します。
「テナント A:シェルノードの設定」の手順で設定したシェルノードのツールバーで、実行アイコン (
) をクリックしてノードを実行します。実行結果を確認します。
テナント B の環境に移動し、以下の手順で結果を確認します。
[オペレーションセンター] ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[オペレーションセンターに移動] をクリックします。
左側のナビゲーションペインで、 をクリックして、定期インスタンスページに移動します。
トリガーされた HTTP トリガーノードインスタンスを見つけ、そのステータスを確認します。