本文主要为您介绍不同账号之间如何实现表格存储和 MaxCompute 之间的无缝连接。
准备工作
跨云账号需要两个主账号,账号 A 将访问权限授予账号 B,则运行 MaxCompute 时,账号 B 可以访问账号 A 下的表数据。基本信息如下:
说明 以下信息仅为示例,在操作时请替换为实际使用的信息。
项目 |
表格存储 |
MaxCompute |
主账号名 |
账号 A |
账号 B |
UserId |
12345 |
56789 |
使用 MaxCompute 跨云账号访问表格存储前,您需要完成以下准备工作:
- 账号 B 开通MaxCompute 服务,并创建工作空间。
- 账号 A 和 B 分别创建 AccessKey。
- 使用账号 A 登录 RAM 控制台,并在RAM角色管理页面,新建RAM角色。在本示例中,假设创建的角色名称为 AliyunODPSRoleForOtherUser。
- 在RAM角色列表中,找到AliyunODPSRoleForOtherUser角色,然后单击RAM角色名称,设置策略内容。 策略内容设置如下:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"1xxxx@odps.aliyuncs.com"
]
}
}
],
"Version": "1"
}
说明 请将上述策略内容中的 1xxxx 替换成您的 UID 即可。
- RAM角色创建后,您可以在基本信息页面查看该角色的ARN。
- 返回 RAM 控制台首页,进入权限策略管理页面,单击新建权限策略。
- 在RAM角色管理页面,找到AliyunODPSRoleForOtherUser角色,然后单击添加权限。
- 在添加权限页面,选择AliyunODPSRolePolicyForOtherUse权限,然后单击确定。
- 在表格存储控制台创建实例和创建数据表。
在本示例中,创建的表格存储实例和数据表信息如下:
- 实例名称:cap1
- 数据表名称:vehicle_track
- 主键信息:vid (integer),gt (integer)
- 访问域名:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
说明 使用 MaxCompute 访问表格存储时,建议使用表格存储的私网地址。
- 设置实例网络类型为允许任意网络访问。
使用 MaxCompute 访问表格存储
跨账号访问的操作与同账号下的访问一样,只是在创建外部表时使用 roleArn。
账号 B 通过 MaxCompute 创建外部表,指定准备工作中创建出来的 roleArn 来访问表格存储。
具体操作步骤请参考同账号授权访问。其中,在步骤 2 创建外部表时,使用如下代码:
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::12345:role/aliyunodpsroleforotheruser'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
USING 'odps-udf-example.jar'