本文介绍如何在DLA中实现跨云账号快速分析OSS数据,即通过阿里云账号A查询分析阿里云账号B中的OSS数据。
前提条件
- 通过阿里云B账号开通OSS服务,并上传测试数据,详情请参见开通OSS服务。
本示例在OSS Bucket的
customer
目录中上传测试数据customer.tbl。 - 通过阿里云账号A完成开通DLA服务等准备工作。
步骤一:新建RAM角色
- 使用阿里云账号B登录RAM控制台。
- 在左侧导航栏,单击 。
- 单击创建角色。
- 可信实体类型选择阿里云服务,单击下一步。
- 填写角色名称和备注,受信服务选择物联网。
- 单击完成。
步骤二:修改RAM角色的信任策略
- 使用阿里云账号B登录RAM控制台。
- 在左侧导航栏,单击 。
- 找到创建的RAM角色名称,单击角色名。
- 单击信任策略管理页签,然后单击修改信任策略,将
"iot.aliyuncs.com"
替换为<阿里云账号A的账号ID>@openanalytics.aliyuncs.com
,例如111111111@openanalytics.aliyuncs.com
,其中111111111
为阿里云账号A的账号ID。 - 单击确定,手动复制角色基本信息中的ARN信息,后续DLA中创建Schema时需使用ARN信息。
步骤三:为RAM角色添加OSS权限
- 使用阿里云账号B登录RAM控制台。
- 在左侧导航栏,单击 。
- 找到创建的RAM角色名称,单击角色名。
- 单击添加权限,如果您只需在DLA中只读访问OSS数据,则添加
AliyunOSSReadOnlyAccess
策略即可;如果您需要在DLA中执行INSERT OVERWRITE
等数据更新操作,则添加AliyunOSSFullAccess
策略。 - 单击确定。
经过上述操作,阿里云账号A已经具备在DLA中创建OSS(阿里云账号B所有)Schema和表的权限。
步骤四:创建OSS Schema
- 使用阿里云账号A登录DLA控制台。
- 单击左侧导航栏的 。
- 单击登录到DMS,输入DLA数据库账号和密码登录DMS,通过以下SQL创建OSS Schema。
CREATE SCHEMA test_schema1 with DBPROPERTIES( catalog='oss', location = 'oss://your-oss-bucket-name/', cross_account_accessing_arn= 'acs:ram::14069264740****:role/for-dla-cross-account' );
说明 您也可以通过MySQL命令行工具、客户端或者程序代码连接DLA,然后创建Schema。 - 在test_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/customer'
外表创建成功后,您可以在SQL执行中使用下面的示例语句查询表数据,实现跨云账号访问OSS数据。SELECT * FROM test_schema1.customer;