Puede utilizar Security Token Service (STS) para emitir una credencial de acceso temporal a otro usuario. Este usuario podrá emplear dicha credencial para acceder a los recursos de Tablestore durante el periodo de validez de la misma. Las credenciales temporales no exponen sus claves de largo plazo y se invalidan automáticamente al expirar, lo que hace que el acceso a sus recursos de Tablestore sea más flexible y seguro.
Contexto
Un RAM role es un usuario virtual al que se le pueden otorgar permisos para acceder a recursos específicos. A diferencia de un usuario RAM, un rol RAM no posee credenciales de identidad permanentes (como una contraseña de inicio de sesión o un par de AccessKey). Una entidad de confianza (por ejemplo, un usuario RAM) debe asumir el rol. Tras una asunción exitosa, la entidad de confianza recibe credenciales de identidad temporales para el rol RAM —específicamente, un token de Security Token Service (token STS)— y puede usar este token para acceder a Tablestore actuando como dicho rol RAM.
Los roles RAM para cuentas de Alibaba Cloud están diseñados principalmente para escenarios de acceso entre cuentas y autorización temporal. Este tema utiliza un ejemplo en el que un usuario RAM dentro de la misma cuenta asume un rol RAM para demostrar cómo usar credenciales temporales de STS con el fin de acceder a recursos de Tablestore.
Procedimiento
Para utilizar credenciales temporales de STS y acceder a Tablestore, primero cree un rol RAM que será asumido y otórguele permisos de acceso a Tablestore. A continuación, cree un usuario RAM para que asuma dicho rol y obtenga las credenciales temporales de STS. Finalmente, utilice estas credenciales para enviar solicitudes de acceso a los recursos de Tablestore.
Paso 1: Crear un rol RAM
Inicie sesión en la consola de Resource Access Management (RAM) con su cuenta de Alibaba Cloud (cuenta principal) o como administrador de RAM.
En el panel de navegación izquierdo, seleccione para ir a la página de Roles.
-
Haga clic en Create Role, configure la entidad de confianza y haga clic en OK.
Parámetro
Valor de ejemplo
Tipo de entidad de confianza
Cuenta de Alibaba Cloud
Nombre de la entidad de confianza
Cuenta actual de Alibaba Cloud
En el cuadro de diálogo Create Role, establezca Role Name como
RamTablestorey haga clic en OK.
Al usar STS para obtener credenciales temporales, debe especificar el ARN del rol RAM. Puede encontrar y copiar el ARN en la sección Basic Information de la página de detalles del rol.
El formato del ARN para este rol es acs:ram::<Alibaba Cloud account ID>:role/ramtablestore. Haga clic en el botón Copy junto al ARN para obtenerlo.
Paso 2: Otorgar permisos de acceso a Tablestore
Uso de una política predeterminada
Otorgue al rol RAM permisos de acceso a Tablestore mediante la política AliyunOTSFullAccess.
La política AliyunOTSFullAccess concede acceso total a Tablestore. También puede elegir una de las siguientes opciones:
Para permisos de solo lectura, asigne al rol RAM la política
AliyunOTSReadOnlyAccess.Para permisos de solo escritura, asigne al rol RAM la política
AliyunOTSWriteOnlyAccess.
En el panel de navegación izquierdo, seleccione .
En la página de Roles, localice el rol RAM objetivo.
Haga clic en Attach Policy junto al rol RAM, o bien haga clic en el nombre del rol para ir a su página de detalles y luego en Grant Permission dentro de la sección Permissions.
En el panel Grant Permission, dentro de la sección Access Policy, busque
AliyunOTSFullAccessy selecciónela.Haga clic en Confirm New Authorization.
Uso de una política personalizada
-
Cree una política personalizada.
En el panel de navegación izquierdo, seleccione .
En la página de Policies, haga clic en Create Policy.
-
En la página Create Policy, haga clic en Script Editor, introduzca el script en el cuadro de entrada y haga clic en OK.
El siguiente script de ejemplo otorga permisos para acceder a una sola instancia. Personalice el script de la política según sea necesario; por ejemplo, para controlar permisos a nivel de tabla o API, o basándose en condiciones como dirección IP u hora de acceso. Para más información sobre las políticas de RAM, consulte Custom RAM policies .
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": "acs:ots:*:*:instance/your_instance_name*" } ] } En el cuadro de diálogo Create Policy, introduzca un nombre de política como
TestRAMPolicyy haga clic en OK.
-
Asigne la política personalizada al rol RAM.
En el panel de navegación izquierdo, seleccione .
En la página de Roles, localice el rol RAM objetivo.
Haga clic en Attach Policy junto al rol RAM, o bien haga clic en el nombre del rol para ir a su página de detalles y luego en Grant Permission dentro de la sección Permissions.
En el panel Grant Permission, dentro de la sección Access Policy, busque y seleccione la política de acceso personalizada que creó.
Haga clic en Confirm.
Puede consultar las políticas asignadas en la pestaña Permissions de la página de detalles del rol.
Paso 3: Crear un usuario RAM
Cree un usuario RAM para que asuma el rol RAM.
Inicie sesión en la consola de RAM con su cuenta de Alibaba Cloud o con un usuario RAM que tenga permisos administrativos.
En el panel de navegación izquierdo, seleccione Identities > Users.
En la página Users, haga clic en Create User.
-
En la página Create User, dentro de la sección User Account Information, configure la información básica del usuario:
Logon Name: El nombre de inicio de sesión puede contener letras, dígitos, puntos (.), guiones (-) y guiones bajos (_). Su longitud máxima es de 64 caracteres.
Display Name: El nombre para mostrar puede tener hasta 128 caracteres de longitud.
Tag: Haga clic en el icono
e introduzca una clave y un valor de etiqueta. Añadir una etiqueta facilita la búsqueda y gestión del usuario RAM.
NotaPuede hacer clic en Add User para crear varios usuarios RAM en lote.
-
En la sección Access Mode, seleccione Programmatic Access y luego haga clic en OK.
NotaPara permitir que el usuario RAM inicie sesión en la consola de administración de Alibaba Cloud, seleccione Console Access.
-
En la columna Actions, haga clic en Copy para guardar la información del usuario RAM. También puede copiar el AccessKey ID y el AccessKey secret por separado.
ImportanteEl AccessKey secret se muestra únicamente una vez al momento de la creación y no se puede recuperar posteriormente. Guárdelo inmediatamente en un lugar seguro.
Paso 4: Otorgar al usuario RAM permiso para invocar AssumeRole
Para asumir un rol RAM, el usuario debe contar con permiso para invocar AssumeRole.
En el panel de navegación izquierdo, seleccione .
En la página de Users, localice el usuario RAM objetivo.
Haga clic en Add Permissions junto al usuario RAM, o bien haga clic en el nombre del usuario para ir a su página de detalles y luego en Grant Permission en la pestaña Permission Management.
En la sección access policy del panel Grant Permission, busque
AliyunSTSAssumeRoleAccessy selecciónela.Haga clic en Confirm.
Paso 5: Usar el usuario RAM para asumir el rol y obtener credenciales temporales
Antes de acceder a los recursos, utilice el usuario RAM para asumir el rol y obtener las credenciales temporales. Estas credenciales son válidas únicamente durante su periodo de vigencia. Este ejemplo utiliza Java.
También puede call the AssumeRole operation directamente en OpenAPI Explorer para obtener credenciales temporales.
Preparativos
-
Añada la siguiente dependencia a su proyecto Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.6</version> </dependency> -
Configure las variables de entorno. Una vez completada la configuración, reinicie o actualice su entorno de compilación y ejecución, incluyendo IDE, interfaz de línea de comandos, otras aplicaciones de escritorio y servicios en segundo plano, para asegurar que las variables de entorno del sistema más recientes se carguen correctamente.
Linux
-
Ejecute los siguientes comandos en la interfaz de línea de comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.bashrc -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
macOS
-
Ejecute el siguiente comando en la terminal para verificar el tipo de shell predeterminado.
echo $SHELL -
Realice las operaciones correspondientes según el tipo de shell predeterminado.
Zsh
-
Ejecute los siguientes comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.zshrc -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Bash
-
Ejecute los siguientes comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.bash_profile -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
-
Windows
CMD
-
Ejecute los siguientes comandos en CMD para establecer las variables de entorno.
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" -
Después de reiniciar CMD, ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% echo %TABLESTORE_STS_ROLE_ARN%
PowerShell
-
Ejecute el siguiente comando en 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) -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
[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 ejemplo
El siguiente código de ejemplo utiliza un usuario RAM para asumir un rol, obtiene credenciales temporales de STS y las imprime en la consola. Las credenciales tienen una validez de una hora.
Para consultar la lista de endpoints de STS, véase 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 SDK de STS y ejemplos de código en otros lenguajes, consulte Overview of STS SDKs.
Paso 6: Acceder a Tablestore mediante credenciales de acceso temporales
Preparativos
Cree una instancia y tablas de datos en la consola de Tablestore.
-
Obtenga el nombre de la instancia, instance endpoint y region ID.
ImportanteLas nuevas instancias no habilitan el acceso a la red pública de forma predeterminada. Si requiere acceso público, enable public network access para la instancia.
-
Configure las variables de entorno. Una vez completada la configuración, reinicie o actualice su entorno de compilación y ejecución, incluyendo IDE, interfaz de línea de comandos, otras aplicaciones de escritorio y servicios en segundo plano, para asegurar que las variables de entorno del sistema más recientes se carguen correctamente.
Linux
-
Ejecute los siguientes comandos en la interfaz de línea de comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.bashrc -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
macOS
-
Ejecute el siguiente comando en la terminal para verificar el tipo de shell predeterminado.
echo $SHELL -
Realice las operaciones correspondientes según el tipo de shell predeterminado.
Zsh
-
Ejecute los siguientes comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.zshrc -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Bash
-
Ejecute los siguientes comandos para agregar la configuración de variables de entorno al archivo
~/.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 -
Ejecute el siguiente comando para aplicar los cambios:
source ~/.bash_profile -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
-
Windows
CMD
-
Ejecute los siguientes comandos en CMD para establecer las variables de entorno.
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" -
Después de reiniciar CMD, ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET% echo %TABLESTORE_SESSION_TOKEN%
PowerShell
-
Ejecute el siguiente comando en 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) -
Ejecute los siguientes comandos para comprobar si las variables de entorno surten efecto:
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
-
-
Instale el SDK de Tablestore correspondiente a su lenguaje de programación.
Java
Si utiliza Maven, añada la siguiente dependencia al archivo pom.xml de su proyecto:
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>5.17.4</version> </dependency>
Para más información, consulte Install Tablestore SDK for Java.
Go
Ejecute el comando
go mod init <DIRNAME>en el directorio del proyecto para generar el archivo go.mod. Luego, ejecute el siguiente comando para instalar el SDK de Tablestore para Go:Nota<DIRNAME>indica la ruta del directorio del proyecto. Reemplace <DIRNAME> con la ruta real de su directorio de proyecto.go get github.com/aliyun/aliyun-tablestore-go-sdk/tablestore
Para más información, consulte Install Tablestore SDK for Go.
Python
Ejecute el siguiente comando para usar pip e instalar el SDK de Tablestore para Python:
sudo pip install tablestore
Para más información, consulte Install Tablestore SDK for Python.
Node.js
Ejecute el siguiente comando para instalar el SDK de Tablestore para Node.js:
npm install tablestore
Para más información, consulte Install Tablestore SDK for Node.js.
.NET
Para más detalles, consulte Install Tablestore SDK for .NET.
PHP
Para más detalles, consulte Install Tablestore SDK for PHP.
Modelo de tabla ancha
Al utilizar el modelo de tabla ancha, inicialice el cliente de tabla ancha con credenciales temporales de STS y envíe las solicitudes.
Java
Firma V4 (recomendada)
El siguiente código de ejemplo en Java inicializa un cliente mediante la firma V4 y lista todos los nombres de tabla en la instancia.
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();
}
}
Firma V2
El siguiente código de ejemplo en Java inicializa un cliente mediante la firma V2 y lista todos los nombres de tabla en la instancia.
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
El siguiente código de ejemplo en Go inicializa un cliente y lista todos los nombres de tabla en la instancia.
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
El siguiente código de ejemplo en Python inicializa un cliente y lista todos los nombres de tabla en la instancia.
# -*- 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
El siguiente código de ejemplo en Node.js inicializa un cliente y lista todos los nombres de tabla en la instancia.
// 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
El siguiente código de ejemplo en PHP inicializa un cliente y lista todos los nombres de tabla en la instancia.
<?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 series de tiempo
Al utilizar el modelo de series de tiempo, inicialice el cliente de series de tiempo con credenciales temporales de STS y envíe las solicitudes. El modelo de series de tiempo es compatible con Java, Go y Python.
Java
Firma V4 (recomendada)
El siguiente código de ejemplo en Java inicializa un cliente mediante la firma V4 y lista todos los nombres de tabla de series de tiempo en la instancia.
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();
}
}
Firma V2
El siguiente código de ejemplo en Java inicializa un cliente mediante la firma V2 y lista todos los nombres de tabla de series de tiempo en la instancia.
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
El siguiente código de ejemplo en Go inicializa un cliente y lista todos los nombres de tabla de series de tiempo en la instancia.
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
El siguiente código de ejemplo en Python inicializa un cliente y lista todos los nombres de tabla de series de tiempo en la instancia.
# -*- 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)