本文介绍如何在DLA中实现跨云账号快速分析OSS数据,即通过阿里云账号A查询分析阿里云账号B中的OSS数据。

前提条件

  • 通过阿里云B账号开通OSS服务,并上传测试数据,详情请参见开通OSS服务

    本示例在OSS Bucket的TPC-H/customer目录中上传测试数据customer.tbl

  • 通过阿里云账号A完成开通DLA服务等准备工作。

步骤一:新建RAM角色

  1. 使用阿里云账号B登录RAM控制台
  2. 在左侧导航栏,单击RAM角色管理,然后单击创建RAM角色
  3. 可信实体类型选择阿里云服务,单击下一步
  4. 自定义角色名称备注,授信服务选择物联网新建RAM角色
  5. 单击完成

步骤二:修改RAM角色的信任策略

  1. 使用阿里云账号B登录RAM控制台
  2. 在左侧导航栏,单击RAM角色管理
  3. 找到创建的RAM角色名称,单击角色名。新建RAM角色
  4. 单击信任策略管理页签,然后单击修改信任策略,将"iot.aliyuncs.com"替换为<阿里云账号A的账号ID>@openanalytics.aliyuncs.com,例如111111111@openanalytics.aliyuncs.com,其中111111111为阿里云账号A的账号ID。修改信任策略
  5. 单击确定,手动复制角色基本信息中的ARN信息,后续DLA中创建Schema时需使用ARN信息。ARN信息

步骤三:为RAM角色添加OSS权限

  1. 使用阿里云账号B登录RAM控制台
  2. 在左侧导航栏,单击RAM角色管理
  3. 找到创建的RAM角色名称,单击角色名。
  4. 单击添加权限,如果您只需在DLA中只读访问OSS数据,则添加AliyunOSSReadOnlyAccess策略即可;如果您需要在DLA中执行NSERT OVERWRITE等数据更新操作,则添加AliyunOSSFullAccess策略,然后单击确定

经过上述操作,阿里云账号A已经具备在DLA中创建OSS(阿里云账号B所有)Schema和表的权限。

步骤四:创建OSS Schema

  1. 使用阿里云账号A登录DLA控制台
  2. 单击左侧导航栏的Serverless Presto > SQL访问点,然后单击登录DMS,输入DLA数据库账号和密码登录DMS,通过以下SQL创建OSS Schema。

    您也可以通过MySQL命令行工具、客户端或者程序代码连接DLA,然后创建Schema。

    ​CREATE SCHEMA tpch_schema1 with DBPROPERTIES(
    catalog='oss',
    location = 'oss://your-oss-bucket-name/TPC-H/',
    cross_account_accessing_arn= 'acs:ram::14069264740****:role/for-dla-cross-account'  
    );​
  3. 在tpch_schema1中创建CUSTOMER表对应的外表。
    ​ CREATE EXTERNAL TABLE customer (
         `c_custkey` int,
         `c_name` string,
         `c_address` string,
         `c_nationkey` int,
         `c_phone` string,
         `c_acctbal` double,
         `c_mktsegment` string,
         `c_comment` string
     )
     ROW FORMAT DELIMITED
         FIELDS TERMINATED BY '|'
     STORED AS `TEXTFILE`
     LOCATION 'oss://your-oss-bucket-name/TPC-H/customer'​

    外表创建成功后,您就可以查询表数据,实现跨云账号访问OSS数据。

    SQL执行