DataWorks Shell节点面向数据开发工程师,支持标准Shell脚本运行,适用于文件操作、OSS/NAS数据交互等场景。用户可配置调度参数、引用资源、通过预装ossutil工具安全访问OSS,以及通过关联RAM角色运行节点。
权限说明
进行节点开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员角色权限。详情请参见:为工作空间添加空间成员。
使用说明
语法限制
支持标准Shell语法,不支持交互性语法。
运行环境与网络访问
Serverless资源组上运行Shell节点时,如果您需要访问的目标端有白名单限制,请添加Serverless资源组对应IP至目标端应用。
使用Serverless资源组,单任务支持最大配置
64CU,建议不超过16CU,以避免CU过大导致资源不足,影响任务启动。
扩展开发环境
如任务需要特定的开发环境支持,可使用DataWorks提供的自定义镜像功能,定制化构建任务执行所需的镜像。更多信息,请参见自定义镜像。
资源与多脚本调用
避免在Shell节点中启动大量子进程,由于目前Shell节点没有资源限制,大量子进程可能会影响运行在该调度资源组上的其他任务。
若Shell节点调用了其他脚本(例如Python),Shell节点会等待被调用脚本执行完成后才结束。
快速入门
下面将以一个输出"Hello DataWorks!"示例,带您完成Shell节点的创建、调试、配置与发布全流程。
节点开发
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的,在下拉框中选择对应工作空间后单击进入数据开发。
在数据开发(Data Studio)页面,新建Shell节点。
在脚本编辑区内输入标准shell代码(不支持交互式语法):
echo "Hello DataWorks!"完成代码开发后,在右侧单击运行配置,选择目标调试资源组及其他必要执行参数,随后单击
运行按钮,触发本地化调试执行。脚本通过调试验证后,需在右侧单击调度配置,完成调度周期、依赖关系、参数设置等生产级调度策略配置,以支撑节点按计划周期性自动执行。
完成任务调度配置后,需对节点进行保存后,才可进行下一步操作。
节点发布与运维
高级用法
引用资源
DataWorks支持通过资源管理将需要在Shell节点中使用的资源上传至DataWorks,详情请参见资源管理。
说明资源需要发布后才可被节点引用。若生产任务需使用该资源,还需将该资源发布至生产环境。
打开已创建的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节点原生支持阿里云OSS命令行工具 ossutil,支持Bucket 管理、文件上传/下载、批量操作等任务。您可通过配置文件方式或命令行参数方式配置访问凭证使用ossutil访问OSS。
通过命令行参数方式使用ossutil访问OSS,详情可参见:命令行参数方式访问OSS。
通过配置文件方式使用ossutil访问OSS,详情可参见:配置文件方式访问OSS。
特别地,在新版数据开发中,针对Shell节点,除了上述两种方式,其支持通过绑定RAM角色,利用阿里云 STS(Security Token Service)动态获取该角色的临时安全凭证,并使用ossutil访问OSS。此方式无需在代码中明文配置长期有效的 AccessKey,即可安全地获得访问目标云资源的权限。详情请参见相关文档:配置节点关联角色。
ossutil 已预装在DataWorks环境中,无需手动安装。默认路径为 /home/admin/usertools/tools/ossutil64。
使用数据集访问OSS/NAS
DataWorks支持创建OSS或NAS类型的数据集,然后在Shell节点开发中使用数据集,实现Shell节点运行过程中读写OSS或NAS存储中的数据。
通过关联角色运行节点
支持配置节点关联角色,使用特定RAM角色运行节点任务,实现权限的细粒度控制和安全管控。
附录:脚本退出码说明
根据脚本退出码可进一步判断脚本是否运行成功。
退出码0:表示成功。
退出码-1:表示进程被终止。
退出码2:需要平台自动重跑一次任务。
其它退出码:表示失败。
下图为Shell节点执行成功(退出码为 0)时的标准运行日志示例。

基于Shell底层机制,Shell节点中整个脚本的退出码 = 最后一条被执行命令的退出码。
图标,在弹出导航页中依次选择