DataWorks內的Shell節點可支援對資源的使用、配置參數、運行指令碼以及訪問OSSUtils等功能,您可參考本文使用Shell節點。
前提條件
RAM帳號添加至對應空間(可選)。
進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發或空間管理員(許可權較大,謹慎添加)角色許可權。新增成員並授權,詳情請參見為工作空間增加空間成員。
對應空間已綁定Serverless資源群組。詳情請參見:使用Serverless資源群組。
進行Shell節點開發前,需建立對應的Shell節點,詳情請參見:建立周期任務。
注意事項
Shell節點支援標準Shell文法,不支援互動性文法。
Serverless資源群組上運行Shell節點時,如果您需要訪問的目標端有白名單限制,請新增和使用Serverless資源群組至目標端應用。
說明運行該任務時,若使用Serverless資源群組,單任務支援最大配置
64CU,但建議不超過16CU,以避免CU過大導致資源不足,影響任務啟動。如果您在開發工作單位時,需要特定的開發環境支援,可使用DataWorks提供的自訂鏡像功能,定製化構建任務執行所需的組件鏡像。更多資訊,請參見自訂鏡像。
請勿在Shell裡啟動大量子進程,由於目前Shell節點沒有資源限制,該操作可能會影響運行在該調度資源群組上的其他任務。
如果在Shell節點中引用了其他指令碼,例如在Shell中引用了Python,只有Python指令碼運行完成後,Shell指令碼才會結束。
開發Shell節點
Shell節點開發。
以下僅為簡單樣本,您可以查看更多Shell節點開發樣本。
echo "Hello DataWorks!"完成代碼開發後,在右側單擊調試配置,選擇調試運行所需的資源群組、調度參數等配置後,即可單擊
運行按鈕,對代碼進行測試回合。完成Shell節點指令碼開發與測試後,需對Shell節點進行調度配置,以實現Shell節點的周期運行。
完成任務調度配置後,需對節點進行儲存後,才可進行下一步操作。
節點發布與營運
附錄一:如何判斷Shell自訂指令碼任務是否執行成功
指令碼運行成功或者失敗是根據如下進程退出碼來進行判斷的:
退出碼0:表示成功。
退出碼-1:表示進程被終止。
退出碼2:需要平台自動重跑一次任務。
其它退出碼:表示失敗。
附錄二:Shell節點開發樣本
通過Shell節點使用資源
DataWorks支援通過資源管理將需要在Shell節點中使用的資源上傳至DataWorks,詳情請參見資源管理。
說明資源需要提交後才可被節點引用。若生產任務需使用該資源,還需將該資源發布至生產環境。
開啟已建立的Shell節點進入指令碼編輯頁面。
單擊左側導覽列中的
,進入資源管理菜單,然後找到需要引用的資源。懸浮選中資源後,右鍵選擇引用資源,即可在Shell指令碼中引用該資源。
引用成功的資源將自動添加一條
##@resource_reference{"資源名"}的注釋。引用成功的資源可通過資源名使用該資源。
通過Shell節點使用調度參數
通用Shell節點中的變數不允許自訂命名,只能以$1、$2、$3...命名(參數序號由小到大,依次遞增),在調度參數中配置參數值,多個參數取值使用空格分隔。

例如,本樣本中:
參數$1賦值目前時間:$[yyyymmdd]。
參數$2 手動賦值為固定值:
Hello DataWorks。
如需擷取上遊節點的輸出參數,您需要在中添加參數,設定參數值為上遊節點的輸出參數。
通過Shell節點訪問OSSUtils
OSSUtils使用路徑、全路徑,預設已安裝。
/home/admin/usertools/tools/ossutil64。
OSSUtils常用命令可參考:命令列工具ossutil 1.0。
配置使用者名稱密碼config可自行配置,比如將config基於營運助手上傳的設定檔放到該目錄下:/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節點訪問OSS或NAS上的資料
DataWorks支援建立OSS或NAS類型的資料集,然後在Shell節點開發中使用資料集,實現Shell節點運行過程中讀寫OSS或NAS儲存中的資料。