すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Shell ノード

最終更新日:Jun 24, 2026

DataWorks の Shell ノードは、データエンジニア向けです。非対話型の標準的な Shell スクリプトを実行し、Object Storage Service (OSS) ファイルの処理やツールの呼び出しなどの自動化タスクに最適です。このノードは ossutil を標準で統合しており、設定ファイルやコマンドラインパラメーターを通じて OSS へ安全にアクセスできます。また、本番レベルのスケジューリングと O&M 要件を満たすために、スケジューリングパラメーターの挿入、リソース参照、およびカスタムイメージを使用したランタイム環境の拡張もサポートしています。

権限

ノード開発に使用する RAM アカウントを対象のワークスペースに追加し、開発者またはワークスペース管理者ロールを付与してください。詳細については、「ワークスペースへのメンバーの追加」をご参照ください。

データ処理ノードのタイプ

DataWorks は、さまざまなタイプのデータ処理ノードを提供します。ビジネスシナリオに基づいてノードを選択し、大規模なデータクレンジングタスクを実行できます。選択肢は Shell スクリプトに限定されません。

  • バッチ同期ノード:大規模なデータ移行と変換に適しており、異なるデータソース間のバッチデータ同期をサポートします。

  • MaxCompute SQL ノード:大規模なデータセットに対する SQL ベースの ETL に適しており、分散コンピューティングをサポートします。

  • Shell ノード (このトピック):外部ツールの呼び出しやカスタムスクリプトのロジックの実行に適しています。

  • 割り当てノードfor-each ノードの組み合わせ:ループでのバッチ処理に適しています。データセットを反復処理し、各項目に対して操作を実行できます。

使用方法

  1. 構文の制限

    • 標準的な Shell 構文がサポートされています。対話型構文はサポートされていません。

  2. ランタイム環境とネットワークアクセス

    • Shell ノードは、サーバーレスリソースグループ (推奨) または専用スケジューリングリソースグループ (旧バージョン) で実行できます。サーバーレスリソースグループを購入して使用する方法については、「サーバーレスリソースグループの使用」をご参照ください。

    • Shell ノードがサーバーレスリソースグループで実行される場合、宛先に許可リストが設定されていれば、その許可リストにサーバーレスリソースグループの IP アドレスまたは CIDR ブロックを追加する必要があります。

    • サーバーレスリソースグループを使用する場合、1 つのタスクで最大 64CU の構成がサポートされます。タスクの起動に影響するリソース不足を防ぐために、16CU を超えないことを推奨します。

  3. 開発環境の拡張

    • タスクに特定の開発環境が必要な場合は、DataWorks のカスタムイメージ機能を使用して、ニーズに合った環境を構築できます。詳細については、「カスタムイメージ」をご参照ください。

  4. リソースと複数スクリプトの呼び出し

    • Shell ノードで多数の子プロセスを起動することは避けてください。Shell ノードにはリソース制限がないため、多数の子プロセスが同じ専用スケジューリングリソースグループで実行されている他のタスクに影響を与える可能性があります。

    • タスクコードのサイズは 128 KB を超えることはできません。

クイックスタート

このセクションでは、"Hello DataWorks!" を出力する例をもとに、Shell ノードの作成、デバッグ、設定、デプロイのプロセスを説明します。

ノード開発

  1. DataWorks コンソールにログインします。対象のリージョンに切り替えた後、左側のナビゲーションペインでデータ開発と О&М > データ開発をクリックし、ドロップダウンリストから対象のワークスペースを選択して、Go to DataStudioをクリックします。

  2. 新建 アイコンにポインターを合わせ、Create Node > General > Shell を選択します。Create Node ダイアログボックスで、ノードの名前とパスを入力します。

  3. スクリプトエディターに、標準的な Shell コードを入力します。対話型構文はサポートされていません。

    echo "Hello DataWorks!"
  4. コードを開発した後、image アイコンをクリックし、ターゲットリソースグループとイメージを選択して、Shell ノードタスクを実行します。

  5. スクリプトが正常にデバッグされた後、右側の Scheduling Settings をクリックして、スケジューリング時間やリソースプロパティなど、本番レベルのスケジューリングポリシーを設定します。これにより、ノードが自動的かつ定期的に実行されるようになります。ノードのスケジューリングプロパティの設定方法の詳細については、「スケジューリングプロパティの設定」をご参照ください。

デプロイとメンテナンス

  1. タスクのスケジューリングプロパティを設定した後、ノードを開発環境にコミットし、本番環境にデプロイして定期実行されるようにスケジューリングできます。

  2. ノードがデプロイされると、スケジュールに従って定期的に実行されます。左上隅にあるimageアイコンをクリックし、ナビゲーションポップアップウィンドウで[すべての製品] > [データ開発 & O&M] > Operation Centerを選択して O&M を開きます。左側のナビゲーションペインでTask O&M > Auto Triggered Task O&M > Periodic tasksを選択すると、デプロイされた定期タスクが表示されます。機能の詳細については、「O&M の使用開始」をご参照ください。

高度な使用方法

リソース参照

  1. DataWorks では、リソース管理を通じて Shell ノード用のリソースをアップロードできます。詳細については、「リソースの管理」をご参照ください。

    説明

    ノードがリソースを参照する前に、リソースをコミットする必要があります。本番タスクでリソースを使用する必要がある場合は、リソースを本番環境にデプロイする必要もあります。詳細については、「タスクのデプロイ」をご参照ください。

  2. DataStudio の左側のディレクトリツリーで、アップロードしたリソースを見つけます。

  3. リソースを右クリックし、Insert Resource Path を選択して、現在のノードにリソースパスを挿入します。その後、ノード編集ページでコードを記述してリソースを実行できます。

    説明

    リソースの参照に成功すると、システムはスクリプトの先頭に ##@resource_reference{resource_name} のような宣言コメントを自動的に挿入します。

    このコメントは、DataWorks がリソースの依存関係を識別し、タスクの実行時にリソースを自動的に実行環境にマウントするために必要です。このコメントを変更または削除しないでください。

スケジューリングパラメーター

スケジューリングパラメーターは位置パラメーターとして注入され、カスタム変数名はサポートされていません。DataWorks は、ノードの Scheduling Settings からシェルスクリプトに、$1$2$3 などの順次的な位置パラメーターとして値を渡します。パラメーターの数が 9 を超える場合は、正しく解釈されるように、${10}${11} のように中括弧を使用する必要があります。複数のパラメーター値は スペース で区切ります。順序は、スクリプト内のパラメーターの位置と一致させる必要があります。

この例では、次のようになります。

  • 組み込みパラメーター $1 には、ビジネス日付として $bizdate が割り当てられます。

  • カスタムパラメーター $2 には、ビジネス日付として ${yyyymmdd} が割り当てられます。

  • カスタムパラメーター $3 には、ビジネス日付として $[yyyymmdd] が割り当てられます。

説明
  • パラメーター値にスペースが含まれている場合は、引用符で囲んでください。引用符内のすべてのコンテンツは、単一のパラメーターとして扱われます。

  • スケジューリングパラメーターの設定と使用方法の詳細については、「スケジューリングパラメーターの設定と使用」をご参照ください。

ossutil を使用した OSS へのアクセス

DataWorks シェルノードは、Alibaba Cloud OSS コマンドラインツール ossutil を標準でサポートしています。このツールは、バケット管理、ファイルのアップロードとダウンロード、一括操作などのタスクをサポートしています。設定ファイルまたはコマンドラインパラメーターでアクセス資格情報を設定することで、ossutil を使用して OSS にアクセスできます。

付録:スクリプト終了コード

スクリプト終了コードを使用して、スクリプトが正常に実行されたかどうかをさらに判断できます。

  • 終了コード 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 ノード内のスクリプト全体の終了コードは、最後に実行されたコマンドの終了コードと等しくなります。

関連ドキュメント

Python 2 または Python 3 コマンドを使い、Shell ノードで Python スクリプトを実行する方法については、「Shell ノードでの Python スクリプトの実行」をご参照ください。