DataWorks では、SSH ノードを使用して、指定された SSH データソース経由でホストにリモートアクセスし、スクリプトの実行をトリガーできます。本トピックでは、SSH ノードの開発ワークフローについて説明します。
概要
SSH ノードを使用すると、DataWorks は SSH データソースを介してホストにリモートアクセスできます。たとえば、DataWorks から Elastic Compute Service (ECS) インスタンスにリモートアクセスし、インスタンスでスクリプトを定期的に実行できます。
前提条件
使用する RAM ユーザーがワークスペースに追加されていること。
RAM ユーザーを使用してタスクを開発する場合、RAM ユーザーをメンバーとしてワークスペースに追加し、[開発] ロールまたは [ワークスペース管理者] ロールを RAM ユーザーに割り当てる必要があります。 ワークスペース管理者ロールには、必要以上の権限があります。 ワークスペース管理者ロールを割り当てる場合は注意してください。 メンバーを追加してロールを割り当てる方法の詳細については、「ワークスペースメンバーを追加してロールを割り当てる」をご参照ください。
-
サーバーレス リソースグループがワークスペースに関連付けられていること。 詳細については、「サーバーレス リソースグループを使用する」ディレクトリのトピックをご参照ください。
-
開発用の SSH ノードを作成済みであること。詳細については、「ワークフローでのノードの作成」をご参照ください。
-
SSH データソースを作成済みであること。
SSH サーバーにリモートアクセスするには、まず SSH データソースを作成する必要があります。その後、SSH ノードで SSH タスクを開発し、定期的に実行するようスケジュールできます。データソースの作成方法の詳細については、「SSH データソース」をご参照ください。
説明SSH ノードは、JDBC 接続文字列で作成された SSH データソースのみをサポートします。タスクの失敗を防ぐため、データソースがリソースグループに接続できることを確認してください。
制限事項
SSH ノードの最大コード長は 128KB です。
注意事項
-
リモートプロセスを開始した SSH ノードタスクが予期せず (タイムアウトなどにより) 終了した場合でも、リモートプロセスは影響を受けません。DataWorks は、プロセスを終了するためのコマンドをリモートホストに送信しません。
-
SSH ノードは標準のシェル構文をサポートしますが、インタラクティブ機能はサポートしません。
-
SSH ノードを使用して ECS インスタンスでスクリプトを実行すると、ECS インスタンスに一時ファイルが生成されます。インスタンスに十分なディスク容量があり、必要なファイルを作成できることを確認してください。
-
同じファイルを同時に操作する複数のタスクを実行しないでください。SSH ノードが失敗する原因となります。
ステップ 1:SSH ノードの開発
(オプション) SSH データソースの選択
ワークスペースに複数の SSH データソースが存在する場合は、SSH ノードの編集ページで適切なデータソースを選択します。1 つしか存在しない場合、DataWorks はデフォルトでそれを使用します。
SSH ノードは、JDBC 接続文字列で作成された SSH データソースのみをサポートします。タスクの失敗を防ぐため、データソースがリソースグループに接続できることを確認してください。
コード開発:簡単な例
実行したいスクリプトを SSH ノードのコードエディターに記述します。次のコードは一例です。
# 1. 環境を準備します。
# リモートホストで実行するファイルを用意します。たとえば、hello.sh という名前のファイルがリモートホストの /tmp ディレクトリに存在します。
# テストを容易にするために、SSH ノードで次のコマンドを実行して hello.sh ファイルを作成できます。
echo "echo hello,dataworks" >/tmp/hello.sh
# 2. リモートホストでスクリプトを実行します。
# DataWorks SSH ノードを使用して /tmp/hello.sh スクリプトを実行します。
sh /tmp/hello.sh
コード開発:スケジューリングパラメーターの使用
DataWorks の スケジューリングパラメーター を使用して、定期的なスケジューリングシナリオでコードに引数を動的に渡します。 ${variable_name} 形式を使用して、タスクコードで変数を定義できます。 ノード編集ページで、右側のパネルの スケジューリング設定 > スケジューリングパラメーター に移動して、変数に値を割り当てます。 スケジューリングパラメーターでサポートされている形式や設定の詳細については、「ノードのスケジューリングプロパティを設定する」をご参照ください。
次の例は、SSH ノードでスケジューリングパラメーターを使用する方法を示しています。
# この例では、${myDate} 変数を使用して、ノードの実行時刻をログファイルに書き込みます。これを行うには、ノードのプロパティで myDate 変数に値 $[yyyy-mm-dd hh24:mi:ss] を割り当てます。
echo ${myDate} >/tmp/sshnode.log
cat /tmp/sshnode.log
SSH ノードのスクリプトを開発した後、タスクを定期的に実行するようにスケジューリングプロパティを設定する必要があります。詳細については、「ノードのスケジューリングプロパティの設定」をご参照ください。
ステップ 2:ノードのデプロイと管理
-
スケジューリングプロパティを設定した後、SSH ノードを本番環境にデプロイします。詳細については、「ノードまたはワークフローのデプロイ」をご参照ください。
-
ノードがデプロイされると、スケジュール設定に基づいて定期的に実行されます。に移動して、定期タスクを表示および管理できます。詳細については、「運用センターの概要」をご参照ください。
関連ドキュメント
SSH ノードの負荷分散と高可用性を実装する方法については、「SSH ノードの負荷分散と高可用性の実装」をご参照ください。