DataWorks の SSH ノードでは、SSH データソースを指定してホストにリモートアクセスし、そのホスト上でスクリプトを実行できます。たとえば、SSH ノードを使用して DataWorks から Elastic Compute Service (ECS) インスタンスにリモートアクセスし、インスタンス上でスクリプトを定期実行タスクとして実行できます。このトピックでは、SSH ノードを使用してタスクを開発する方法について説明します。
使用上の注意
-
SSH ノードを使用してリモートホスト上でプロセスを起動した後、タイムアウトなどが原因で SSH ノードタスクが予期せず終了しても、リモートホスト上のプロセスに影響はありません。DataWorks はプロセスを終了するコマンドを送信しません。
-
SSH ノードは標準の Shell 構文をサポートしていますが、対話型構文はサポートしていません。
-
SSH ノードを使用して ECS インスタンス上でスクリプトをリモート実行すると、インスタンス上に一時ファイルが作成されます。ECS インスタンスに十分なディスク容量があり、ファイル数の上限が要件を満たしていることを確認してください。
-
複数のタスクで同じファイルを同時に操作しないでください。競合が発生すると、SSH ノードが失敗する可能性があります。
前提条件
-
ビジネスフローが作成されている必要があります。
Data Studio では、ビジネスフローに基づいてエンジン固有の開発操作を実行します。ノードを作成する前に、まずビジネスフローを作成してください。詳細については、「ビジネスフローの作成」をご参照ください。
-
SSH データソースが作成済みであること。
SSH ノードで定期実行タスクの開発やスケジュールを行う前に、SSH サーバーにアクセスするための SSH データソースを作成する必要があります。データソースの作成については、「SSH データソース」をご参照ください。
説明SSH ノードは、JDBC 接続文字列で作成された SSH データソースのみをサポートしています。タスクの失敗を防ぐため、データソースがリソースグループへのネットワーク接続性があることを確認してください。
-
(オプション。RAM ユーザーの場合は必須) タスク開発に使用する RAM ユーザーがターゲットワークスペースに追加され、[開発者] または [ストレージ管理者] ロール (広範な権限を付与するため、慎重に割り当ててください) のいずれかが割り当てられている必要があります。メンバーの追加と権限の付与の詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
制限事項
-
Serverless リソースグループで SSH タスクを実行できます。Serverless リソースグループの購入と使用方法の詳細については、「Serverless リソースグループの使用」をご参照ください。
-
サポートされているリージョン:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、中国 (香港)、日本 (東京)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、英国 (ロンドン)、米国 (シリコンバレー)、米国 (バージニア)。
-
SSH ノードの最大コード長は
128 KBです。
ステップ 1: SSH ノードの作成
DataStudioページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。
-
対象のワークフローを右クリックし、 を選択します。
-
ノードの作成 ダイアログボックスで、ノードの 名前 を入力し、確認 をクリックします。ノードが作成されると、タスクを開発および設定できます。
ステップ 2: SSH タスクの開発
(オプション) SSH データソースの選択
ワークスペースに複数の SSH データソースがある場合は、SSH ノードエディターで適切なデータソースを選択する必要があります。SSH データソースが 1 つしかない場合は、デフォルトで選択されます。
SSH ノードは、JDBC 接続文字列で作成された SSH データソースのみをサポートしています。タスクの失敗を防ぐため、データソースがリソースグループへのネットワーク接続性があることを確認してください。
簡単な例
SSH ノードのコードエディターにコードを記述します。以下はコード例です。
# 1. 環境の準備
# リモートホストで、実行するファイルを探します。例: リモートホストの /tmp ディレクトリにある nihao.sh ファイル。
# テスト用に、SSH ノードで次のコマンドを実行して nihao.sh ファイルを作成できます。
echo "echo nihao,dataworks" >/tmp/nihao.sh
# 2. SSH ノードでリモートホスト上のファイルを実行
# DataWorks の SSH ノードで /tmp/nihao.sh ファイルを実行します。
sh /tmp/nihao.sh
スケジューリングパラメーターの使用
DataWorks は、定期的なタスクに動的な値を渡すための スケジューリングパラメータ を提供します。コード内で ${variable_name} 形式で変数を定義し、右側のペインの [スケジューリング設定] > スケジューリングパラメータ セクションで変数に値を割り当てることができます。サポートされている形式と設定の詳細については、「スケジューリングパラメーターでサポートされている形式」および「スケジューリングパラメーターの設定と使用」をご参照ください。
以下の例は、SSH ノードでスケジューリングパラメーターを使用する方法を示しています。
# 目標: SSH ノードの実行時刻を毎日 /tmp/sshnode.log ファイルに書き込む
# 実装: ${myDate} 変数に値 $[yyyy-mm-dd hh24:mi:ss] を割り当てることで、SSH ノードの実行時刻をファイルに書き込みます。
echo ${myDate} >/tmp/sshnode.log
cat /tmp/sshnode.log
ステップ 3: タスクスケジューリングの設定
ノードタスクを定期的に実行するには、ノード編集ページの右側にある [スケジューリング設定] をクリックし、必要に応じてスケジューリング設定を構成します。詳細については、「タスクスケジューリングプロパティの概要」をご参照ください。
ノードを送信する前に、ノードの [再実行プロパティ] と [依存する先祖ノード] を設定する必要があります。
ステップ 4: タスクコードのテスト
タスクが期待どおりに動作することを確認するために、必要に応じて次のテスト操作を実行します。
-
(オプション) リソースグループを選択し、カスタムパラメーター値を割り当てます。
-
ツールバーの
アイコンをクリックします。[パラメーター] ダイアログボックスで、テスト用のスケジュールリソースグループを選択します。 -
タスクコードでスケジューリングパラメーター変数を使用している場合は、ここでテスト用の値を割り当てます。パラメーター割り当てロジックの詳細については、「タスクデバッグプロセス」をご参照ください。
-
-
タスクコードを保存して実行します。
ツールバーの
アイコンをクリックしてタスクコードを保存します。次に、
アイコンをクリックしてタスクを実行します。 -
(オプション) スモークテストを実行します。
開発環境でスモークテストを実行し、スケジュールされたタスクが期待どおりに実行されることを確認するには、ノード送信中または送信後にスモークテストを実行します。詳細については、「スモークテストの実行」をご参照ください。
ステップ 5: タスクの送信とパブリッシュ
ノードタスクを設定したら、送信してパブリッシュします。パブリッシュされると、ノードはスケジューリング設定に基づいて定期的に実行されます。
-
ツールバーの
アイコンをクリックしてノードを保存します。 -
ツールバーの
アイコンをクリックしてノードタスクを送信します。[コミット] ダイアログボックスで、[変更内容] を入力します。必要に応じて、送信後にコードレビューを要求するかどうかを選択します。
説明-
ノードを送信する前に、ノードの [再実行プロパティ] と [依存する先祖ノード] を設定する必要があります。
-
コードレビューは、コード品質を確保し、レビューされていないコードが本番環境に直接パブリッシュされることによるエラーを防ぎます。コードレビューが有効になっている場合、送信されたノードコードは、パブリッシュする前にレビュー担当者の承認を受ける必要があります。詳細については、「コードレビュー」をご参照ください。
-
標準モードのワークスペースを使用している場合、タスクの送信に成功したら、ノード編集ページの右上隅にある [パブリッシュ] をクリックして、タスクを本番環境にデプロイします。詳細については、「タスクのパブリッシュ」をご参照ください。
次のステップ
タスク操作: タスクがコミットされ公開されると、ノードの設定に基づいて定期的に実行されます。ノード編集ページの右上隅にある 運用保守 をクリックしてオペレーションセンターに移動し、定期タスクのスケジューリングと実行ステータスを表示できます。詳細については、「定期タスクの管理」をご参照ください。
関連ドキュメント
SSH ノードの負荷分散と高可用性の実装については、「SSH ノードの負荷分散と高可用性の実装」をご参照ください。