Tous les produits
Search
Centre de documentation

Tablestore:Use STS temporary credentials to access Tablestore

Dernière mise à jour :Aug 08, 2026

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

  1. Connectez-vous à la console Resource Access Management (RAM) en utilisant votre compte Alibaba Cloud (compte principal) ou en tant qu'administrateur RAM.

  2. Dans le volet de navigation de gauche, sélectionnez Identities > Roles pour accéder à la page Roles.

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

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

Remarque

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.

  1. Dans le volet de navigation de gauche, sélectionnez Identities > Roles.

  2. Sur la page Roles, recherchez le rôle RAM cible.

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

  4. Dans le panneau Grant Permission, dans la section Access Policy, recherchez AliyunOTSFullAccess et sélectionnez-la.

  5. Cliquez sur Confirm New Authorization.

Utiliser une politique personnalisée

  1. Créez une politique personnalisée.

    1. Dans le volet de navigation de gauche, sélectionnez Permissions > Policies.

    2. Sur la page Policies, cliquez sur Create Policy.

    3. 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*"
          }
        ]
      }
    4. Dans la boîte de dialogue Create Policy, saisissez un nom de politique tel que TestRAMPolicy, puis cliquez sur OK.

  1. Accordez la politique personnalisée au rôle RAM.

    1. Dans le volet de navigation de gauche, sélectionnez Identities > Roles.

    2. Sur la page Roles, recherchez le rôle RAM cible.

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

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

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

  1. Connectez-vous à la console RAM en utilisant votre compte Alibaba Cloud ou un utilisateur RAM disposant d'autorisations administratives.

  2. Dans le volet de navigation de gauche, sélectionnez Identities > Users.

  3. Sur la page Users, cliquez sur Create User.

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

    Remarque

    Vous pouvez cliquer sur Add User pour créer plusieurs utilisateurs RAM en lot.

  5. Dans la section Access Mode, sélectionnez Programmatic Access, puis cliquez sur OK.

    Remarque

    Pour permettre à l'utilisateur RAM de se connecter à la console Alibaba Cloud Management Console, sélectionnez Console Access.

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

    Important

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

  1. Dans le volet de navigation de gauche, sélectionnez Identities > Users.

  2. Sur la page Users, recherchez l'utilisateur RAM cible.

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

  4. Dans la section access policy du panneau Grant Permission, recherchez AliyunSTSAssumeRoleAccess et sélectionnez-la.

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

  1. Ajoutez la dépendance suivante à votre projet Maven.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>sts20150401</artifactId>
        <version>1.1.6</version>
    </dependency>
  2. 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

    1. 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
    2. Exécutez la commande suivante pour prendre en compte les modifications :

      source ~/.bashrc
    3. 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

    1. Exécutez la commande suivante dans le terminal pour vérifier le type de Shell par défaut.

      echo $SHELL
    2. Effectuez les opérations en fonction du type de Shell par défaut.

      Zsh

      1. 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
      2. Exécutez la commande suivante pour prendre en compte les modifications :

        source ~/.zshrc
      3. 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

      1. 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
      2. Exécutez la commande suivante pour prendre en compte les modifications :

        source ~/.bash_profile
      3. 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

    1. 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"
    2. 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

    1. 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)
    2. 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

  1. Créez une instance et des tables de données dans la console Tablestore.

  2. Récupérez le nom de l'instance, l'endpoint de l'instance et l'ID de région.

    Important

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

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

    1. 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
    2. Exécutez la commande suivante pour appliquer les modifications :

      source ~/.bashrc
    3. 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

    1. Exécutez la commande suivante dans le terminal pour vérifier le type de Shell par défaut.

      echo $SHELL
    2. Effectuez les opérations correspondantes en fonction du type de Shell par défaut.

      Zsh

      1. 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
      2. Exécutez la commande suivante pour appliquer les modifications :

        source ~/.zshrc
      3. 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

      1. 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
      2. Exécutez la commande suivante pour appliquer les modifications :

        source ~/.bash_profile
      3. 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

    1. 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"
    2. 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

    1. 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)
    2. 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)
  4. 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)

FAQ

Q : Comment résoudre l'erreur You are not authorized to do this action. You should be authorized by RAM. ?

Lorsqu'un utilisateur RAM endosse un rôle RAM pour obtenir des identifiants temporaires, vous devez utiliser la paire AccessKey (AccessKey ID et AccessKey Secret) de l'utilisateur RAM. N'utilisez pas la paire AccessKey du compte Alibaba Cloud.

Q : Comment résoudre l'erreur The Min/Max value of DurationSeconds is 15min/1hr. ?

Cette erreur se produit lorsque la période de validité de l'identifiant temporaire dépasse la plage autorisée. Respectez les règles suivantes :

  • Si vous n'avez pas personnalisé la durée maximale de session du rôle, la valeur par défaut est de 3 600 secondes. Dans ce cas, la valeur minimale pour durationSeconds est de 900 secondes et la valeur maximale est de 3 600 secondes.

  • Si vous avez personnalisé la durée maximale de session du rôle, la valeur minimale pour durationSeconds est de 900 secondes et la valeur maximale correspond à la durée maximale de session du rôle. La durée maximale de session du rôle peut être définie entre 3 600 et 43 200 secondes.

Vous pouvez afficher la durée maximale de session du rôle dans la console RAM.

Q : Comment résoudre l'erreur The security token you provided is invalid. ?

Assurez-vous d'avoir saisi le SecurityToken complet et vérifiez que vos variables d'environnement sont correctement configurées.

Q : Puis-je obtenir plusieurs identifiants temporaires simultanément ?

Oui. Chaque requête renvoie un identifiant temporaire. Pour obtenir plusieurs identifiants, envoyez plusieurs requêtes. Vous pouvez utiliser tous les identifiants obtenus simultanément pendant leurs périodes de validité.

Q : Que faire si je reçois une exception Request denied by instance ACL policies lors de l'accès à Tablestore via le SDK ?

Le type de réseau utilisé par votre client ne répond pas aux exigences d'accès au réseau de l'instance. Sur la page Instance Management de la console Tablestore, accédez à l'onglet Network Management et définissez les Allowed Network Types. Pour plus d'informations, consultez Gérer les exceptions « Request denied by instance ACL policies » lors de l'accès à Tablestore via le SDK.