Vous pouvez utiliser Security Token Service (STS) pour délivrer un identifiant d'accès temporaire à un autre utilisateur. Cet identifiant permet à l'utilisateur d'accéder aux ressources Tablestore pendant la période de validité de l'identifiant. Les identifiants temporaires n'exposent pas vos clés à long terme. Une fois expirés, ils deviennent automatiquement invalides, ce qui rend l'accès à vos ressources Tablestore plus flexible et sécurisé.
Informations contextuelles
Un rôle RAM est un utilisateur virtuel auquel peuvent être accordées des autorisations pour accéder à des ressources spécifiques. Contrairement à un utilisateur RAM, un rôle RAM ne possède pas d'identifiants d'identité permanents (tels qu'un mot de passe de connexion ou une paire AccessKey). Une entité de confiance (comme un utilisateur RAM) doit endosser le rôle. Après l'endossement réussi, l'entité de confiance reçoit des identifiants d'identité temporaires pour le rôle RAM — spécifiquement, un jeton Security Token Service (jeton STS) — et peut utiliser ce jeton pour accéder à Tablestore en tant que rôle RAM.
Les rôles RAM pour les comptes Alibaba Cloud répondent principalement aux scénarios d'accès inter-comptes et d'autorisation temporaire. Cette rubrique utilise un exemple où un utilisateur RAM au sein du même compte endosse un rôle RAM pour illustrer comment utiliser des identifiants temporaires STS afin d'accéder aux ressources Tablestore.
Procédure
Pour utiliser des identifiants temporaires STS afin d'accéder à Tablestore, commencez par créer un rôle RAM à endosser et accordez-lui des autorisations d'accès à Tablestore. Ensuite, créez un utilisateur RAM pour endosser le rôle RAM et obtenir des identifiants temporaires STS. Enfin, utilisez ces identifiants pour envoyer des requêtes afin d'accéder aux ressources Tablestore.
Étape 1 : Créer un rôle RAM
Connectez-vous à la console Resource Access Management (RAM) en utilisant votre compte Alibaba Cloud (compte principal) ou en tant qu'administrateur RAM.
Dans le volet de navigation de gauche, sélectionnez pour accéder à la page Roles.
-
Cliquez sur Create Role, configurez l'entité de confiance, puis cliquez sur OK.
Paramètre
Valeur d'exemple
Type d'entité de confiance
Compte Alibaba Cloud
Nom de l'entité de confiance
Compte Alibaba Cloud actuel
Dans la boîte de dialogue Create Role, définissez Role Name sur
RamTablestore, puis cliquez sur OK.
Lorsque vous utilisez STS pour obtenir des identifiants temporaires, vous devez spécifier l'ARN du rôle RAM. Vous pouvez trouver et copier l'ARN dans la section Basic Information de la page des détails du rôle.
Le format ARN pour ce rôle est acs:ram::<Alibaba Cloud account ID>:role/ramtablestore. Cliquez sur le bouton Copy à côté de l'ARN pour l'obtenir.
Étape 2 : Accorder des autorisations d'accèsTablestore
Utiliser une politique par défaut
Accordez au rôle RAM des autorisations d'accès à Tablestore en utilisant la politique AliyunOTSFullAccess.
La politique AliyunOTSFullAccess accorde un accès complet à Tablestore. Vous pouvez également choisir l'une des options suivantes :
Pour une autorisation en lecture seule, accordez au rôle RAM la politique
AliyunOTSReadOnlyAccess.Pour une autorisation en écriture seule, accordez au rôle RAM la politique
AliyunOTSWriteOnlyAccess.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Roles, recherchez le rôle RAM cible.
Cliquez sur Attach Policy à côté du rôle RAM, ou cliquez sur le nom du rôle pour accéder à sa page de détails, puis cliquez sur Grant Permission dans la section Permissions.
Dans le panneau Grant Permission, dans la section Access Policy, recherchez
AliyunOTSFullAccesset sélectionnez-la.Cliquez sur Confirm New Authorization.
Utiliser une politique personnalisée
-
Créez une politique personnalisée.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, cliquez sur Script Editor, saisissez le script dans la zone de saisie, puis cliquez sur OK.
L'exemple de script suivant accorde des autorisations pour accéder à une seule instance. Personnalisez le script de la politique selon vos besoins, par exemple pour contrôler les autorisations au niveau de la table ou de l'API, ou en fonction de conditions telles que l'adresse IP ou l'heure d'accès. Pour plus d'informations sur les politiques RAM, consultez Politiques RAM personnalisées .
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": "acs:ots:*:*:instance/your_instance_name*" } ] } Dans la boîte de dialogue Create Policy, saisissez un nom de politique tel que
TestRAMPolicy, puis cliquez sur OK.
-
Accordez la politique personnalisée au rôle RAM.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Roles, recherchez le rôle RAM cible.
Cliquez sur Attach Policy à côté du rôle RAM, ou cliquez sur le nom du rôle pour accéder à sa page de détails, puis cliquez sur Grant Permission dans la section Permissions.
Dans le panneau Grant Permission, dans la section Access Policy, recherchez et sélectionnez la politique d'accès personnalisée que vous avez créée.
Cliquez sur Confirm.
Vous pouvez consulter les politiques accordées dans l'onglet Permissions de la page des détails du rôle.
Étape 3 : Créer un utilisateur RAM
Créez un utilisateur RAM pour endosser le rôle RAM.
Connectez-vous à la console RAM en utilisant votre compte Alibaba Cloud ou un utilisateur RAM disposant d'autorisations administratives.
Dans le volet de navigation de gauche, sélectionnez Identities > Users.
Sur la page Users, cliquez sur Create User.
-
Sur la page Create User, dans la section User Account Information, configurez les informations de base de l'utilisateur :
Logon Name : Le nom de connexion peut contenir des lettres, des chiffres, des points (.), des tirets (-) et des traits de soulignement (_). Sa longueur maximale est de 64 caractères.
Display Name : Le nom d'affichage peut comporter jusqu'à 128 caractères.
Tag : Cliquez sur l'icône
et saisissez une clé de tag et une valeur de tag. L'ajout d'un tag vous aide à rechercher et gérer l'utilisateur RAM.
RemarqueVous pouvez cliquer sur Add User pour créer plusieurs utilisateurs RAM en lot.
-
Dans la section Access Mode, sélectionnez Programmatic Access, puis cliquez sur OK.
RemarquePour permettre à l'utilisateur RAM de se connecter à la console Alibaba Cloud Management Console, sélectionnez Console Access.
-
Dans la colonne Actions, cliquez sur Copy pour enregistrer les informations de l'utilisateur RAM. Vous pouvez également copier individuellement l'ID AccessKey et la clé secrète AccessKey.
ImportantLa clé secrète AccessKey n'est affichée qu'une seule fois lors de la création et ne peut pas être récupérée ultérieurement. Stockez-la immédiatement dans un emplacement sécurisé.
Étape 4 : Accorder à l'utilisateur RAM l'autorisation d'appeler AssumeRole
Pour endosser un rôle RAM, l'utilisateur RAM doit disposer de l'autorisation d'appeler AssumeRole.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Users, recherchez l'utilisateur RAM cible.
Cliquez sur Add Permissions à côté de l'utilisateur RAM, ou cliquez sur le nom de l'utilisateur pour accéder à sa page de détails, puis cliquez sur Grant Permission dans l'onglet Permission Management.
Dans la section access policy du panneau Grant Permission, recherchez
AliyunSTSAssumeRoleAccesset sélectionnez-la.Cliquez sur Confirm.
Étape 5 : Utiliser l'utilisateur RAM pour endosser le rôle RAM et obtenir des identifiants temporaires
Avant d'accéder aux ressources, utilisez l'utilisateur RAM pour endosser le rôle RAM et obtenir des identifiants temporaires. Ces identifiants ne sont valides que pendant leur période de validité. Cet exemple utilise Java.
Vous pouvez également directement appeler l'opération AssumeRole dans OpenAPI Explorer pour obtenir des identifiants temporaires.
Préparatifs
-
Ajoutez la dépendance suivante à votre projet Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.6</version> </dependency> -
Configurez les variables d'environnement. Une fois la configuration terminée, redémarrez ou actualisez votre environnement de compilation et d'exécution, y compris l'IDE, l'interface de ligne de commande, les autres applications de bureau et les services en arrière-plan, afin de garantir que les dernières variables d'environnement système sont correctement chargées.
Linux
-
Exécutez les commandes suivantes dans l'interface de ligne de commande pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour prendre en compte les modifications :
source ~/.bashrc -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
macOS
-
Exécutez la commande suivante dans le terminal pour vérifier le type de Shell par défaut.
echo $SHELL -
Effectuez les opérations en fonction du type de Shell par défaut.
Zsh
-
Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour prendre en compte les modifications :
source ~/.zshrc -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Bash
-
Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour prendre en compte les modifications :
source ~/.bash_profile -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
-
Windows
CMD
-
Exécutez les commandes suivantes dans CMD pour définir les variables d'environnement.
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" -
Après avoir redémarré CMD, exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% echo %TABLESTORE_STS_ROLE_ARN%
PowerShell
-
Exécutez la commande suivante dans 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) -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
[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)
-
Exemple de code
L'exemple de code suivant utilise un utilisateur RAM pour endosser un rôle RAM, obtient des informations d'identification temporaires STS et les affiche dans la console. Ces informations d'identification sont valables pendant une heure.
Pour obtenir la liste des endpoints STS, consultez la page 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);
}
}
}
Pour consulter les SDK STS et des exemples de code dans d'autres langages, reportez-vous à la page Overview of STS SDKs.
Étape 6 : Accéder au service en utilisant des informations d'identification temporairesTablestore
Prérequis
Créez une instance et des tables de données dans la console Tablestore.
-
Récupérez le nom de l'instance, l'endpoint de l'instance et l'ID de région.
ImportantPar défaut, l'accès au réseau public n'est pas activé pour les nouvelles instances. Si vous avez besoin d'un accès au réseau public, activez l'accès au réseau public pour l'instance.
-
Configurez les variables d'environnement. Une fois la configuration terminée, redémarrez ou actualisez votre environnement de compilation et d'exécution, y compris l'IDE, l'interface de ligne de commande, les autres applications de bureau et les services d'arrière-plan, afin de garantir que les dernières variables d'environnement système sont correctement chargées.
Linux
-
Exécutez les commandes suivantes dans l'interface de ligne de commande pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour appliquer les modifications :
source ~/.bashrc -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
macOS
-
Exécutez la commande suivante dans le terminal pour vérifier le type de Shell par défaut.
echo $SHELL -
Effectuez les opérations correspondantes en fonction du type de Shell par défaut.
Zsh
-
Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour appliquer les modifications :
source ~/.zshrc -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Bash
-
Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier
~/.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 -
Exécutez la commande suivante pour appliquer les modifications :
source ~/.bash_profile -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
-
Windows
CMD
-
Exécutez les commandes suivantes dans CMD pour définir les variables d'environnement.
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" -
Après avoir redémarré CMD, exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET% echo %TABLESTORE_SESSION_TOKEN%
PowerShell
-
Exécutez la commande suivante dans 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) -
Exécutez les commandes suivantes pour vérifier si les variables d'environnement sont prises en compte :
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
-
-
Installez le SDK Tablestore pour votre langage de programmation.
Java
Si vous utilisez Maven, ajoutez la dépendance suivante au fichier pom.xml de votre projet :
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>5.17.4</version> </dependency>
Pour plus d'informations, consultez la page Install Tablestore SDK for Java.
Go
Exécutez la commande
go mod init <DIRNAME>dans le répertoire du projet pour générer le fichier go.mod. Ensuite, exécutez la commande suivante pour installer le SDK Tablestore pour Go :Remarque<DIRNAME>indique le chemin du répertoire du projet. Remplacez <DIRNAME> par le chemin réel du répertoire de votre projet.go get github.com/aliyun/aliyun-tablestore-go-sdk/tablestore
Pour plus d'informations, consultez la page Install Tablestore SDK for Go.
Python
Exécutez la commande suivante pour installer le SDK Tablestore pour Python à l'aide de pip :
sudo pip install tablestore
Pour plus d'informations, consultez la page Install Tablestore SDK for Python.
Node.js
Exécutez la commande suivante pour installer le SDK Tablestore pour Node.js :
npm install tablestore
Pour plus d'informations, consultez la page Install Tablestore SDK for Node.js.
.NET
Pour plus de détails, consultez la page Install Tablestore SDK for .NET.
PHP
Pour plus de détails, consultez la page Install Tablestore SDK for PHP.
Modèle de table large
Lorsque vous utilisez le modèle de table large, initialisez le client de table large avec des identifiants temporaires STS et envoyez les requêtes.
Java
Signature V4 (recommandée)
L'exemple de code Java suivant initialise un client à l'aide de la signature V4 et répertorie tous les noms de table dans l'instance.
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();
}
}
Signature V2
L'exemple de code Java suivant initialise un client à l'aide de la signature V2 et répertorie tous les noms de table dans l'instance.
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
L'exemple de code Go suivant initialise un client et répertorie tous les noms de table dans l'instance.
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
L'exemple de code Python suivant initialise un client et répertorie tous les noms de table dans l'instance.
# -*- 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
L'exemple de code Node.js suivant initialise un client et répertorie tous les noms de table dans l'instance.
// 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
L'exemple de code PHP suivant initialise un client et répertorie tous les noms de table dans l'instance.
<?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);
Modèle de série temporelle
Lorsque vous utilisez le modèle de série temporelle, initialisez le client de série temporelle avec des identifiants temporaires STS et envoyez les requêtes. Le modèle de série temporelle est pris en charge par Java, Go et Python.
Java
Signature V4 (recommandée)
L'exemple de code Java suivant initialise un client à l'aide de la signature V4 et répertorie tous les noms de table de série temporelle dans l'instance.
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();
}
}
Signature V2
L'exemple de code Java suivant initialise un client à l'aide de la signature V2 et répertorie tous les noms de table de série temporelle dans l'instance.
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
L'exemple de code Go suivant initialise un client et répertorie tous les noms de table de série temporelle dans l'instance.
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
L'exemple de code Python suivant initialise un client et répertorie tous les noms de table de série temporelle dans l'instance.
# -*- 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)