Shell节点

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节点

  1. Shell节点开发。

    以下仅为简单示例,您可以查看更多Shell节点开发示例

    echo "Hello DataWorks!"
  2. 完成代码开发后,在右侧单击调试配置,选择调试运行所需的资源组、调度参数等配置后,即可单击image运行按钮,对代码进行测试运行。

  3. 完成Shell节点脚本开发与测试后,需对Shell节点进行调度配置,以实现Shell节点的周期运行。

  4. 完成任务调度配置后,需对节点进行保存后,才可进行下一步操作。

节点发布与运维

  1. 完成调度配置后,即可对已完成的Shell节点提交发布至生产环境,详情请参见:节点/工作流发布

  2. 发布完成的任务,将按照您配置的调度进行周期运行,可在运维中心 > 任务运维 > 周期任务运维 > 周期任务中查看已发布的周期任务,并对任务进行运维操作,详情请参见:运维中心入门

附录一:如何判断Shell自定义脚本任务是否执行成功

脚本运行成功或者失败是根据如下进程退出码来进行判断的:

  • 退出码0:表示成功。

  • 退出码-1:表示进程被终止。

  • 退出码2:需要平台自动重跑一次任务。

  • 其它退出码:表示失败。

附录二:Shell节点开发示例

通过Shell节点使用资源

  1. DataWorks支持通过资源管理将需要在Shell节点中使用的资源上传至DataWorks,详情请参见资源管理

    说明

    资源需要提交后才可被节点引用。若生产任务需使用该资源,还需将该资源发布至生产环境。

  2. 打开已创建的Shell节点进入脚本编辑页面。

  3. 单击左侧导航栏中的image,进入资源管理菜单,然后找到需要引用的资源。悬浮选中资源后,右键选择引用资源,即可在Shell脚本中引用该资源。image

    • 引用成功的资源将自动添加一条##@resource_reference{"资源名"}的注释。

    • 引用成功的资源可通过资源名使用该资源。

通过Shell节点使用调度参数

通用Shell节点中的变量不允许自定义命名,只能以$1、$2、$3...命名(参数序号由小到大,依次递增),在调度参数中配置参数值,多个参数取值使用空格分隔。

image

例如,本示例中:

  • 参数$1赋值当前时间:$[yyyymmdd]

  • 参数$2 手动赋值为固定值:Hello DataWorks

说明

如需获取上游节点的输出参数,您需要在调度配置 > 节点上下文参数 > 节点输入参数中添加参数,设置参数值为上游节点的输出参数。

通过Shell节点访问OSSUtils

OSSUtils使用路径、全路径,默认已安装。

配置用户名密码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节点访问OSSNAS上的数据

DataWorks支持创建OSSNAS类型的数据集,然后在Shell节点开发中使用数据集,实现Shell节点运行过程中读写OSSNAS存储中的数据。

相关文档

Shell类型节点运行Python脚本

Shell类型节点使用ossutil工具