Este tópico descreve como conectar o Tablestore e o MaxCompute em diferentes contas da Alibaba Cloud.
Pré-requisitos
O acesso entre contas exige duas contas da Alibaba Cloud. Neste guia, a Conta A concede permissões de acesso à Conta B, permitindo que a Conta B use o MaxCompute para acessar os dados do Tablestore da Conta A. As informações básicas das contas são:
Substitua esses valores pelas suas informações reais.
|
Item |
Tablestore |
MaxCompute |
|
Nome da conta Alibaba Cloud |
Conta A |
Conta B |
|
UID |
1234567890**** |
5678901234**** |
Antes de usar o MaxCompute para acessar o Tablestore entre contas, conclua as tarefas a seguir:
Na página de detalhes do produto MaxCompute, ative o MaxCompute para a Conta B e crie um workspace. Para mais informações, consulte Criar um workspace.
Obtenha os pares de AccessKey da Conta A e da Conta B. Para mais informações, consulte Obter um par de AccessKey.
-
Na Conta A, crie uma função do Resource Access Management (RAM) para uma conta da Alibaba Cloud confiável e configure a política de confiança correspondente. Para mais informações, consulte Criar uma função RAM para uma conta da Alibaba Cloud e Modificar a política de confiança de uma função RAM.
NotaNa política, 5678901234**** é o UID da Conta B.
Neste exemplo, a função RAM chama-se aliyunodpsroleforotheruser. A política de confiança de exemplo abaixo permite que o serviço MaxCompute na Conta B assuma essa função RAM.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "5678901234****@odps.aliyuncs.com" ] } } ], "Version": "1" } Anote o ARN da função RAM aliyunodpsroleforotheruser da Conta A (por exemplo, acs:ram::1234567890**:role/aliyunodpsroleforotheruser). Esse ARN é necessário para criar a tabela externa. Após criar a função, copie o ARN na seção informações básicas** da página de detalhes da função RAM. O formato do ARN é
acs:ram::UID_da_Conta_A:role/aliyunodpsroleforotheruser.-
Crie uma política de permissão personalizada e anexe-a à função RAM aliyunodpsroleforotheruser na Conta A. Para mais informações, consulte Criar uma política personalizada e Gerenciar permissões de uma função RAM.
A política de permissão de exemplo abaixo concede à função RAM permissões de leitura e gravação na instância do Tablestore chamada cap1 e em todas as tabelas de dados associadas na região China (Hangzhou).
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": [ "acs:ots:cn-hangzhou:1234567890****:instance/cap1", "acs:ots:cn-hangzhou:1234567890****:instance/cap1/table/*" ], "Condition": {} } ] }Para mais informações sobre permissões personalizadas, consulte Política RAM personalizada.
-
No console do Tablestore, crie uma instância e uma tabela de dados. Para mais informações, consulte Criar instância e Criar uma tabela de dados.
Neste exemplo, a instância do Tablestore e a tabela de dados usam a configuração a seguir:
Nome da instância: cap1
Nome da tabela de dados: vehicle_track
Chaves primárias: vid (inteiro), gt (inteiro)
-
Endpoint:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.comNotaUse o endpoint privado da instância do Tablestore para acesso a partir do MaxCompute.
Verifique se o tipo de rede da instância está definido como Any Network.
Usar o MaxCompute para acessar o Tablestore
O procedimento de acesso entre contas assemelha-se ao acesso na mesma conta, mas exige a especificação do ARN da função durante a criação da tabela externa.
A Conta B usa o MaxCompute para criar uma tabela externa e especifica o ARN da função descrito na seção Pré-requisitos para acessar o Tablestore.
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'