本文介紹不同帳號之間如何?Table Store和MaxCompute之間的無縫串連。
準備工作
跨雲帳號需要兩個阿里雲帳號,帳號A將存取權限授予帳號B,則運行MaxCompute時,帳號B可以訪問帳號A下的表資料。帳號基本資料如下:
以下資訊僅為樣本,在操作時請替換為實際使用的資訊。
專案 | Table Store | MaxCompute |
阿里雲帳號名 | 帳號A | 帳號B |
UID | 1234567890**** | 5678901234**** |
使用MaxCompute跨雲帳號訪問Table Store前,您需要完成以下準備工作:
在MaxCompute產品詳情頁為帳號B開通MaxCompute服務,並建立工作空間。具體操作,請參見建立工作空間。
分別擷取帳號A和帳號B的AccessKey。具體操作,請參見擷取AccessKey。
使用帳號A建立可信實體為阿里雲帳號的RAM角色並設定信任策略內容。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色和修改RAM角色的信任策略。
說明策略內容中的5678901234****為帳號B的UID。
本樣本中假設建立的RAM角色名稱為AliyunODPSRoleForOtherUser,其信任策略內容樣本如下,表示該RAM角色可以被帳號B下的MaxCompute服務扮演。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "5678901234****@odps.aliyuncs.com" ] } } ], "Version": "1" }
記錄帳號A的RAM角色AliyunODPSRoleForOtherUser的ARN(例如acs:ram::1234567890****:role/aliyunodpsroleforotheruser),用於後續建立外表時配置。
建立權限原則並為帳號A的RAM角色AliyunODPSRoleForOtherUser授權。具體操作,請參見建立自訂權限原則和為RAM角色授權。
自訂權限原則樣本如下,表示RAM角色具有讀寫帳號A華東1(杭州)地區中名稱為cap1的執行個體及其下所有表的許可權。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": [ "acs:ots:cn-hangzhou:1234567890****:instance/cap1", "acs:ots:cn-hangzhou:1234567890****:instance/cap1/table/*" ], "Condition": {} } ] }
關於自訂許可權的更多資訊,請參見自訂RAM Policy。
在Table Store控制台建立執行個體和建立資料表。具體操作,請參見建立執行個體和資料表。
在本樣本中,建立的Table Store執行個體和資料表資訊如下:
執行個體名稱:cap1
資料表名稱:vehicle_track
主鍵資訊:vid (integer),gt (integer)
訪問網域名稱:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
說明使用MaxCompute訪問Table Store時,建議使用Table Store的私網地址。
確保執行個體網路類型配置為允許任意網路訪問。
使用MaxCompute訪問Table Store
跨帳號訪問的操作與同帳號下的訪問相同,只是在建立外部表格時要使用角色ARN(即rolearn)。
帳號B通過MaxCompute建立外部表格,指定準備工作中建立的角色ARN來訪問Table Store。
CREATE EXTERNAL TABLE ads_log_ots_pt_external
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
'tablestore.table.name'='vehicle_track',
'odps.properties.rolearn'='acs:ram::1234567890****:role/aliyunodpsroleforotheruser'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
USING 'odps-udf-example.jar'