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

DataWorks:Shellノードの作成

最終更新日:Jul 10, 2025

Shellノードは、標準のシェル構文をサポートしますが、インタラクティブな構文はサポートしません。

制限事項

  • Shellノードは、標準のシェル構文をサポートしますが、インタラクティブな構文はサポートしません。

  • Shellノードのタスクは、スケジューリングのためにサーバーレスリソースグループまたは旧バージョンの専用リソースグループで実行できます。タスクはサーバーレスリソースグループで実行することをお勧めします。 サーバーレスリソースグループの購入方法の詳細については、「サーバーレスリソースグループの作成と使用」をご参照ください。

    説明

    サーバーレスリソースグループでタスクを実行する場合、単一のタスクに最大 64 CU を構成できます。 ただし、タスクの起動に影響を与える可能性のあるリソース不足を回避するために、設定を 16 CU 以内に維持することをお勧めします。

  • サーバーレスリソースグループで実行されるShellノードは、ホワイトリストが構成されているデータソースにアクセスする必要がある場合があります。 この場合、必要なエラスティックIPアドレス(EIP)またはCIDRブロックをデータソースのホワイトリストに追加する必要があります。

  • Shellノードで多数のサブプロセスを開始しないでください。 スケジューリングのために専用リソースグループで実行されるShellノードで多数のサブプロセスを開始すると、DataWorksはShellノードの実行に対するリソース使用量に制限を課していないため、リソースグループで実行される他のノードが影響を受ける可能性があります。

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

説明

特定の開発環境を使用してタスクを開発する場合は、DataWorksコンソールでカスタムイメージを作成できます。 詳細については、「イメージの管理」をご参照ください。

前提条件

ワークフローが作成されます。 DataStudioでは、ワークフローに基づいてさまざまなタイプのコンピューティングエンジンで開発操作が実行されます。 したがって、ノードを作成する前に、ワークフローを作成する必要があります。 詳細については、「ワークフローの作成」をご参照ください。

共通のShellノードの作成

  1. DataStudioページに移動します。

    DataWorksコンソールにログオンします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、[データ開発とO&M] > [データ開発] を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。

  2. 新建 アイコンにポインターを移動し、[ノードの作成] > [一般] > [Shell] を選択します。 [ノードの作成] ダイアログボックスで、名前とパスパラメーターを構成します。

  3. [確認] をクリックして、ノードを作成します。

Shellノードでリソースを使用できるようにする

ノードがDataWorksのリソースを使用できるようにするには、リソースをDataWorksにアップロードし、ノードの実行時環境でリソースを参照する必要があります。 このセクションでは、手順について説明します。

リソースのアップロード

DataWorksでは、リソースを作成したり、既存のリソースをアップロードしたりできます。 各タイプのリソースのGUIに基づいてメソッドを選択できます。

DataWorksコンソールでMaxComputeおよびEMRリソースを作成できます。 詳細については、「MaxComputeリソースの作成と使用」および「EMRリソースの作成と使用」をご参照ください。

説明

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

ノード内のリソースの参照

ノードでリソースを使用できるようにするには、ノード内のリソースを参照する必要があります。 リソースが参照されると、@resource_reference{"リソース名"} コメントがノードコードの上部に表示されます。

手順:

  1. 作成したShellノードを開き、ノード編集ページに移動します。

  2. DataStudioページの [スケジュールされたワークフロー] ペインで、アップロードしたリソースを見つけます。

  3. リソースを右クリックし、[リソースパスの挿入] を選択して、現在のノード内のリソースを参照します。

    ノード編集ページで、リソースを実行するコードを記述できます。

使用资源

Shellノードで使用されるスケジューリングパラメーター

共通のShellノードの変数名をカスタマイズすることはできません。 変数は、$ 1、$ 2、$ 3などの序数に基づいて名前を付ける必要があります。 パラメーターの数が 10 に達するか、10 を超える場合は、${Number}を使用して超過変数を宣言します。 たとえば、${10}を使用して10番目の変数を宣言します。 スケジューリングパラメーターの構成と使用方法の詳細については、「スケジューリングパラメーターの構成と使用」をご参照ください。 スケジューリングパラメーターに値を割り当てる方法の詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。

配置参数前の図では、[パラメーター] セクションのカスタム変数 $ 1、$ 2、および $ 3 にカスタムパラメーターが割り当てられ、コードエディターでカスタム変数が参照されます。 例:

  • $1: $bizdateを$1として指定します。 この変数は、データタイムスタンプを取得するために使用されます。 $bizdateは組み込みパラメーターです。

  • $2: ${yyyymmdd}を$2として指定します。 この変数は、データタイムスタンプを取得するために使用されます。

  • $3: $[yyyymmdd]を$3として指定します。 この変数は、データタイムスタンプを取得するために使用されます。

説明

共通のShellノードの場合、式を使用してのみカスタムパラメーターをカスタム変数に割り当てることができます。 パラメーターはスペースで区切る必要があり、パラメーター値はパラメーターが定義されている順序と一致する必要があります。 たとえば、[パラメーター] セクションに入力した最初のパラメーター $bizdate は、最初の変数 $ 1 に割り当てられます。

カスタムShellスクリプトが正常に実行されたかどうかを確認する方法

カスタムShellスクリプトの終了コードによって、スクリプトが正常に実行されたかどうかが決まります。 終了コード:

  • 0: カスタムShellスクリプトが正常に実行されたことを示します。

  • -1: カスタムShellスクリプトが終了したことを示します。

  • 2: カスタムShellスクリプトを自動的に再実行する必要があることを示します。

  • その他の終了コード: カスタムShellスクリプトが実行に失敗したことを示します。

Shellスクリプトの場合、最初のコマンドが無効なコマンドであると、エラーが返されます。 無効なコマンドの後に有効なコマンドが実行されると、Shellスクリプトを正常に実行できます。 例:

#!  /bin/bash
curl http://xxxxx/asdasd
echo "nihao"

スクリプトが予期どおりに終了したため、Shellスクリプトは正常に実行されます。

前のスクリプトを次のスクリプトに変更すると、別の結果が返されます。 例:

#!  /bin/bash
curl http://xxxxx/asdasd
if [[ $?  == 0 ]];then  
    echo "curl success"
else  
    echo "failed"  
    exit 1
fi
echo "nihao"

この場合、スクリプトは実行に失敗します。

Shellスクリプトを使用してossutilにアクセスする

ossutilをインストールする場合、次のデフォルトのインストールパスを使用できます。

  • /home/admin/usertools/tools/ossutil64

  • ossutilの一般的なコマンドについては、「一般的なコマンド」をご参照ください。

ビジネス要件に基づいて、構成ファイルで Object Storage Service (OSS) へのアクセスに使用するユーザー名とパスワードを構成できます。 その後、O&Mアシスタントを使用して、構成ファイルを /home/admin/usertools/tools/myconfig ディレクトリにアップロードできます。

[Credentials]
        language = CH
        endpoint = oss.aliyuncs.com
        accessKeyID = your_accesskey_id
        accessKeySecret = your_accesskey_secret
        stsToken = your_sts_token
        outputDir = your_output_dir
        ramRoleArn = your_ram_role_arn

コマンド構文:

#!  /bin/bash
/home/admin/usertools/tools/ossutil64 --config-file  /home/admin/usertools/tools/myconfig  cp oss://bucket/object object
if [[ $?  == 0 ]];then
    echo "access oss success"
else
    echo "failed"
    exit 1
fi
echo "finished"

後続の操作

Shellノードを定期的にスケジュールする必要がある場合は、Shellノードのスケジューリングプロパティを定義し、ノードを本番環境にデプロイする必要があります。 ノードのスケジューリングプロパティの構成方法については、「手順 6: バッチ同期タスクのスケジューリングプロパティを構成する」をご参照ください。 ノードを本番環境にデプロイする方法については、「ノードのデプロイ」をご参照ください。

関連情報

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