DataWorks Shell ノードはデータエンジニア向けに設計されており、ファイル操作や OSS および NAS とのデータ連携などのシナリオで標準的なシェルスクリプトを実行できます。スケジューリングパラメーターの設定、リソースの参照、プリインストール済みの ossutil ツールによる OSS への安全なアクセス、RAM ロールの関連付けによるノード実行が可能です。
権限
ノード開発に使用する RAM アカウントを対象のワークスペースに追加し、開発者またはワークスペース管理者ロールを付与してください。詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
注意事項
-
構文の制限
-
標準的なシェル構文はサポートされていますが、インタラクティブな構文はサポートされていません。
-
-
ランタイム環境とネットワークアクセス
-
サーバーレスリソースグループ上で Shell ノードを実行する場合、対象サービスに許可リストが設定されている場合は、サーバーレスリソースグループの IP アドレスを対象アプリケーションの許可リストに追加する必要があります。
-
サーバーレスリソースグループを使用する場合、単一タスクの最大値は
64CUです。リソース不足やタスク起動の遅延を防ぐため、16CUを超えないようにしてください。
-
-
拡張開発環境
-
特定の開発環境が必要なタスクの場合、DataWorks のカスタムイメージ機能を使用して、タスク実行用の専用イメージを構築できます。詳細については、「カスタムイメージの使用」をご参照ください。
-
-
リソース使用量と複数スクリプトの呼び出し
-
Shell ノード内で多数の子プロセスを起動しないでください。現在、Shell ノードにはリソース制限がないため、過剰な子プロセスが同じスケジューリングリソースグループで実行中の他のタスクに影響を与える可能性があります。
-
Shell ノードが Python スクリプトなどの別のスクリプトを呼び出す場合、ノード自体は呼び出されたスクリプトが完了するまで待機します。
-
クイックスタート
このセクションでは、「Hello DataWorks!」を出力する例を用いて、Shell ノードの作成、デバッグ、設定、デプロイの手順を説明します。
ノードの開発
-
DataWorks コンソールにログインします。対象のリージョンに切り替えた後、左側のナビゲーションウィンドウで をクリックします。表示されるドロップダウンリストから対象のワークスペースを選択し、データ分析 をクリックします。
-
Data Studio ページで Shell ノードを作成します。
-
スクリプトエディタに標準的なシェルコードを入力します(インタラクティブな構文はサポートされていません):
echo "Hello DataWorks!" -
コードの開発が完了したら、右側の Debug Configuration をクリックし、対象のデバッグリソースグループおよびその他の必要な実行パラメーターを選択した後、
Run ボタンをクリックしてローカルデバッグを実行します。 -
スクリプトのデバッグ検証が完了したら、右側の Scheduling Settings をクリックして、スケジュール、依存関係、パラメータ設定など、本番レベルのスケジューリングポリシーを設定します。これにより、ノードは計画通りに定期的に自動実行されます。
-
タスクのスケジューリング設定が完了したら、次のステップに進む前に Save をクリックする必要があります。
ノードのデプロイと運用
高度な使い方
リソースの参照
-
DataWorks では、Shell ノードで必要なリソースをリソース管理を通じて DataWorks にアップロードできます。詳細については、「リソースの管理」をご参照ください。
説明リソースはノードから参照される前にデプロイする必要があります。本番タスクでリソースが必要な場合は、そのリソースも本番環境にデプロイする必要があります。
-
作成した Shell ノードを開き、スクリプトエディタページに移動します。
-
左側のナビゲーションウィンドウで
をクリックしてリソース管理メニューを開き、参照したいリソースを見つけます。リソースを右クリックして「リソースの参照」を選択すると、シェルスクリプト内にリソースが参照されます。説明-
リソースが参照されると、スクリプトの先頭に
##@resource_reference{resource_name}形式の宣言コメントが自動的に挿入されます。 -
このコメントは、DataWorks がリソース依存関係を識別し、実行時に対応するリソースを実行環境に自動マウントするために必要です。手動での変更や削除は行わないでください。
-
スケジューリングパラメーターの使用
スケジューリングパラメーターは位置パラメーターとして Shell ノードに注入されます。カスタム変数名はサポートされていません。DataWorks は で設定したパラメーター値を、$1、$2、$3 などの位置パラメーターとして順にシェルスクリプトに渡します。パラメーター数が 9 を超える場合は、${10} や ${11} などの波括弧構文を使用して、正しく解析されるようにしてください。複数のパラメーター値は半角スペースで区切り、スクリプト内の位置参照と順序が厳密に一致するようにしてください。
たとえば、以下の例では:
-
パラメーター $1 には現在時刻が割り当てられます:$[yyyymmdd]。
-
パラメーター $2 には固定値が割り当てられます:
Hello DataWorks。
-
パラメーター値に半角スペースが含まれる場合は、引用符で囲んでください。引用符内のすべての内容が単一のパラメーターとして扱われます。
-
上流ノードの出力パラメーターを取得するには、 でパラメーターを追加し、パラメーター値を上流ノードの出力パラメーターに設定します。
ossutil を使用した OSS へのアクセス
DataWorks Shell ノードは、Alibaba Cloud OSS コマンドラインツールである ossutil をネイティブにサポートしており、バケットの管理、ファイルのアップロード・ダウンロード、バッチ操作を実行できます。設定ファイルまたはコマンドラインパラメーターを使用してアクセス認証情報を構成し、ossutil で OSS にアクセスできます。
-
コマンドラインパラメーターを使用して ossutil で OSS にアクセスする方法については、「コマンドラインパラメーターの使用」をご参照ください。
-
設定ファイルを使用して ossutil で OSS にアクセスする方法については、「設定ファイルの使用」をご参照ください。
新しい Data Studio では、特に Shell ノードにおいて、上記の 2 つの方法に加えて、RAM ロールを関連付け、Alibaba Cloud STS (セキュリティトークンサービス) を使用してそのロールの一時的なセキュリティ認証情報を動的に取得し、ossutil で OSS にアクセスすることもできます。この方法により、コード内に長期有効な AccessKey 認証情報をハードコードせずに、対象のクラウドリソースに安全にアクセスできます。詳細については、「ノード実行時の RAM ロールの関連付け」をご参照ください。
ossutil は DataWorks 環境にプリインストール済みです。手動でインストールする必要はありません。デフォルトパスは /home/admin/usertools/tools/ossutil64 です。
データセットを使用した OSS または NAS へのアクセス
DataWorks では、OSS または NAS のデータセットを作成し、Shell ノード開発時にデータセットを参照することで、Shell ノード実行中に OSS または NAS ストレージの読み取りおよび書き込みが可能になります。
関連付けられたロールを使用したノードの実行
RAM ロールを関連付けてノードを実行することで、特定の RAM ロールでノードタスクを実行し、詳細な権限制御とセキュリティ管理を実現できます。
付録:スクリプト終了コード
スクリプト終了コードを使用して、スクリプトが正常に実行されたかどうかをさらに判断できます。
-
終了コード 0:成功を示します。
-
終了コード -1:プロセスが終了されたことを示します。
-
終了コード 2:プラットフォームがタスクを自動的に 1 回再実行する必要があることを示します。
-
その他の終了コード:失敗を示します。
以下は、Shell ノードが正常に実行された場合(終了コード 0)のサンプルランタイムログです。
INFO Exit code of the Shell command 0
INFO --- Invocation of Shell command completed ---
INFO Shell run successfully!
シェルの基本的な仕組みにより、Shell ノード内のスクリプト全体の終了コードは、最後に実行されたコマンドの終了コードと等しくなります。
アイコンをクリックし、表示されるナビゲーションページで