Topik ini menjelaskan cara membangun koneksi mulus antara Tablestore dan MaxCompute di seluruh akun Alibaba Cloud.
Prasyarat
Siapkan dua akun Alibaba Cloud: Akun A untuk Tablestore dan Akun B untuk MaxCompute. Gunakan Akun A untuk memberikan izin kepada Akun B agar Akun B dapat mengakses semua data tabel milik Akun A di Tablestore. Tabel berikut menjelaskan informasi dasar tentang akun tersebut.
Informasi dalam tabel hanya untuk demonstrasi. Ganti informasi tersebut dengan informasi sebenarnya saat melakukan operasi.
Item | Tablestore | MaxCompute |
Nama akun Alibaba Cloud | Akun A | Akun B |
UID | 1234567890**** | 5678901234**** |
Sebelum menggunakan MaxCompute untuk mengakses Tablestore, pastikan langkah-langkah berikut telah dilakukan:
Aktifkan MaxCompute untuk Akun B di halaman Halaman Detail Produk MaxCompute, lalu buat ruang kerja. Untuk detail lebih lanjut, lihat Buat ruang kerja.
Peroleh pasangan AccessKey dari Akun A dan Akun B. Untuk informasi lebih lanjut, lihat Memperoleh Pasangan AccessKey.
Gunakan Akun A untuk membuat Peran RAM untuk Akun B dan edit kebijakan kepercayaan dari peran RAM. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk akun Alibaba Cloud tepercaya dan Edit kebijakan kepercayaan dari peran RAM.
CatatanDalam kebijakan tersebut, 5678901234**** adalah UID dari Akun B.
Berikut adalah contoh kebijakan kepercayaan dengan asumsi bahwa nama peran RAM yang dibuat adalah AliyunODPSRoleForOtherUser. Contoh ini menunjukkan bahwa peran RAM dapat diasumsikan oleh MaxCompute di bawah Akun B.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "5678901234****@odps.aliyuncs.com" ] } } ], "Version": "1" }Catat ARN dari peran AliyunODPSRoleForOtherUser milik Akun A. Contoh: acs:ram::1234567890****:role/aliyunodpsroleforotheruser. ARN digunakan untuk membuat tabel eksternal.

Buat kebijakan dan lampirkan kebijakan tersebut ke AliyunODPSRoleForOtherUser, yaitu peran RAM dari Akun A. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom dan Berikan izin kepada peran RAM.
Berikut adalah contoh kebijakan kustom di mana peran RAM memiliki izin untuk membaca dan menulis sumber daya berikut milik Akun A di wilayah China (Hangzhou): instance bernama cap1 dan semua tabel yang termasuk dalam 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": {} } ] }Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.
Di konsol Tablestore, buat instance dan tabel data. Untuk informasi lebih lanjut, lihat Buat instance Tablestore dan Buat tabel data.
Pada contoh sebelumnya, instance Tablestore dan tabel data berikut dibuat:
Nama instance: cap1
Nama tabel data: vehicle_track
Informasi kunci utama: vid (integer) dan gt (integer)
Titik akhir:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.comCatatanSaat menggunakan MaxCompute untuk mengakses Tablestore, kami sarankan Anda menggunakan titik akhir privat Tablestore.
Atur Jenis Akses ke Kustom dan pilih VPC, Jaringan Klasik, dan Internet untuk Jenis Jaringan yang Diizinkan serta Gateway Tepercaya (Konsol) untuk Jenis Sumber yang Diizinkan untuk instance.
Gunakan MaxCompute untuk Mengakses Tablestore
Prosedur untuk mengakses Tablestore lintas akun sama dengan prosedur untuk mengakses Tablestore dalam satu akun, kecuali Anda harus menggunakan ARN dari peran untuk membuat tabel eksternal di bawah akun yang berbeda.
Akun B membuat tabel eksternal di MaxCompute dan menentukan ARN peran yang dibuat di Persiapan untuk mengakses 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'