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
Faça login no console Resource Access Management (RAM) usando sua conta Alibaba Cloud (conta principal) ou como administrador RAM.
No painel de navegação à esquerda, escolha para acessar a página Roles.
-
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
Na caixa de diálogo Create Role, defina Role Name como
RamTablestoree 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.
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.
No painel de navegação à esquerda, escolha .
Na página Roles, localize a função RAM desejada.
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.
No painel Grant Permission, na seção Access Policy, pesquise por
AliyunOTSFullAccesse selecione-a.Clique em Confirm New Authorization.
Usar uma política personalizada
-
Crie uma política personalizada.
No painel de navegação à esquerda, escolha .
Na página Policies, clique em Create Policy.
-
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*" } ] } Na caixa de diálogo Create Policy, insira um nome para a política, como
TestRAMPolicy, e clique em OK.
-
Conceda a política personalizada à função RAM.
No painel de navegação à esquerda, escolha .
Na página Roles, localize a função RAM desejada.
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.
No painel Grant Permission, na seção Access Policy, pesquise e selecione a política de acesso personalizada criada.
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.
Faça login no console RAM usando sua conta Alibaba Cloud ou um usuário RAM com permissões administrativas.
No painel de navegação à esquerda, escolha Identities > Users.
Na página Users, clique em Create User.
-
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
e insira uma chave e um valor de tag. Adicionar tags facilita a localização e o gerenciamento do usuário RAM.
NotaClique em Add User para criar vários usuários RAM em lote.
-
Na seção Access Mode, selecione Programmatic Access e clique em OK.
NotaPara permitir que o usuário RAM faça login no Console de Gerenciamento Alibaba Cloud, selecione Console Access.
-
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.
ImportanteO 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.
No painel de navegação à esquerda, escolha .
Na página Users, localize o usuário RAM desejado.
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.
Na seção access policy do painel Grant Permission, pesquise por
AliyunSTSAssumeRoleAccesse selecione-a.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
-
Adicione a seguinte dependência ao seu projeto Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.6</version> </dependency> -
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
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.bashrc -
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
-
Execute o comando abaixo no terminal para verificar o tipo de Shell padrão.
echo $SHELL -
Realize as operações de acordo com o tipo de Shell padrão.
Zsh
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.zshrc -
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
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.bash_profile -
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
-
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" -
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
-
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) -
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
Crie uma instância e tabelas de dados no console Tablestore.
-
Obtenha o nome da instância, o endpoint da instância e o ID da região.
ImportanteNovas 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.
-
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
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.bashrc -
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
-
Execute o comando abaixo no terminal para verificar o tipo de Shell padrão.
echo $SHELL -
Realize as operações de acordo com o tipo de Shell padrão.
Zsh
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.zshrc -
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
-
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 -
Execute o comando a seguir para aplicar as alterações:
source ~/.bash_profile -
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
-
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" -
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
-
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) -
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)
-
-
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)