DataWorks の Shell ノードを使用すると、データエンジニアは標準の Shell スクリプトを実行できます。ファイル操作や Object Storage Service (OSS) または Network Attached Storage (NAS) との連携などのタスクに最適です。スケジューリングパラメーターの設定、リソースの参照、プリインストール済みの ossutil ツールを使用した OSS への安全なアクセス、関連付けられた RAM ロールでのノードの実行が可能です。
権限
ノード開発に使用する RAM アカウントは、ワークスペースに追加し、`開発者` または `ワークスペース管理者` のロールを割り当てる必要があります。詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
注意事項
構文の制限
標準の Shell 構文がサポートされています。対話型構文はサポートされていません。
実行環境とネットワークアクセス
サーバーレスリソースグループで Shell ノードを実行する場合、ターゲットサービスに IP アドレス許可リストがある場合は、サーバーレスリソースグループの IP アドレスを許可リストに追加する必要があります。
サーバーレスリソースグループを使用する場合、単一のタスクは最大
64CU をサポートします。リソース不足によってタスクの起動が影響を受けないように、16CU を超えないようにすることを推奨します。
カスタム開発環境
タスクに特定の開発環境が必要な場合は、DataWorks のカスタムイメージ機能を使用して、タスク実行用にカスタマイズされたイメージをビルドできます。詳細については、「カスタムイメージ」をご参照ください。
リソースと複数スクリプトの呼び出し
Shell ノード内で多数の子プロセスを起動することは避けてください。Shell ノードにはリソース制限がないため、過剰な数の子プロセスは同じリソースグループ上の他のタスクに影響を与える可能性があります。
Shell ノードが Python スクリプトなどの別のスクリプトを呼び出す場合、Shell ノードは呼び出されたスクリプトが完了するまで待機してから終了します。
クイックスタート
このセクションでは、簡単な「Hello DataWorks!」の例を使用して、Shell ノードの作成、デバッグ、設定、デプロイの全プロセスを説明します。
ノードの開発
DataWorks コンソールにログインします。ターゲットリージョンに切り替えた後、[] アイコンをクリックし、ドロップダウンリストからターゲットワークスペースを選択して、[DataStudio へ] をクリックします。
DataStudio ページで、Shell ノードを作成します。
スクリプトエディターに、標準の Shell コードを入力します。対話型構文はサポートされていません。
echo "Hello DataWorks!"コードを記述した後、右側のパネルで [タスクの実行] をクリックします。デバッグ用のリソースグループを選択し、その他必要な実行パラメーターを指定します。次に、
[実行] ボタンをクリックしてデバッグ実行を開始します。スクリプトがデバッグに合格したら、右側のパネルで [プロパティ] をクリックします。スケジューリング周期、依存関係、パラメーターなど、本番環境のスケジューリング設定を行い、ノードがスケジュールに従って自動的に実行されるようにします。
スケジューリング設定が完了したら、次に進む前にノードを [保存] する必要があります。
ノードのデプロイと管理
スケジューリング設定が完了したら、Shell ノードを本番環境に送信してデプロイできます。デプロイプロセスの詳細については、「ノードとワークフローのデプロイ」をご参照ください。
デプロイ後、タスクはスケジュールどおりに定期的に実行されます。デプロイされたタスクを表示するには、左上隅の
アイコンをクリックします。表示されるナビゲーションウィンドウで、[] に移動してオペレーションセンターを開きます。次に、左側のナビゲーションウィンドウで、[] を選択します。機能の詳細については、「オペレーションセンター入門」をご参照ください。
応用
リソースの参照
DataWorks では、リソース管理機能を使用して Shell ノード用のリソースをアップロードできます。詳細については、「リソース管理」をご参照ください。
説明ノードがリソースを参照する前に、リソースを公開する必要があります。本番タスクがリソースを使用する場合、そのリソースも本番環境にデプロイする必要があります。
既存の Shell ノードを開き、スクリプトエディターを開きます。
左側のナビゲーションウィンドウで、
アイコンをクリックしてリソースメニューを開きます。参照したいリソースを見つけて右クリックし、[リソースの参照] を選択します。これにより、Shell スクリプトにリソースへの参照が追加されます。
説明リソースを参照すると、スクリプトの先頭に
##@resource_reference{resource_name}のような宣言コメントが自動的に挿入されます。この必須の識別子により、DataWorks はリソースの依存関係を認識し、実行時に対応するリソースを自動的に実行環境にマウントします。このコメントは変更または削除しないでください。
スケジューリングパラメーターの使用
スケジューリングパラメーターは、位置パラメーターとして Shell ノードに挿入されます。カスタム変数名はサポートされていません。DataWorks は、[] タブで設定したパラメーター値を、$1、$2、$3 などの位置パラメーターとして Shell スクリプトに順番に渡します。パラメーターが 9 つを超える場合は、正しく解析されるように、${10} や ${11} のように中括弧を使用する必要があります。パラメーター値はスペースで区切る必要があり、その順序はスクリプトで参照される位置と完全に一致する必要があります。

例:
パラメーター $1 には現在の日付が割り当てられます: $[yyyymmdd]。
パラメーター $2 には固定文字列
Hello DataWorksが割り当てられます。
パラメーター値にスペースが含まれる場合は、引用符で囲んでください。引用符内のすべてのコンテンツは、単一のパラメーターとして扱われます。
上流ノードから出力パラメーターを取得するには、[] タブでパラメーターを追加する必要があります。パラメーター値を上流ノードの出力パラメーターに設定します。
ossutil を使用した OSS へのアクセス
DataWorks の Shell ノードは、Alibaba Cloud OSS のコマンドラインツールである ossutil をネイティブにサポートしており、バケット管理、ファイルのアップロードとダウンロード、バッチ操作などのタスクを実行できます。ossutil のアクセス認証情報は、設定ファイルまたはコマンドラインパラメーターを使用して設定し、OSS にアクセスできます。
コマンドラインパラメーターを使用して ossutil で OSS にアクセスする方法については、「コマンドラインパラメーターを使用した OSS へのアクセス」をご参照ください。
設定ファイルを使用して ossutil で OSS にアクセスする方法については、「設定ファイルを使用した OSS へのアクセス」をご参照ください。
DataStudio の新しいバージョンでは、Shell ノードは RAM ロールの関連付けもサポートしています。これにより、ノードは Alibaba Cloud Security Token Service (STS) を使用して、ロールの一時的なセキュリティ認証情報を動的に取得できます。これらの認証情報は ossutil で使用できます。この方法により、ターゲットのクラウドリソースへの安全なアクセスが提供され、スクリプトに長期的な AccessKey をハードコーディングする必要がなくなります。詳細については、「ノードに関連付けられたロールの設定」をご参照ください。
ossutil ツールは DataWorks 環境にプリインストール済みであり、手動でのインストールは不要です。デフォルトのパスは /home/admin/usertools/tools/ossutil64 です。
データセットを使用した OSS または NAS へのアクセス
DataWorks では、OSS または NAS 用のデータセットを作成できます。その後、Shell ノードでこのデータセットを使用して、タスク実行中に OSS または NAS ストレージからの読み取りと書き込みができます。
関連付けられたロールでのノードの実行
特定の RAM ロールを関連付けて、ノードタスクを実行できます。これにより、詳細な権限コントロールとセキュリティの強化が可能になります。
付録:終了コード
スクリプトの終了コードは、実行が成功したかどうかを示します。
終了コード 0:成功を示します。
終了コード -1:プロセスが終了されたことを示します。
終了コード 2:プラットフォームはタスクを自動的に 1 回再実行します。
その他の終了コード:失敗を示します。
次の画像は、正常に実行された (終了コード 0) Shell ノードの標準的な実行ログの例です。

基盤となる Shell の仕組みにより、スクリプトの終了コードは最後に実行されたコマンドによって決まります。
アイコンをクリックします。表示されるナビゲーションウィンドウで、[