DataWorks内的Shell节点可支持对资源的使用、配置参数、运行脚本以及访问OSSUtils等功能,您可参考本文使用Shell节点。
前提条件
RAM账号添加至对应空间(可选)。
进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员。
对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组。
进行Shell节点开发前,需创建对应的Shell节点,详情请参见:创建周期任务。
注意事项
Shell节点支持标准Shell语法,不支持交互性语法。
Serverless资源组上运行Shell节点时,如果您需要访问的目标端有白名单限制,请新增和使用Serverless资源组至目标端应用。
如果您在开发任务时,需要特定的开发环境支持,可使用DataWorks提供的自定义镜像功能,定制化构建任务执行所需的组件镜像。更多信息,请参见镜像管理。
请勿在Shell里启动大量子进程,由于目前Shell节点没有资源限制,该操作可能会影响运行在该调度资源组上的其他任务。
如果在Shell节点中引用了其他脚本,例如在Shell中引用了Python,只有Python脚本运行完成后,Shell脚本才会结束。
步骤一:开发Shell节点
Shell节点可以进行多种Shell脚本编写,以下为Shell节点常用开发方式:
通过Shell节点使用资源
DataWorks支持通过资源管理将需要在Shell节点中使用的资源上传至DataWorks,详情请参见资源管理。
说明资源需要提交后才可被节点引用。若生产任务需使用该资源,还需将该资源发布至生产环境。
打开已创建的Shell节点进入脚本编辑页面。
单击左侧导航栏中的
,进入资源管理菜单,然后找到需要引用的资源。悬浮选中资源后,右键选择引用资源,即可在Shell脚本中引用该资源。
引用成功的资源将自动添加一条
##@resource_reference{"资源名"}
的注释。引用成功的资源可通过资源名使用该资源。
通过Shell节点使用调度参数
通用Shell节点中的变量不允许自定义命名,只能以$1、$2、$3...命名(参数序号由小到大,依次递增)。
参数$1赋值当前时间:$[yyyymmdd]。
参数$2 手动赋值为固定值:
Hello DataWorks
。参数$3通过
按钮与上游节点输出参数进行绑定,绑定后即可在该节点类获取到该参数的信息。
通过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节点脚本开发后,需对Shell节点进行调度配置,以实现Shell任务的周期调度,详情请参见调度配置。
步骤二:节点发布与运维
附录:如何判断Shell自定义脚本任务是否执行成功
脚本运行成功或者失败是根据如下进程退出码来进行判断的:
退出码0:表示成功。
退出码-1:表示进程被终止。
退出码2:需要平台自动重跑一次任务。
其它退出码:表示失败。
相关文档
了解如何在Shell节点使用Python 2或Python 3命令运行Python脚本:详情请参见Shell类型节点运行Python脚本。
了解如何在Shell节点使用OSSUtils工具:详情请参见Shell类型节点使用ossutil工具。