Shell类型节点使用ossutil访问OSS

更新时间:
复制为 MD 格式

DataWorks Shell类型节点(包括通用Shell节点和EMR Shell节点)原生集成ossutil,支持文件上传、下载、批量操作及Bucket管理等任务。本文将详细介绍如何在ShellEMR 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 是否存在(示例输出见下图)。

image

以下以Shell节点为例说明两种配置方法。

命令行参数方式访问OSS

  1. 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"
    说明

    您需将代码中的OSSEndPointAccessKeyIDAccessKeySecret信息替换成实际值。参数详情请参见配置ossutil

    重要

    通过命令行参数传入访问密钥,存在密钥泄露的风险,请谨慎使用。

  2. 结果验证。

    点击image,选择Serverless资源组,执行通用Shell节点任务。结果如下:

    image

配置文件方式访问OSS

  1. 创建ossutil配置文件,并上传至OSS。

    1. 创建配置文件。

      在本地创建myconfig.txt文件,文件内容示例如下:

      [Credentials]
      language = CH
      endpoint = <Endpoint> #如oss-cn-shanghai.aliyuncs.com
      accessKeyID = <AccessKeyID>
      accessKeySecret = <AccessKeySecret>
      说明

      您需将代码中的 EndpointAccessKeyID 和 AccessKeySecret 替换为实际的阿里云OSS Endpoint和具备相应权限的RAM用户密钥。注意:参数值无需加引号;参数详情请参见配置ossutil

    2. 上传配置文件。

      myconfig.txt文件上传到OSS。详情请参见简单上传

    3. 查看下载链接。

      单击上传到OSS的文档对应的操作项的详情,关闭使用HTTPS后单击复制文件URL

      image

      image

  2. 下载Config文件至Serverless资源组。

    DataWorks镜像管理页面,创建自定义镜像,下载Config文件至Serverless资源组。

    1. 创建镜像。

      登录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

      单击下方确认按钮完成镜像创建。

    2. 测试发布。

      单击您所创建的镜像右侧操作列中的发布,进入发布镜像页面,选择测试资源组,单击测试结果右侧的测试。等待测试成功,单击下方发布按钮进行发布。

    3. 针对所发布的自定义镜像,在操作列单击 更多修改归属工作空间。将该镜像绑定至目标工作空间。

      image

      image

  3. 按照命令配置文件的方式使用ossutil命令行工具。

    1. 新建通用Shell节点。

      1. 进入数据开发页面。

        登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与运维 > 数据开发,在下拉框中选择目标工作空间后单击进入数据开发

      2. 新建通用Shell节点。

        在数据开发页面右键单击目标业务流程,选择新建节点,在通用目录下选择Shell节点进行创建。

    2. Shell节点中,编辑节点内容,以下示例代码旨在通过ossutil尝试连接myconfig.txt中所指定的 OSS Endpoint,并列出myconfig.txt中所指定账号有权限访问的所有 Bucket。

      /home/admin/usertools/tools/ossutil64 -c /home/admin/usertools/tools/myconfig.txt ls -s
    3. 单击image,选择您在测试发布镜像过程中测试成功的Serverless资源组,并指定您已创建并发布的自定义镜像,执行通用Shell节点任务。运行成功后,示例结果如下:

      image

    4. 在节点的调度配置中,于资源属性区域选择目标资源组,并指定您已创建并发布的自定义镜像,保存调度配置后,将该Shell节点提交至开发环境,并发布至生产环境。

相关文档

在新版数据开发中,针对Shell节点,支持通过绑定RAM角色,利用STS动态获取临时安全凭证,安全调用ossutil访问OSS。详情请参见相关文档:配置节点关联角色