Anda dapat menggunakan Security Token Service (STS) untuk menerbitkan kredensial akses sementara kepada pengguna lain. Pengguna tersebut dapat menggunakan kredensial ini untuk mengakses resource Tablestore selama periode validitas kredensial tersebut. Kredensial sementara tidak mengekspos kunci jangka panjang Anda. Setelah kedaluwarsa, kredensial tersebut secara otomatis menjadi tidak valid, sehingga akses ke resource Tablestore Anda menjadi lebih fleksibel dan aman.
Informasi latar belakang
RAM role adalah pengguna virtual yang dapat diberikan izin untuk mengakses resource tertentu. Berbeda dengan RAM user, RAM role tidak memiliki kredensial identitas permanen (seperti kata sandi logon atau pasangan AccessKey). Entitas tepercaya (seperti RAM user) harus mengasumsikan peran tersebut. Setelah asumsi berhasil, entitas tepercaya menerima kredensial identitas sementara untuk RAM role—khususnya, token Security Token Service (STS Token)—dan dapat menggunakan token ini untuk mengakses Tablestore sebagai RAM role tersebut.
RAM role untuk akun Alibaba Cloud terutama menangani skenario akses lintas akun dan otorisasi sementara. Topik ini menggunakan contoh di mana RAM user dalam akun yang sama mengasumsikan RAM role untuk menunjukkan cara menggunakan kredensial sementara STS guna mengakses resource Tablestore.
Prosedur
Untuk menggunakan kredensial sementara STS guna mengakses Tablestore, pertama-tama buat RAM role yang akan diasumsikan dan berikan izin untuk mengakses Tablestore. Selanjutnya, buat RAM user untuk mengasumsikan RAM role tersebut dan memperoleh kredensial sementara STS. Terakhir, gunakan kredensial ini untuk mengirim permintaan guna mengakses resource Tablestore.
Langkah 1: Buat RAM role
-
Login ke Konsol Resource Access Management (RAM) menggunakan Akun Alibaba Cloud (akun utama) Anda atau sebagai administrator RAM.
-
Pada panel navigasi di sebelah kiri, pilih untuk membuka halaman Roles.
-
Klik Create Role, konfigurasikan entitas tepercaya, lalu klik OK.
Parameter
Nilai contoh
Trusted entity type
Alibaba Cloud account
Trusted entity name
Current Alibaba Cloud account
-
Pada kotak dialog Create Role, atur Role Name menjadi
RamTablestore, lalu klik OK.
Saat menggunakan STS untuk memperoleh kredensial sementara, Anda harus menentukan ARN dari RAM role tersebut. Anda dapat menemukan dan menyalin ARN pada bagian Basic Information di halaman detail peran.
Format ARN untuk peran ini adalah acs:ram::<ID akun Alibaba Cloud>:role/ramtablestore. Klik tombol Copy di samping ARN untuk memperolehnya.
Langkah 2: Memberikan aksesTablestoreizin
Gunakan kebijakan default
Berikan izin kepada RAM role untuk mengakses Tablestore menggunakan kebijakan AliyunOTSFullAccess.
Kebijakan AliyunOTSFullAccess memberikan akses penuh ke Tablestore. Anda juga dapat memilih salah satu opsi berikut:
-
Untuk izin read-only, berikan kebijakan
AliyunOTSReadOnlyAccesskepada RAM role. -
Untuk izin write-only, berikan kebijakan
AliyunOTSWriteOnlyAccesskepada RAM role.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Pada halaman Roles, temukan RAM role yang dituju.
-
Klik Attach Policy di samping RAM role tersebut, atau klik nama peran untuk membuka halaman detailnya lalu klik Grant Permission pada bagian Permissions.
-
Pada panel Grant Permission, pada bagian Access Policy, cari
AliyunOTSFullAccessdan pilih kebijakan tersebut. -
Klik Confirm New Authorization.
Gunakan kebijakan kustom
-
Buat kebijakan kustom.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Pada halaman Policies, klik Create Policy.
-
Pada halaman Create Policy, klik Script Editor, masukkan skrip ke dalam kotak input, lalu klik OK.
Skrip contoh berikut memberikan izin untuk mengakses satu instans. Sesuaikan skrip kebijakan sesuai kebutuhan—misalnya, untuk mengontrol izin pada tingkat tabel atau API, atau berdasarkan kondisi seperti alamat IP atau waktu akses. Untuk informasi selengkapnya tentang kebijakan RAM, lihat Kebijakan RAM kustom.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": "acs:ots:*:*:instance/your_instance_name*" } ] } -
Pada kotak dialog Create Policy, masukkan nama kebijakan seperti
TestRAMPolicy, lalu klik OK.
-
-
Berikan kebijakan kustom kepada RAM role.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Pada halaman Roles, temukan RAM role yang dituju.
-
Klik Attach Policy di samping RAM role tersebut, atau klik nama peran untuk membuka halaman detailnya lalu klik Grant Permission pada bagian Permissions.
-
Pada panel Grant Permission, pada bagian Access Policy, cari dan pilih kebijakan akses kustom yang telah Anda buat.
-
Klik Confirm.
-
Anda dapat melihat kebijakan yang telah diberikan pada tab Permissions di halaman detail peran.
Langkah 3: Buat RAM user
Buat RAM user untuk mengasumsikan RAM role.
Login ke Konsol RAM menggunakan Akun Alibaba Cloud Anda atau RAM user yang memiliki izin administratif.
Pada panel navigasi di sebelah kiri, pilih Identities > Users.
Pada halaman Users, klik Create User.
Pada halaman Create User, pada bagian User Account Information, konfigurasikan informasi dasar pengguna:
Logon Name: Nama logon dapat berisi huruf, angka, titik (.), tanda hubung (-), dan garis bawah (_). Panjangnya maksimal 64 karakter.
Display Name: Nama tampilan dapat mencapai panjang maksimum 128 karakter.
Tag: Klik ikon
dan masukkan kunci tag serta nilai tag. Menambahkan tag membantu Anda menemukan dan mengelola RAM user tersebut.
CatatanAnda dapat mengklik Add User untuk membuat beberapa RAM user sekaligus.
Pada bagian Access Mode, pilih Programmatic Access, lalu klik OK.
CatatanUntuk mengizinkan RAM user login ke Konsol Manajemen Alibaba Cloud, pilih Console Access.
Pada kolom Actions, klik Copy untuk menyimpan informasi RAM user. Anda juga dapat menyalin ID AccessKey dan rahasia AccessKey secara terpisah.
PentingRahasia AccessKey hanya ditampilkan sekali saat pembuatan dan tidak dapat diambil kembali nanti. Segera simpan di lokasi yang aman.
Langkah 4: Berikan izin kepada RAM user untuk memanggil AssumeRole
Agar dapat mengasumsikan RAM role, RAM user harus memiliki izin untuk memanggil AssumeRole.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Pada halaman Users, temukan RAM user yang dituju.
-
Klik Add Permissions di samping RAM user tersebut, atau klik nama pengguna untuk membuka halaman detailnya lalu klik Grant Permission pada tab Permission Management.
-
Pada bagian access policy panel Grant Permission, cari
AliyunSTSAssumeRoleAccessdan pilih kebijakan tersebut. -
Klik Confirm.
Langkah 5: Gunakan RAM user untuk mengasumsikan RAM role dan memperoleh kredensial sementara
Sebelum mengakses resource, gunakan RAM user untuk mengasumsikan RAM role dan memperoleh kredensial sementara. Kredensial ini hanya berlaku selama periode validitasnya. Contoh ini menggunakan Java.
Anda juga dapat langsung memanggil operasi AssumeRole di OpenAPI Explorer untuk memperoleh kredensial sementara.
Persiapan
-
Tambahkan dependensi berikut ke proyek Maven Anda.
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.6</version> </dependency> -
Konfigurasikan variabel lingkungan. Setelah konfigurasi selesai, restart atau refresh lingkungan kompilasi dan runtime Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang agar variabel lingkungan sistem terbaru berhasil dimuat.
Linux
Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan variabel lingkungan ke file
~/.bashrc.echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc echo "export TABLESTORE_STS_ROLE_ARN='YOUR_RAM_ROLE_ARN'" >> ~/.bashrcJalankan perintah berikut agar perubahan berlaku:
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
macOS
Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.
echo $SHELLLakukan operasi berdasarkan jenis Shell default.
Zsh
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.zshrc.echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc echo "export TABLESTORE_STS_ROLE_ARN='YOUR_RAM_ROLE_ARN'" >> ~/.zshrcJalankan perintah berikut agar perubahan berlaku:
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Bash
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bash_profile.echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile echo "export TABLESTORE_STS_ROLE_ARN='YOUR_RAM_ROLE_ARN'" >> ~/.bash_profileJalankan perintah berikut agar perubahan berlaku:
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Windows
CMD
Jalankan perintah berikut di CMD untuk mengatur variabel lingkungan.
setx ALIBABA_CLOUD_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" setx TABLESTORE_STS_ROLE_ARN "YOUR_RAM_ROLE_ARN"Setelah me-restart CMD, jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% echo %TABLESTORE_STS_ROLE_ARN%
PowerShell
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_STS_ROLE_ARN", "YOUR_RAM_ROLE_ARN", [EnvironmentVariableTarget]::User)Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
[Environment]::GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_STS_ROLE_ARN", [EnvironmentVariableTarget]::User)
Kode contoh
Kode contoh berikut menggunakan RAM user untuk mengasumsikan RAM role, memperoleh kredensial sementara STS, dan mencetaknya ke konsol. Kredensial ini berlaku selama satu jam.
Untuk daftar endpoint STS, lihat Endpoints.
import com.aliyun.sts20150401.models.AssumeRoleResponse;
import com.aliyun.tea.*;
public class AssumeRoleSample {
public static com.aliyun.sts20150401.Client createClient() throws Exception {
// Membocorkan kredensial AccessKey di kode sumber dapat mengompromikan semua resource di bawah akun Anda. Gunakan kode contoh ini hanya sebagai referensi.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint untuk layanan STS
config.endpoint = "sts.cn-hangzhou.aliyuncs.com";
return new com.aliyun.sts20150401.Client(config);
}
public static void main(String[] args) throws Exception {
com.aliyun.sts20150401.Client client = AssumeRoleSample.createClient();
com.aliyun.sts20150401.models.AssumeRoleRequest assumeRoleRequest = new com.aliyun.sts20150401.models.AssumeRoleRequest()
// Periode validitas kredensial sementara, dalam detik. Minimum 900. Maksimum tergantung pada durasi sesi maksimum peran (rentang: 3600–43200 detik; default: 3600).
.setDurationSeconds(3600L)
// Wajib. Pastikan variabel lingkungan TABLESTORE_STS_ROLE_ARN (ARN RAM role) telah diatur.
.setRoleArn(System.getenv("TABLESTORE_STS_ROLE_ARN"))
// Wajib. Nama sesi peran kustom untuk membedakan token.
.setRoleSessionName("RAMTablestore");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Peroleh dan cetak kredensial sementara STS. Simpan dengan aman.
AssumeRoleResponse response = client.assumeRoleWithOptions(assumeRoleRequest, runtime);
System.out.println("Expiration: " + response.getBody().getCredentials().getExpiration());
System.out.println("Access Key Id: " + response.getBody().getCredentials().getAccessKeyId());
System.out.println("Access Key Secret: " + response.getBody().getCredentials().getAccessKeySecret());
System.out.println("Security Token: " + response.getBody().getCredentials().getSecurityToken());
} catch (TeaException error) {
// Cetak error hanya untuk demonstrasi. Tangani exception dengan hati-hati di kode produksi. Jangan pernah mengabaikannya.
// Pesan error
System.out.println(error.getMessage());
// Tautan diagnostik
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Cetak error hanya untuk demonstrasi. Tangani exception dengan hati-hati di kode produksi. Jangan pernah mengabaikannya.
// Pesan error
System.out.println(error.getMessage());
// Tautan diagnostik
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
Untuk SDK STS dan contoh kode dalam bahasa lain, lihat Ikhtisar SDK STS.
Langkah 6: Akses Tablestore menggunakan kredensial akses sementara
Persiapan
-
Buat instans dan tabel data di Konsol Tablestore.
-
Peroleh nama instans, endpoint instans, dan ID wilayah.
PentingInstans baru tidak mengaktifkan akses jaringan publik secara default. Jika Anda memerlukan akses jaringan publik, aktifkan akses jaringan publik untuk instans tersebut.
-
Konfigurasikan variabel lingkungan. Setelah konfigurasi selesai, restart atau refresh lingkungan kompilasi dan runtime Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang agar variabel lingkungan sistem terbaru berhasil dimuat.
Linux
Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan variabel lingkungan ke file
~/.bashrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bashrc echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bashrcJalankan perintah berikut agar perubahan berlaku:
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
macOS
Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.
echo $SHELLLakukan operasi berdasarkan jenis Shell default.
Zsh
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.zshrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.zshrc echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.zshrcJalankan perintah berikut agar perubahan berlaku:
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Bash
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bash_profile.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bash_profile echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bash_profileJalankan perintah berikut agar perubahan berlaku:
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Windows
CMD
Jalankan perintah berikut di CMD untuk mengatur variabel lingkungan.
setx TABLESTORE_ACCESS_KEY_ID "YOUR_STS_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_STS_ACCESS_KEY_SECRET" setx TABLESTORE_SESSION_TOKEN "YOUR_STS_TOKEN"Setelah me-restart CMD, jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET% echo %TABLESTORE_SESSION_TOKEN%
PowerShell
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_STS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_STS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", "YOUR_STS_TOKEN", [EnvironmentVariableTarget]::User)Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
-
Instal SDK Tablestore untuk bahasa pemrograman Anda.
Java
Jika Anda menggunakan Maven, tambahkan dependensi berikut ke file pom.xml proyek Anda:
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>5.17.4</version> </dependency>Untuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Java.
Go
Jalankan perintah
go mod init <DIRNAME>di direktori proyek untuk menghasilkan file go.mod. Kemudian, jalankan perintah berikut untuk menginstal SDK Tablestore untuk Go:Catatan<DIRNAME>menunjukkan path direktori proyek. Ganti <DIRNAME> dengan path direktori proyek aktual.go get github.com/aliyun/aliyun-tablestore-go-sdk/tablestoreUntuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Go.
Python
Jalankan perintah berikut untuk menggunakan pip guna menginstal SDK Tablestore untuk Python:
sudo pip install tablestoreUntuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Python.
Node.js
Jalankan perintah berikut untuk menginstal SDK Tablestore untuk Node.js:
npm install tablestoreUntuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Node.js.
.NET
Untuk detailnya, lihat Instal SDK Tablestore untuk .NET.
PHP
Untuk detailnya, lihat Instal SDK Tablestore untuk PHP.
Model tabel lebar
Saat menggunakan model tabel lebar, inisialisasi klien tabel lebar dengan kredensial sementara STS dan kirim permintaan.
Java
Signature V4 (direkomendasikan)
Kode contoh Java berikut menginisialisasi klien menggunakan signature V4 dan mencantumkan semua nama tabel dalam instans.
import com.alicloud.openservices.tablestore.ClientConfiguration;
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.*;
import com.alicloud.openservices.tablestore.model.AlwaysRetryStrategy;
import com.alicloud.openservices.tablestore.model.ListTableResponse;
public class InitClientV4 {
public static void main(String[] args) {
// Ganti yourRegion dengan wilayah instans Anda, misalnya cn-hangzhou
final String region = "yourRegion";
// Ganti yourInstanceName dengan nama instans Anda
final String instanceName = "yourInstanceName";
// Ganti yourEndpoint dengan endpoint instans Anda
final String endpoint = "yourEndpoint";
// Dapatkan kredensial STS dari variabel lingkungan
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN");
// Bangun signature V4
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
// Inisialisasi klien Tablestore
SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// Sesuaikan ClientConfiguration jika diperlukan. Contoh:
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Timeout koneksi dalam milidetik
clientConfiguration.setSocketTimeoutInMillisecond(5000); // Timeout soket dalam milidetik
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Strategi retry; default digunakan jika tidak diatur
SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// Cantumkan dan cetak nama tabel
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// Matikan klien Tablestore
client.shutdown();
}
}
Signature V2
Kode contoh Java berikut menginisialisasi klien menggunakan signature V2 dan mencantumkan semua nama tabel dalam instans.
import com.alicloud.openservices.tablestore.ClientConfiguration;
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.model.AlwaysRetryStrategy;
import com.alicloud.openservices.tablestore.model.ListTableResponse;
public class InitClientV2 {
public static void main(String[] args) {
// Ganti yourInstanceName dengan nama instans Anda
final String instanceName = "yourInstanceName";
// Ganti yourEndpoint dengan endpoint instans Anda
final String endpoint = "yourEndpoint";
// Dapatkan kredensial STS dari variabel lingkungan
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN");
// Bangun signature V2
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
CredentialsProvider provider = new DefaultCredentialProvider(credentials);
// Inisialisasi klien Tablestore
SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// Sesuaikan ClientConfiguration jika diperlukan. Contoh:
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Timeout koneksi dalam milidetik
clientConfiguration.setSocketTimeoutInMillisecond(5000); // Timeout soket dalam milidetik
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Strategi retry; default digunakan jika tidak diatur
SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// Cantumkan dan cetak nama tabel
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// Matikan klien Tablestore
client.shutdown();
}
}
Go
Kode contoh Go berikut menginisialisasi klien dan mencantumkan semua nama tabel dalam instans.
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
// Ganti yourInstanceName dengan nama instans Anda
instanceName := "yourInstanceName"
// Ganti yourEndpoint dengan endpoint instans Anda
endpoint := "yourEndpoint"
// Dapatkan kredensial STS dari variabel lingkungan
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
// Inisialisasi klien Tablestore
client := tablestore.NewClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil)
// Cantumkan dan cetak nama tabel
tables, err := client.ListTable()
if err != nil {
fmt.Println("Failed to list table.")
} else {
for _, table := range (tables.TableNames) {
fmt.Println(table)
}
}
}
Python
Kode contoh Python berikut menginisialisasi klien dan mencantumkan semua nama tabel dalam instans.
# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# Ganti yourInstanceName dengan nama instans Anda
instance_name = "yourInstanceName"
# Ganti yourEndpoint dengan endpoint instans Anda
endpoint = "yourEndpoint"
# Dapatkan kredensial STS dari variabel lingkungan
access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
sts_token = os.getenv("TABLESTORE_SESSION_TOKEN")
# Inisialisasi klien Tablestore
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# Cantumkan dan cetak nama tabel
resp = client.list_table()
for table_name in resp:
print(table_name)
Node.js
Kode contoh Node.js berikut menginisialisasi klien dan mencantumkan semua nama tabel dalam instans.
// Sesuaikan path relatif sesuai kebutuhan.
var TableStore = require('../index.js');
// Ganti yourInstanceName dengan nama instans Anda
var instancename = 'yourInstanceName';
// Ganti yourEndpoint dengan endpoint instans Anda
var endpoint = 'yourEndpoint';
// Dapatkan kredensial STS dari variabel lingkungan
var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID;
var accessKeySecret = process.env.TABLESTORE_ACCESS_KEY_SECRET;
var stsToken = process.env.TABLESTORE_SESSION_TOKEN;
// Inisialisasi klien Tablestore
var client = new TableStore.Client({
accessKeyId: accessKeyId,
secretAccessKey: accessKeySecret,
stsToken: stsToken,
endpoint: endpoint,
instancename: instancename
});
// Cantumkan dan cetak nama tabel
client.listTable({}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
PHP
Kode contoh PHP berikut menginisialisasi klien dan mencantumkan semua nama tabel dalam instans.
<?php
// Sesuaikan path relatif sesuai kebutuhan.
require (__DIR__ . '/../../vendor/autoload.php');
use Aliyun\OTS\OTSClient as OTSClient;
// Ganti yourInstanceName dengan nama instans Anda
$instanceName = "yourInstanceName";
// Ganti yourEndpoint dengan endpoint instans Anda
$endpoint = "yourEndpoint";
// Dapatkan kredensial STS dari variabel lingkungan
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID');
$accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');
$stsToken = getenv('TABLESTORE_SESSION_TOKEN');
// Inisialisasi klien Tablestore
$client = new OTSClient(array(
'EndPoint' => $endpoint,
'AccessKeyID' => $accessKeyId,
'AccessKeySecret' => $accessKeySecret,
'InstanceName' => $instanceName,
'StsToken' => $stsToken,
));
// Cantumkan dan cetak nama tabel
$response = $client->listTable (array ());
print json_encode ($response);
Model deret waktu
Saat menggunakan model deret waktu, inisialisasi klien deret waktu dengan kredensial sementara STS dan kirim permintaan. Model deret waktu didukung di Java, Go, dan Python.
Java
Signature V4 (direkomendasikan)
Kode contoh Java berikut menginisialisasi klien menggunakan signature V4 dan mencantumkan semua nama tabel deret waktu dalam instans.
import com.alicloud.openservices.tablestore.ClientConfiguration;
import com.alicloud.openservices.tablestore.TimeseriesClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.core.auth.V4Credentials;
import com.alicloud.openservices.tablestore.model.AlwaysRetryStrategy;
import com.alicloud.openservices.tablestore.model.timeseries.ListTimeseriesTableResponse;
public class InitTimeseriesClientV4 {
public static void main(String[] args) {
// Ganti yourRegion dengan wilayah instans Anda, misalnya cn-hangzhou
final String region = "yourRegion";
// Ganti yourInstanceName dengan nama instans Anda
final String instanceName = "yourInstanceName";
// Ganti yourEndpoint dengan endpoint instans Anda
final String endpoint = "yourEndpoint";
// Dapatkan kredensial STS dari variabel lingkungan
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN");
// Bangun signature V4
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
// Inisialisasi klien Tablestore
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// Sesuaikan ClientConfiguration jika diperlukan. Contoh:
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Timeout koneksi dalam milidetik
clientConfiguration.setSocketTimeoutInMillisecond(5000); // Timeout soket dalam milidetik
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Strategi retry; default digunakan jika tidak diatur
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// Cantumkan dan cetak nama tabel deret waktu
ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
// Matikan klien Tablestore
client.shutdown();
}
}
Signature V2
Kode contoh Java berikut menginisialisasi klien menggunakan signature V2 dan mencantumkan semua nama tabel deret waktu dalam instans.
import com.alicloud.openservices.tablestore.ClientConfiguration;
import com.alicloud.openservices.tablestore.TimeseriesClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.model.AlwaysRetryStrategy;
import com.alicloud.openservices.tablestore.model.timeseries.ListTimeseriesTableResponse;
public class InitTimeseriesClientV2 {
public static void main(String[] args) {
// Ganti yourInstanceName dengan nama instans Anda
final String instanceName = "yourInstanceName";
// Ganti yourEndpoint dengan endpoint instans Anda
final String endpoint = "yourEndpoint";
// Dapatkan kredensial STS dari variabel lingkungan
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN");
// Bangun signature V2
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
CredentialsProvider provider = new DefaultCredentialProvider(credentials);
// Inisialisasi klien Tablestore
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// Sesuaikan ClientConfiguration jika diperlukan. Contoh:
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Timeout koneksi dalam milidetik
clientConfiguration.setSocketTimeoutInMillisecond(5000); // Timeout soket dalam milidetik
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Strategi retry; default digunakan jika tidak diatur
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// Cantumkan dan cetak nama tabel deret waktu
ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
// Matikan klien Tablestore
client.shutdown();
}
}
Go
Kode contoh Go berikut menginisialisasi klien dan mencantumkan semua nama tabel deret waktu dalam instans.
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
// Ganti yourInstanceName dengan nama instans Anda
instanceName := "yourInstanceName"
// Ganti yourEndpoint dengan endpoint instans Anda
endpoint := "yourEndpoint"
// Dapatkan kredensial STS dari variabel lingkungan
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
// Inisialisasi klien Tablestore
client := tablestore.NewTimeseriesClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil, nil)
// Cantumkan dan cetak nama tabel deret waktu
timeseriesTables, err := client.ListTimeseriesTable()
if err != nil {
fmt.Println("Failed to list table.")
} else {
for _, timeseriesTablesMeta := range (timeseriesTables.GetTimeseriesTableMeta()) {
fmt.Println(timeseriesTablesMeta.GetTimeseriesTableName())
}
}
}
Python
Kode contoh Python berikut menginisialisasi klien dan mencantumkan semua nama tabel deret waktu dalam instans.
# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# Ganti yourInstanceName dengan nama instans Anda
instance_name = "yourInstanceName"
# Ganti yourEndpoint dengan endpoint instans Anda
endpoint = "yourEndpoint"
# Dapatkan kredensial STS dari variabel lingkungan
access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
sts_token = os.getenv("TABLESTORE_SESSION_TOKEN")
# Inisialisasi klien Tablestore
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# Cantumkan dan cetak nama tabel deret waktu
response = client.list_timeseries_table()
for tableMeta in response:
print(tableMeta.timeseries_table_name)