背景
在使用Data Lake Analytics(
https://et.aliyun.com/bdad/datalake)進行OSS資料分析時,通常雲賬号A是通路自己的OSS bucket資料,如果有通路其他雲賬号(假設雲賬号B)的OSS資料的需求,本文正好幫到您,教您如何通過DLA實作DLA跨雲賬号分析OSS資料。下文都是假設“雲賬号A需要通過DLA通路雲賬号B的OSS資料”。

步驟一:建立用于跨賬号通路的RAM角色
使用雲賬号B登入通路控制(
https://ram.console.aliyun.com),點選RAM角色管理。

然後,在右側頁面點選建立RAM角色。
**

在彈出的建立RAM角色頁面中,選擇阿裡雲服務,選擇受信服務物聯網(這裡隻是以物聯網受信服務為模闆,後面進行修改),在RAM角色名稱中輸入:for-dla-cross-account(名字可以自己定義)。

确定後,顯示RAM角色建立成功。

步驟二:修改RAM角色的信任政策
仍然在RAM中,在RAM角色管理頁面,輸入步驟一中建立好的RAM角色名稱for-dla-cross-account(如果您自己定義了名稱,輸入相應名稱),搜尋到對應角色。

點選for-dla-cross-account(或者您實際的角色名稱),進入後,選擇信任政策管理,點選修改信任政策。

在頁面中,将Service部分的iot.aliyuncs.com替換成<雲賬号A>@openanalytics.aliyuncs.com,例如[email protected],其中111111111為雲賬号A的雲賬号。

點選确認儲存。
在如下頁面右上角,複制ARN的URL:acs:ram::2222222222:role/for-dla-cross-account(以您實際顯示的URL為準,其中2222222222是雲賬号B的雲賬号),後面在DLA中建schema時要用到。
步驟三:為RAM角色添加OSS通路權限
點選權限管理,添權重限。

選擇AliyunOSSFullAccess,如果隻是查詢,也可以選擇AliyunOSSReadOnlyAccess。因為後續可能在DLA中執行INSERT OVERWRITE操作,建議這裡選擇AliyunOSSFullAccess。确定儲存。

顯示授權成功。

步驟四:DLA中建schema和table進行查詢
經過上述三步,雲賬号B中,跨賬号通路的RAM角色和權限已經準備好。雲賬号A可以通過DLA通路雲賬号B的OSS了。
- 建立指向雲賬号B OSS bucket的schema,其中為雲賬号B的OSS bucket,cross_account_accessing_arn指向上述步驟二中的ARN URL。
CREATE DATABASE `schema_of_account_b`
WITH DBPROPERTIES (
catalog = 'oss',
location = 'oss://<account_b_bucket>/',
cross_account_accessing_arn= 'acs:ram::2222222222:role/for-dla-cross-account'
)
COMMENT ''
- 在schema_of_account_b中指向雲賬号B的目标OSS bucket資料進行建表查詢,以下為示例。
CREATE EXTERNAL TABLE `schema_of_account_b`.`nation` (
`n_nationkey` int,
`n_name` string,
`n_regionkey` int,
`n_comment` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS `TEXTFILE`
LOCATION 'oss://<account_b_bucket>/...'
小結:
本文通過4步驟實作了DLA對跨雲賬号的OSS資料通路。
- 建立跨賬号通路的RAM角色
- 修改RAM角色的信任政策
- 為RAM角色添加OSS通路角色
- DLA中建schema和table查詢
Data Lake Analytics首購和流量包優惠
首購使用者1元10TB,流量包階梯折扣優惠:
産品詳情:
https://www.aliyun.com/product/datalakeanalytics雲栖社群:
https://yq.aliyun.com/teams/396知乎社群:
https://zhuanlan.zhihu.com/data-lake-analytics