Todos os produtos
Search
Central de documentação

Tablestore:Use STS temporary credentials to access Tablestore

Última atualização: Jun 30, 2026

O Security Token Service (STS) emite credenciais de acesso temporárias para outros usuários. Com essas credenciais, o usuário acessa recursos do Tablestore durante o período de validade definido. Credenciais temporárias não expõem suas chaves de longo prazo e tornam-se inválidas automaticamente após a expiração, tornando o acesso aos recursos do Tablestore mais flexível e seguro.

Informações básicas

Uma função RAM é um usuário virtual com permissões para acessar recursos específicos. Diferentemente de um usuário RAM, a função RAM não possui credenciais de identidade permanentes, como senha de login ou par de AccessKey. Uma entidade confiável, como um usuário RAM, deve assumir a função. Após assumir a função com sucesso, a entidade confiável recebe credenciais de identidade temporárias da função RAM — especificamente, um token do Security Token Service (token STS) — e usa esse token para acessar o Tablestore como a função RAM.

As funções RAM para contas Alibaba Cloud atendem principalmente a cenários de acesso entre contas e autorização temporária. Este tópico usa o exemplo de um usuário RAM da mesma conta assumindo uma função RAM para demonstrar como usar credenciais temporárias do STS no acesso a recursos do Tablestore.

Procedimento

Para acessar o Tablestore com credenciais temporárias do STS, crie primeiro uma função RAM a ser assumida e conceda a ela permissões de acesso ao Tablestore. Em seguida, crie um usuário RAM para assumir essa função e obter as credenciais temporárias do STS. Por fim, use essas credenciais para enviar requisições de acesso aos recursos do Tablestore.

Etapa 1: Criar uma função RAM

  1. Faça login no console Resource Access Management (RAM) usando sua conta Alibaba Cloud (conta principal) ou como administrador RAM.

  2. No painel de navegação à esquerda, escolha Identities > Roles para acessar a página Roles.

  3. Clique em Create Role, configure a entidade confiável e clique em OK.

    Parâmetro

    Valor de exemplo

    Tipo de entidade confiável

    Conta Alibaba Cloud

    Nome da entidade confiável

    Conta Alibaba Cloud atual

  4. Na caixa de diálogo Create Role, defina Role Name como RamTablestore e clique em OK.

Ao usar o STS para obter credenciais temporárias, especifique o ARN da função RAM. Encontre e copie o ARN na seção Basic Information da página de detalhes da função.

O formato do ARN para esta função é acs:ram::<Alibaba Cloud account ID>:role/ramtablestore. Clique no botão Copy ao lado do ARN para obtê-lo.

Etapa 2: Conceder permissões de acesso aoTablestore

Usar uma política padrão

Conceda à função RAM permissões de acesso ao Tablestore usando a política AliyunOTSFullAccess.

Nota

A política AliyunOTSFullAccess concede acesso total ao Tablestore. Você também pode escolher uma das seguintes opções:

  • Para permissão somente leitura, conceda à função RAM a política AliyunOTSReadOnlyAccess.

  • Para permissão somente gravação, conceda à função RAM a política AliyunOTSWriteOnlyAccess.

  1. No painel de navegação à esquerda, escolha Identities > Roles.

  2. Na página Roles, localize a função RAM desejada.

  3. Clique em Attach Policy ao lado da função RAM ou clique no nome da função para acessar sua página de detalhes e, em seguida, clique em Grant Permission na seção Permissions.

  4. No painel Grant Permission, na seção Access Policy, pesquise por AliyunOTSFullAccess e selecione-a.

  5. Clique em Confirm New Authorization.

Usar uma política personalizada

  1. Crie uma política personalizada.

    1. No painel de navegação à esquerda, escolha Permissions > Policies.

    2. Na página Policies, clique em Create Policy.

    3. Na página Create Policy, clique em Script Editor, insira o script na caixa de entrada e clique em OK.

      O script de exemplo a seguir concede permissões de acesso a uma única instância. Personalize o script da política conforme necessário — por exemplo, para controlar permissões no nível de tabela ou API, ou com base em condições como endereço IP ou horário de acesso. Para mais informações sobre políticas RAM, consulte Políticas RAM personalizadas .
      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "ots:*",
            "Resource": "acs:ots:*:*:instance/your_instance_name*"
          }
        ]
      }
    4. Na caixa de diálogo Create Policy, insira um nome para a política, como TestRAMPolicy, e clique em OK.

  1. Conceda a política personalizada à função RAM.

    1. No painel de navegação à esquerda, escolha Identities > Roles.

    2. Na página Roles, localize a função RAM desejada.

    3. Clique em Attach Policy ao lado da função RAM ou clique no nome da função para acessar sua página de detalhes e, em seguida, clique em Grant Permission na seção Permissions.

    4. No painel Grant Permission, na seção Access Policy, pesquise e selecione a política de acesso personalizada criada.

    5. Clique em Confirm.

Visualize as políticas concedidas na aba Permissions da página de detalhes da função.

Etapa 3: Criar um usuário RAM

Crie um usuário RAM para assumir a função RAM.

  1. Faça login no console RAM usando sua conta Alibaba Cloud ou um usuário RAM com permissões administrativas.

  2. No painel de navegação à esquerda, escolha Identities > Users.

  3. Na página Users, clique em Create User.

  4. Na página Create User, na seção User Account Information, configure as informações básicas do usuário:

    • Logon Name: O nome de login pode conter letras, dígitos, pontos (.), hifens (-) e sublinhados (_), com até 64 caracteres.

    • Display Name: O nome de exibição pode ter até 128 caracteres.

    • Tag: Clique no ícone edit e insira uma chave e um valor de tag. Adicionar tags facilita a localização e o gerenciamento do usuário RAM.

    Nota

    Clique em Add User para criar vários usuários RAM em lote.

  5. Na seção Access Mode, selecione Programmatic Access e clique em OK.

    Nota

    Para permitir que o usuário RAM faça login no Console de Gerenciamento Alibaba Cloud, selecione Console Access.

  6. Na coluna Actions, clique em Copy para salvar as informações do usuário RAM. Também é possível copiar o AccessKey ID e o AccessKey secret individualmente.

    Importante

    O AccessKey secret é exibido apenas uma vez no momento da criação e não pode ser recuperado posteriormente. Armazene-o imediatamente em um local seguro.

Etapa 4: Conceder ao usuário RAM permissão para chamar AssumeRole

Para assumir uma função RAM, o usuário RAM precisa ter permissão para chamar AssumeRole.

  1. No painel de navegação à esquerda, escolha Identities > Users.

  2. Na página Users, localize o usuário RAM desejado.

  3. Clique em Add Permissions ao lado do usuário RAM ou clique no nome do usuário para acessar sua página de detalhes e, em seguida, clique em Grant Permission na aba Permission Management.

  4. Na seção access policy do painel Grant Permission, pesquise por AliyunSTSAssumeRoleAccess e selecione-a.

  5. Clique em Confirm.

Etapa 5: Usar o usuário RAM para assumir a função RAM e obter credenciais temporárias

Antes de acessar os recursos, use o usuário RAM para assumir a função RAM e obter credenciais temporárias. Essas credenciais são válidas apenas durante seu período de validade. Este exemplo utiliza Java.

Você também pode chamar diretamente a operação AssumeRole no OpenAPI Explorer para obter credenciais temporárias.

Preparativos

  1. Adicione a seguinte dependência ao seu projeto Maven.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>sts20150401</artifactId>
        <version>1.1.6</version>
    </dependency>
  2. Configure as variáveis de ambiente. Após concluir a configuração, reinicie ou atualize seu ambiente de compilação e execução, incluindo IDE, interface de linha de comando, outros aplicativos desktop e serviços em segundo plano, para garantir que as variáveis de ambiente do sistema mais recentes sejam carregadas corretamente.

    Linux

    1. Execute os comandos abaixo na interface de linha de comando para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

      source ~/.bashrc
    3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

      echo $ALIBABA_CLOUD_ACCESS_KEY_ID
      echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
      echo $TABLESTORE_STS_ROLE_ARN

    macOS

    1. Execute o comando abaixo no terminal para verificar o tipo de Shell padrão.

      echo $SHELL
    2. Realize as operações de acordo com o tipo de Shell padrão.

      Zsh

      1. Execute os comandos abaixo para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

        source ~/.zshrc
      3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
        echo $TABLESTORE_STS_ROLE_ARN

      Bash

      1. Execute os comandos abaixo para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

        source ~/.bash_profile
      3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
        echo $TABLESTORE_STS_ROLE_ARN

    Windows

    CMD

    1. Execute os comandos abaixo no CMD para definir as variáveis de ambiente.

      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. Após reiniciar o CMD, execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

      echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
      echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
      echo %TABLESTORE_STS_ROLE_ARN%

    PowerShell

    1. Execute o comando abaixo no 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. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

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

Código de exemplo

O código de exemplo a seguir usa um usuário RAM para assumir uma função RAM, obtém credenciais temporárias do STS e as imprime no console. As credenciais têm validade de uma hora.

Para obter uma lista de endpoints do STS, consulte Endpoints .
import com.aliyun.sts20150401.models.AssumeRoleResponse;
import com.aliyun.tea.*;
public class AssumeRoleSample {
    public static com.aliyun.sts20150401.Client createClient() throws Exception {
        // Leaking AccessKey credentials in source code may compromise all resources under your account. Use this sample code for reference only.
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // Endpoint for the STS service
        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()
                // Validity period of the temporary credential, in seconds. Minimum is 900. Maximum depends on the role's maximum session duration (range: 3600–43200 seconds; default: 3600).
                .setDurationSeconds(3600L)
                // Required. Ensure the TABLESTORE_STS_ROLE_ARN environment variable (the RAM role ARN) is set.
                .setRoleArn(System.getenv("TABLESTORE_STS_ROLE_ARN"))
                // Required. A custom role session name to distinguish tokens.
                .setRoleSessionName("RAMTablestore");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // Obtain and print STS temporary credentials. Store them securely.
            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) {
            // Print errors for demonstration only. Handle exceptions carefully in production code. Never ignore them.
            // Error message
            System.out.println(error.getMessage());
            // Diagnostic link
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // Print errors for demonstration only. Handle exceptions carefully in production code. Never ignore them.
            // Error message
            System.out.println(error.getMessage());
            // Diagnostic link
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

Para SDKs do STS e exemplos de código em outras linguagens, consulte Visão geral dos SDKs do STS.

Etapa 6: Acessar oTablestore usando credenciais de acesso temporárias

Preparativos

  1. Crie uma instância e tabelas de dados no console Tablestore.

  2. Obtenha o nome da instância, o endpoint da instância e o ID da região.

    Importante

    Novas instâncias não habilitam o acesso pela rede pública por padrão. Caso necessite de acesso público, ative o acesso pela rede pública para a instância.

  3. Configure as variáveis de ambiente. Após concluir a configuração, reinicie ou atualize seu ambiente de compilação e execução, incluindo IDE, interface de linha de comando, outros aplicativos desktop e serviços em segundo plano, para garantir que as variáveis de ambiente do sistema mais recentes sejam carregadas corretamente.

    Linux

    1. Execute os comandos abaixo na interface de linha de comando para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

      source ~/.bashrc
    3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
      echo $TABLESTORE_SESSION_TOKEN

    macOS

    1. Execute o comando abaixo no terminal para verificar o tipo de Shell padrão.

      echo $SHELL
    2. Realize as operações de acordo com o tipo de Shell padrão.

      Zsh

      1. Execute os comandos abaixo para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

        source ~/.zshrc
      3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
        echo $TABLESTORE_SESSION_TOKEN

      Bash

      1. Execute os comandos abaixo para anexar as definições de variáveis de ambiente ao arquivo ~/.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. Execute o comando a seguir para aplicar as alterações:

        source ~/.bash_profile
      3. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
        echo $TABLESTORE_SESSION_TOKEN

    Windows

    CMD

    1. Execute os comandos abaixo no CMD para definir as variáveis de ambiente.

      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. Após reiniciar o CMD, execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

      echo %TABLESTORE_ACCESS_KEY_ID%
      echo %TABLESTORE_ACCESS_KEY_SECRET%
      echo %TABLESTORE_SESSION_TOKEN%

    PowerShell

    1. Execute o comando abaixo no 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. Execute os comandos abaixo para verificar se as variáveis de ambiente foram aplicadas:

      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
  4. Instale o SDK do Tablestore para sua linguagem de programação.

    Java

    Se você utiliza Maven, adicione a seguinte dependência ao arquivo pom.xml do seu projeto:

    <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>5.17.4</version> </dependency>

    Para mais informações, consulte Instalar o SDK do Tablestore para Java.

    Go

    Execute o comando go mod init <DIRNAME> no diretório do projeto para gerar o arquivo go.mod. Em seguida, execute o comando abaixo para instalar o SDK do Tablestore para Go:

    Nota

    <DIRNAME> indica o caminho do diretório do projeto. Substitua <DIRNAME> pelo caminho real do diretório do seu projeto.

    go get github.com/aliyun/aliyun-tablestore-go-sdk/tablestore

    Para mais informações, consulte Instalar o SDK do Tablestore para Go.

    Python

    Execute o comando abaixo para usar o pip e instalar o SDK do Tablestore para Python:

    sudo pip install tablestore

    Para mais informações, consulte Instalar o SDK do Tablestore para Python.

    Node.js

    Execute o comando abaixo para instalar o SDK do Tablestore para Node.js:

    npm install tablestore

    Para mais informações, consulte Instalar o SDK do Tablestore para Node.js.

    .NET

    Para mais detalhes, consulte Instalar o SDK do Tablestore para .NET.

    PHP

    Para mais detalhes, consulte Instalar o SDK do Tablestore para PHP.

Modelo de tabela ampla

Ao utilizar o modelo de tabela ampla, inicialize o cliente de tabela ampla com credenciais temporárias do STS e envie as requisições.

Java

Assinatura V4 (recomendada)

O código de exemplo Java a seguir inicializa um cliente usando a assinatura V4 e lista todos os nomes de tabelas na instância.

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) {
        // Replace yourRegion with your instance region, such as cn-hangzhou
        final String region = "yourRegion";
        // Replace yourInstanceName with your instance name
        final String instanceName = "yourInstanceName";
        // Replace yourEndpoint with your instance endpoint
        final String endpoint = "yourEndpoint";
        // Get STS credentials from environment variables
        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");
        // Build V4 signature
        DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
        V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
        CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
        // Initialize Tablestore client
        SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
        /*
        // Customize ClientConfiguration if needed. Examples:
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Connection timeout in milliseconds
        clientConfiguration.setSocketTimeoutInMillisecond(5000); // Socket timeout in milliseconds
        clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Retry strategy; default used if not set
        SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
         */
        // List and print table names
        ListTableResponse listTableResponse = client.listTable();
        listTableResponse.getTableNames().forEach(System.out::println);
        // Shut down Tablestore client
        client.shutdown();
    }
}

Assinatura V2

O código de exemplo Java a seguir inicializa um cliente usando a assinatura V2 e lista todos os nomes de tabelas na instância.

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) {
        // Replace yourInstanceName with your instance name
        final String instanceName = "yourInstanceName";
        // Replace yourEndpoint with your instance endpoint
        final String endpoint = "yourEndpoint";
        // Get STS credentials from environment variables
        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");
        // Build V2 signature
        DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
        CredentialsProvider provider = new DefaultCredentialProvider(credentials);
        // Initialize Tablestore client
        SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
        /*
        // Customize ClientConfiguration if needed. Examples:
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Connection timeout in milliseconds
        clientConfiguration.setSocketTimeoutInMillisecond(5000); // Socket timeout in milliseconds
        clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Retry strategy; default used if not set
        SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
         */
        // List and print table names
        ListTableResponse listTableResponse = client.listTable();
        listTableResponse.getTableNames().forEach(System.out::println);
        // Shut down Tablestore client
        client.shutdown();
    }
}

Go

O código de exemplo Go a seguir inicializa um cliente e lista todos os nomes de tabelas na instância.

package main
import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
	// Replace yourInstanceName with your instance name
	instanceName := "yourInstanceName"
	// Replace yourEndpoint with your instance endpoint
	endpoint := "yourEndpoint"
	// Get STS credentials from environment variables
	accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
	accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
	securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
	// Initialize Tablestore client
	client := tablestore.NewClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil)	
	// List and print table names
	tables, err := client.ListTable()
    if err != nil {
        fmt.Println("Failed to list table.")
    } else {
        for _, table := range (tables.TableNames) {
            fmt.Println(table)
        }
    }
}

Python

O código de exemplo Python a seguir inicializa um cliente e lista todos os nomes de tabelas na instância.

# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# Replace yourInstanceName with your instance name
instance_name = "yourInstanceName"
# Replace yourEndpoint with your instance endpoint
endpoint = "yourEndpoint"
# Get STS credentials from environment variables
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")
# Initialize Tablestore client
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# List and print table names
resp = client.list_table()
for table_name in resp:
    print(table_name)

Node.js

O código de exemplo Node.js a seguir inicializa um cliente e lista todos os nomes de tabelas na instância.

// Adjust the relative path as needed.
var TableStore = require('../index.js');
// Replace yourInstanceName with your instance name
var instancename = 'yourInstanceName';
// Replace yourEndpoint with your instance endpoint
var endpoint = 'yourEndpoint';
// Get STS credentials from environment variables
var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID;
var accessKeySecret = process.env.TABLESTORE_ACCESS_KEY_SECRET;
var stsToken = process.env.TABLESTORE_SESSION_TOKEN;
// Initialize Tablestore client
var client = new TableStore.Client({
  accessKeyId: accessKeyId,
  secretAccessKey: accessKeySecret,
  stsToken: stsToken,
  endpoint: endpoint,
  instancename: instancename 
});
// List and print table names
client.listTable({}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', data);
});

PHP

O código de exemplo PHP a seguir inicializa um cliente e lista todos os nomes de tabelas na instância.

<?php
// Adjust the relative path as needed.
require (__DIR__ . '/../../vendor/autoload.php');
use Aliyun\OTS\OTSClient as OTSClient;
// Replace yourInstanceName with your instance name
$instanceName = "yourInstanceName";
// Replace yourEndpoint with your instance endpoint
$endpoint = "yourEndpoint";
// Get STS credentials from environment variables
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID');
$accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');
$stsToken = getenv('TABLESTORE_SESSION_TOKEN');
// Initialize Tablestore client
$client = new OTSClient(array(
    'EndPoint' => $endpoint,
    'AccessKeyID' => $accessKeyId,
    'AccessKeySecret' => $accessKeySecret,
    'InstanceName' => $instanceName,
    'StsToken' => $stsToken,
));
// List and print table names
$response = $client->listTable (array ());
print json_encode ($response);

Modelo de séries temporais

Ao utilizar o modelo de séries temporais, inicialize o cliente de séries temporais com credenciais temporárias do STS e envie as requisições. O modelo de séries temporais é suportado em Java, Go e Python.

Java

Assinatura V4 (recomendada)

O código de exemplo Java a seguir inicializa um cliente usando a assinatura V4 e lista todos os nomes de tabelas de séries temporais na instância.

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) {
        // Replace yourRegion with your instance region, such as cn-hangzhou
        final String region = "yourRegion";
        // Replace yourInstanceName with your instance name
        final String instanceName = "yourInstanceName";
        // Replace yourEndpoint with your instance endpoint
        final String endpoint = "yourEndpoint";
        // Get STS credentials from environment variables
        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");
        // Build V4 signature
        DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
        V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
        CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
        // Initialize Tablestore client
        TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
        /*
        // Customize ClientConfiguration if needed. Examples:
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Connection timeout in milliseconds
        clientConfiguration.setSocketTimeoutInMillisecond(5000); // Socket timeout in milliseconds
        clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Retry strategy; default used if not set
        TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
         */
        // List and print time series table names
        ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
        listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
        // Shut down Tablestore client
        client.shutdown();
    }
}

Assinatura V2

O código de exemplo Java a seguir inicializa um cliente usando a assinatura V2 e lista todos os nomes de tabelas de séries temporais na instância.

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) {
        // Replace yourInstanceName with your instance name
        final String instanceName = "yourInstanceName";
        // Replace yourEndpoint with your instance endpoint
        final String endpoint = "yourEndpoint";
        // Get STS credentials from environment variables
        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");
        // Build V2 signature
        DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
        CredentialsProvider provider = new DefaultCredentialProvider(credentials);
        // Initialize Tablestore client
        TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
        /*
        // Customize ClientConfiguration if needed. Examples:
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setConnectionTimeoutInMillisecond(5000); // Connection timeout in milliseconds
        clientConfiguration.setSocketTimeoutInMillisecond(5000); // Socket timeout in milliseconds
        clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // Retry strategy; default used if not set
        TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
         */
        // List and print time series table names
        ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
        listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
        // Shut down Tablestore client
        client.shutdown();
    }
}

Go

O código de exemplo Go a seguir inicializa um cliente e lista todos os nomes de tabelas de séries temporais na instância.

package main
import (
    "fmt"
    "os"
    "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
    // Replace yourInstanceName with your instance name
    instanceName := "yourInstanceName"
    // Replace yourEndpoint with your instance endpoint
    endpoint := "yourEndpoint"
    // Get STS credentials from environment variables
    accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
    accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
    securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
    // Initialize Tablestore client
    client := tablestore.NewTimeseriesClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil, nil)    
    // List and print time series table names
    timeseriesTables, err := client.ListTimeseriesTable()
    if err != nil {
        fmt.Println("Failed to list table.")
    } else {
        for _, timeseriesTablesMeta := range (timeseriesTables.GetTimeseriesTableMeta()) {
            fmt.Println(timeseriesTablesMeta.GetTimeseriesTableName())
        }
    }
}

Python

O código de exemplo Python a seguir inicializa um cliente e lista todos os nomes de tabelas de séries temporais na instância.

# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# Replace yourInstanceName with your instance name
instance_name = "yourInstanceName"
# Replace yourEndpoint with your instance endpoint
endpoint = "yourEndpoint"
# Get STS credentials from environment variables
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")
# Initialize Tablestore client
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# List and print time series table names
response = client.list_timeseries_table()
for tableMeta in response:
    print(tableMeta.timeseries_table_name)

Perguntas frequentes

P: Como resolver o erro You are not authorized to do this action. You should be authorized by RAM.?

Ao usar um usuário RAM para assumir uma função RAM e obter credenciais temporárias, utilize o par de AccessKey do usuário RAM (AccessKey ID e AccessKey secret). Não use o par de AccessKey da conta Alibaba Cloud.

P: Como resolver o erro The Min/Max value of DurationSeconds is 15min/1hr.?

Esse erro ocorre quando o período de validade da credencial temporária excede o intervalo permitido. Siga estas regras:

  • Se você não personalizou a duração máxima da sessão da função, o padrão é 3600 segundos. Nesse caso, o valor mínimo para durationSeconds é 900 segundos e o máximo é 3600 segundos.

  • Se você personalizou a duração máxima da sessão da função, o valor mínimo para durationSeconds é 900 segundos e o máximo corresponde à duração máxima da sessão da função. A duração máxima da sessão da função pode ser definida entre 3600 e 43200 segundos.

Verifique a duração máxima da sessão da função no console RAM.

P: Como resolver o erro The security token you provided is invalid.?

Certifique-se de inserir o SecurityToken completo e verifique se suas variáveis de ambiente estão configuradas corretamente.

P: Posso obter várias credenciais temporárias ao mesmo tempo?

Sim. Cada requisição retorna uma credencial temporária. Para obter múltiplas credenciais, envie várias requisições. Todas as credenciais obtidas podem ser usadas simultaneamente durante seus respectivos períodos de validade.

P: O que fazer se eu receber uma exceção Request denied by instance ACL policies ao usar o SDK para acessar o Tablestore?

O tipo de rede utilizado pelo seu cliente não atende aos requisitos de acesso à rede da instância. Na página Instance Management do console Tablestore, acesse a aba Network Management e configure Allowed Network Types. Para mais informações, consulte Resolver exceções "Request denied by instance ACL policies" ao usar o SDK para acessar o Tablestore.