DataWorks では、特定の SSH データソースに基づいて SSH ノードを作成および使用し、データソースに接続されているホストにリモートアクセスし、ホスト上で実行されているスクリプトをトリガーできます。このトピックでは、SSH ノードを作成および使用する方法について説明します。
ノードの概要
DataWorks では、SSH データソースを追加し、ホストアクセス情報を構成して、ホストへのリモートアクセスを実装できます。次に、SSH ノードを使用して、データソースに基づいてホストにリモートアクセスできます。たとえば、この方法を使用して DataWorks から Elastic Compute Service (ECS) インスタンスにリモートアクセスし、ECS インスタンス上のスクリプトの定期スケジューリングをトリガーできます。
前提条件
使用する RAM ユーザーがワークスペースに追加されていること。
RAM ユーザーを使用してタスクを開発する場合は、RAM ユーザーをメンバーとしてワークスペースに追加し、[開発] ロールまたは [ワークスペース管理者] ロールを RAM ユーザーに割り当てる必要があります。ワークスペース管理者ロールには、必要以上の権限があります。ワークスペース管理者ロールを割り当てる場合は注意してください。メンバーを追加し、メンバーにロールを割り当てる方法の詳細については、「ワークスペースメンバーを追加し、ロールを割り当てる」をご参照ください。
サーバーレスリソースグループがワークスペースに関連付けられていること。詳細については、「サーバーレスリソースグループを使用する」ディレクトリのトピックをご参照ください。
ノードでタスクを開発する前に、SSH ノードが作成されていること。詳細については、「タスクノードを作成する」をご参照ください。
SSH データソースが追加されていること。
SSH ノードで SSH タスクを開発および定期的にスケジュールするには、SSH サーバーにリモートアクセスするために SSH データソースを追加する必要があります。データソースを追加する方法については、「SSH データソースを追加する」をご参照ください。
説明SSH ノードを使用して、Java Database Connectivity (JDBC) 接続文字列モードで DataWorks に追加された SSH データソースのみに基づいてタスクを開発できます。さらに、タスクの実行エラーを防ぐために、データソースが目的のリソースグループに接続されていることを確認する必要があります。
制限事項
SSH ノードで実行されるコードのサイズは 128 KB
を超えることはできません。
注意事項
SSH ノードを使用してリモートホストでプロセスが開始されると、タスクのタイムアウトなどの例外によって SSH ノードのタスクが終了した場合でも、基盤となるリモートホストの操作は影響を受けません。この場合、DataWorks はリモートホストにプロセス終了コマンドを発行しません。
SSH ノードは標準のシェル構文をサポートしますが、対話型構文はサポートしません。
SSH ノードを使用して ECS インスタンスでのスクリプトの実行をトリガーすると、ECS インスタンスに一時ファイルが生成されます。 ECS インスタンスのストレージ容量とファイルの最大数がビジネス要件を満たしていることを確認してください。
手順 1: SSH ノードを使用してタスクを開発する
(オプション) SSH データソースを選択する
ワークスペースに複数の SSH データソースが追加されている場合は、ビジネス要件に基づいて、ノードの構成タブの上部にある [データソースの選択] ドロップダウンリストから 1 つ選択する必要があります。ワークスペースに SSH データソースが 1 つだけ追加されている場合は、SSH データソースを使用してタスクが開発されます。
SSH ノードを使用して、JDBC 接続文字列モードで DataWorks に追加された SSH データソースのみに基づいてタスクを開発できます。さらに、タスクの実行エラーを防ぐために、データソースが目的のリソースグループに接続されていることを確認する必要があります。
コードを開発する: 簡単な例
SSH ノードの構成タブにあるコードエディタで、タスクコードを記述します。この例では、次のコードを使用します。
# 1. 環境を準備します。
# リモートホストで実行するファイルを見つけます。たとえば、nihao.sh ファイルはリモートホストの tmp ディレクトリに保存されています。
# テストを容易にするために、SSH ノードで次のコマンドを実行して nihao.sh ファイルを作成できます。
echo "echo nihao,dataworks" >/tmp/nihao.sh
# 2. SSH ノードを使用して、リモートホストでファイルの実行をトリガーします。
# DataWorks の SSH ノードを使用して、nihao.sh ファイルの実行をトリガーします。
sh /tmp/nihao.sh
コードを開発する: スケジューリングパラメータを使用する
DataWorks は、定期スケジューリングシナリオでのスケジューリングパラメータの構成に基づいて、タスクのコードで値が動的に置き換えられるスケジューリングパラメータを提供します。 ${変数}
形式でタスクコードに変数を定義し、[プロパティ] タブの [スケジューリングパラメータ] セクションで変数に値を割り当てることができます。スケジューリングパラメータの構成方法と、サポートされているスケジューリングパラメータの形式については、「スケジューリング構成」をご参照ください。
次のコンテンツは、SSH ノードでスケジューリングパラメータを使用する方法の例を示しています。
# 要件: SSH ノードの実行時間を毎日リモートホストの /tmp ディレクトリに保存されている sshnode.log ファイルに書き込みます。
# 実装: sshnode.log ファイルで ${myDate} 変数を使用し、myDate 変数に値として $[yyyy-mm-dd hh24:mi:ss] を割り当てます。
echo ${myDate} >/tmp/sshnode.log
cat /tmp/sshnode.log
SSH ノードに基づいてタスクを開発した後、システムがタスクを定期的にスケジュールできるように、ノードのスケジューリングプロパティを構成します。詳細については、「スケジューリング構成」をご参照ください。
手順 2: SSH ノードをデプロイし、O&M 操作を実行する
ノードコードとスケジューリングプロパティを構成した後、ノードを本番環境にデプロイします。詳細については、「ノードをデプロイする」をご参照ください。
デプロイメントが完了したら、[オペレーションセンター] の [自動トリガーノード] ページに移動して、デプロイされているノードを表示し、ノードで O&M 操作を実行します。システムは、構成したスケジューリングプロパティに基づいてノードを定期的に実行します。詳細については、「オペレーションセンターの概要」をご参照ください。