All Products
Search
Document Center

Tablestore:Gunakan kredensial sementara STS untuk mengakses Tablestore

Last Updated:Jun 21, 2026

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

  1. Login ke Konsol Resource Access Management (RAM) menggunakan Akun Alibaba Cloud (akun utama) Anda atau sebagai administrator RAM.

  2. Pada panel navigasi di sebelah kiri, pilih Identities > Roles untuk membuka halaman Roles.

  3. 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

  4. 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.

Catatan

Kebijakan AliyunOTSFullAccess memberikan akses penuh ke Tablestore. Anda juga dapat memilih salah satu opsi berikut:

  • Untuk izin read-only, berikan kebijakan AliyunOTSReadOnlyAccess kepada RAM role.

  • Untuk izin write-only, berikan kebijakan AliyunOTSWriteOnlyAccess kepada RAM role.

  1. Pada panel navigasi di sebelah kiri, pilih Identities > Roles.

  2. Pada halaman Roles, temukan RAM role yang dituju.

  3. Klik Attach Policy di samping RAM role tersebut, atau klik nama peran untuk membuka halaman detailnya lalu klik Grant Permission pada bagian Permissions.

  4. Pada panel Grant Permission, pada bagian Access Policy, cari AliyunOTSFullAccess dan pilih kebijakan tersebut.

  5. Klik Confirm New Authorization.

Gunakan kebijakan kustom

  1. Buat kebijakan kustom.

    1. Pada panel navigasi di sebelah kiri, pilih Permissions > Policies.

    2. Pada halaman Policies, klik Create Policy.

    3. 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*"
          }
        ]
      }
    4. Pada kotak dialog Create Policy, masukkan nama kebijakan seperti TestRAMPolicy, lalu klik OK.

  1. Berikan kebijakan kustom kepada RAM role.

    1. Pada panel navigasi di sebelah kiri, pilih Identities > Roles.

    2. Pada halaman Roles, temukan RAM role yang dituju.

    3. Klik Attach Policy di samping RAM role tersebut, atau klik nama peran untuk membuka halaman detailnya lalu klik Grant Permission pada bagian Permissions.

    4. Pada panel Grant Permission, pada bagian Access Policy, cari dan pilih kebijakan akses kustom yang telah Anda buat.

    5. 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.

  1. Login ke Konsol RAM menggunakan Akun Alibaba Cloud Anda atau RAM user yang memiliki izin administratif.

  2. Pada panel navigasi di sebelah kiri, pilih Identities > Users.

  3. Pada halaman Users, klik Create User.

  4. 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 edit dan masukkan kunci tag serta nilai tag. Menambahkan tag membantu Anda menemukan dan mengelola RAM user tersebut.

    Catatan

    Anda dapat mengklik Add User untuk membuat beberapa RAM user sekaligus.

  5. Pada bagian Access Mode, pilih Programmatic Access, lalu klik OK.

    Catatan

    Untuk mengizinkan RAM user login ke Konsol Manajemen Alibaba Cloud, pilih Console Access.

  6. Pada kolom Actions, klik Copy untuk menyimpan informasi RAM user. Anda juga dapat menyalin ID AccessKey dan rahasia AccessKey secara terpisah.

    Penting

    Rahasia 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.

  1. Pada panel navigasi di sebelah kiri, pilih Identities > Users.

  2. Pada halaman Users, temukan RAM user yang dituju.

  3. Klik Add Permissions di samping RAM user tersebut, atau klik nama pengguna untuk membuka halaman detailnya lalu klik Grant Permission pada tab Permission Management.

  4. Pada bagian access policy panel Grant Permission, cari AliyunSTSAssumeRoleAccess dan pilih kebijakan tersebut.

  5. 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

  1. Tambahkan dependensi berikut ke proyek Maven Anda.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>sts20150401</artifactId>
        <version>1.1.6</version>
    </dependency>
  2. 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
    1. 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'" >> ~/.bashrc
    2. Jalankan perintah berikut agar perubahan berlaku:

      source ~/.bashrc
    3. 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
    macOS
    1. Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.

      echo $SHELL
    2. Lakukan operasi berdasarkan jenis Shell default.

      Zsh
      1. 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'" >> ~/.zshrc
      2. Jalankan perintah berikut agar perubahan berlaku:

        source ~/.zshrc
      3. 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
      Bash
      1. 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_profile
      2. Jalankan perintah berikut agar perubahan berlaku:

        source ~/.bash_profile
      3. 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
    Windows
    CMD
    1. 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"
    2. 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
    1. 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)
    2. 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

  1. Buat instans dan tabel data di Konsol Tablestore.

  2. Peroleh nama instans, endpoint instans, dan ID wilayah.

    Penting

    Instans baru tidak mengaktifkan akses jaringan publik secara default. Jika Anda memerlukan akses jaringan publik, aktifkan akses jaringan publik untuk instans tersebut.

  3. 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
    1. 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'" >> ~/.bashrc
    2. Jalankan perintah berikut agar perubahan berlaku:

      source ~/.bashrc
    3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
      echo $TABLESTORE_SESSION_TOKEN
    macOS
    1. Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.

      echo $SHELL
    2. Lakukan operasi berdasarkan jenis Shell default.

      Zsh
      1. 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'" >> ~/.zshrc
      2. Jalankan perintah berikut agar perubahan berlaku:

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan sudah berlaku:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
        echo $TABLESTORE_SESSION_TOKEN
      Bash
      1. 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_profile
      2. Jalankan perintah berikut agar perubahan berlaku:

        source ~/.bash_profile
      3. Jalankan 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
    1. 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"
    2. 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
    1. 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)
    2. 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)
  4. 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/tablestore

    Untuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Go.

    Python

    Jalankan perintah berikut untuk menggunakan pip guna menginstal SDK Tablestore untuk Python:

    sudo pip install tablestore

    Untuk informasi selengkapnya, lihat Instal SDK Tablestore untuk Python.

    Node.js

    Jalankan perintah berikut untuk menginstal SDK Tablestore untuk Node.js:

    npm install tablestore

    Untuk 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)

FAQ

T: Bagaimana cara mengatasi error You are not authorized to do this action. You should be authorized by RAM.?

Saat menggunakan RAM user untuk mengasumsikan RAM role dan memperoleh kredensial sementara, Anda harus menggunakan pasangan AccessKey RAM user (ID AccessKey dan rahasia AccessKey). Jangan gunakan pasangan AccessKey Akun Alibaba Cloud.

T: Bagaimana cara mengatasi error The Min/Max value of DurationSeconds is 15min/1hr.?

Error ini terjadi ketika periode validitas kredensial sementara melebihi rentang yang diizinkan. Ikuti aturan berikut:

  • Jika Anda belum menyesuaikan durasi sesi maksimum peran, nilai default-nya adalah 3600 detik. Dalam kasus ini, nilai minimum untuk durationSeconds adalah 900 detik, dan nilai maksimum adalah 3600 detik.

  • Jika Anda telah menyesuaikan durasi sesi maksimum peran, nilai minimum untuk durationSeconds adalah 900 detik, dan nilai maksimum sama dengan durasi sesi maksimum peran tersebut. Durasi sesi maksimum peran dapat diatur antara 3600 hingga 43200 detik.

Anda dapat melihat durasi sesi maksimum peran di Konsol RAM.

T: Bagaimana cara mengatasi error The security token you provided is invalid.?

Pastikan Anda memasukkan SecurityToken lengkap dan verifikasi bahwa variabel lingkungan Anda dikonfigurasi dengan benar.

T: Apakah saya dapat memperoleh beberapa kredensial sementara sekaligus?

Ya. Setiap permintaan mengembalikan satu kredensial sementara. Untuk memperoleh beberapa kredensial, kirim beberapa permintaan. Anda dapat menggunakan semua kredensial yang diperoleh secara bersamaan selama periode validitasnya.

T: Apa yang harus saya lakukan jika mendapatkan exception Request denied by instance ACL policies saat menggunakan SDK untuk mengakses Tablestore?

Jenis jaringan yang digunakan klien Anda tidak memenuhi persyaratan akses jaringan instans. Di halaman Instance Management di Konsol Tablestore, buka tab Network Management dan atur Allowed Network Types. Untuk informasi selengkapnya, lihat Tangani exception "Request denied by instance ACL policies" saat menggunakan SDK untuk mengakses Tablestore.