DataWorks Shell类型节点(包括通用Shell节点和EMR Shell节点)原生集成ossutil,支持文件上传、下载、批量操作及Bucket管理等任务。本文将详细介绍如何在Shell和EMR Shell节点中使用ossutil命令行工具访问OSS。
功能概述
DataWorks Shell类型节点(包括通用Shell节点和EMR Shell节点)原生集成阿里云OSS命令行工具ossutil,支持文件上传、下载、批量操作及Bucket管理等任务。您可通过配置文件方式或命令行参数方式配置访问凭证使用ossutil访问OSS。了解更多关于ossutil配置信息,请参见配置ossutil。
ossutil 已预装在DataWorks环境中,无需手动安装。默认路径为 /home/admin/usertools/tools/ossutil64。您可通过执行命令 ls -l /home/admin/usertools/tools/ 查看该目录下的工具列表,确认 ossutil64 是否存在(示例输出见下图)。

以下以Shell节点为例说明两种配置方法。
命令行参数方式访问OSS
在Shell节点中,编辑节点内容,以下示例代码旨在通过
ossutil尝试连接指定OSS Endpoint,并列出当前账号有权限访问的所有Bucket。/home/admin/usertools/tools/ossutil64 -e <OSSEndPoint> -i <AccessKeyID> -k <AccessKeySecret> ls -s if [[ $? == 0 ]];then echo "access oss success" else echo "failed" exit 1 fi echo "finished"说明您需将代码中的
OSSEndPoint、AccessKeyID、AccessKeySecret信息替换成实际值。参数详情请参见配置ossutil。重要通过命令行参数传入访问密钥,存在密钥泄露的风险,请谨慎使用。
结果验证。
点击
,选择Serverless资源组,执行通用Shell节点任务。结果如下:
配置文件方式访问OSS
创建ossutil配置文件,并上传至OSS。
创建配置文件。
在本地创建
myconfig.txt文件,文件内容示例如下:[Credentials] language = CH endpoint = <Endpoint> #如oss-cn-shanghai.aliyuncs.com accessKeyID = <AccessKeyID> accessKeySecret = <AccessKeySecret>说明您需将代码中的
Endpoint、AccessKeyID和AccessKeySecret替换为实际的阿里云OSS Endpoint和具备相应权限的RAM用户密钥。注意:参数值无需加引号;参数详情请参见配置ossutil。上传配置文件。
将
myconfig.txt文件上传到OSS。详情请参见简单上传。查看下载链接。
单击上传到OSS的文档对应的操作项的详情,关闭使用HTTPS后单击复制文件URL。


下载Config文件至Serverless资源组。
在DataWorks的镜像管理页面,创建自定义镜像,下载Config文件至Serverless资源组。
创建镜像。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的镜像管理,在镜像管理页面找到自定义镜像页签,单击下方创建镜像按钮进行创建。您可在创建镜像页面参考以下参数进行创建镜像:
参数
示例值
镜像名称
自定义命令名称。
镜像描述
自定义命令描述。
引用类型
DataWorks官方镜像(默认)。
镜像命名空间
DataWorks Default(默认)。
镜像仓库
DataWorks Default(默认)。
镜像名称/ID
选择
dataworks_shell_task_pod:xxx:DataWorks Shell节点官方镜像。可见范围
您可根据业务情况进行选择:
仅创建者可见。
全域可见。
使用子产品
数据开发(默认)。
支持任务类型
Shell(默认)。
安装包
安装包下拉框选择
Script方式。并在命令框输入以下命令:# 下载 wget 'http://<yourConfigURL>' -O /home/admin/usertools/tools/<configName>说明http://<yourConfigURL>参数您需替换成从OSS的文档详情中复制的文件URL。<configName>参数可设置为需从OSS中下载的文件名myconfig.txt。
单击下方确认按钮完成镜像创建。
测试发布。
单击您所创建的镜像右侧操作列中的发布,进入发布镜像页面,选择测试资源组,单击测试结果右侧的测试。等待测试成功,单击下方发布按钮进行发布。
针对所发布的自定义镜像,在操作列单击
> 修改归属工作空间。将该镜像绑定至目标工作空间。

按照命令配置文件的方式使用ossutil命令行工具。
新建通用Shell节点。
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的,在下拉框中选择目标工作空间后单击进入数据开发。
新建通用Shell节点。
在数据开发页面右键单击目标业务流程,选择新建节点,在通用目录下选择Shell节点进行创建。
在Shell节点中,编辑节点内容,以下示例代码旨在通过
ossutil尝试连接myconfig.txt中所指定的 OSS Endpoint,并列出myconfig.txt中所指定账号有权限访问的所有 Bucket。/home/admin/usertools/tools/ossutil64 -c /home/admin/usertools/tools/myconfig.txt ls -s单击
,选择您在测试发布镜像过程中测试成功的Serverless资源组,并指定您已创建并发布的自定义镜像,执行通用Shell节点任务。运行成功后,示例结果如下:
在节点的调度配置中,于资源属性区域选择目标资源组,并指定您已创建并发布的自定义镜像,保存调度配置后,将该Shell节点提交至开发环境,并发布至生产环境。
相关文档
在新版数据开发中,针对Shell节点,支持通过绑定RAM角色,利用STS动态获取临时安全凭证,安全调用ossutil访问OSS。详情请参见相关文档:配置节点关联角色。
> 修改归属工作空间。将该镜像绑定至目标工作空间。
