Security Token Service (STS) を使用して、他のユーザーが指定された有効期間内に Tablestore リソースにアクセスできるようにする一時的なアクセス認証情報を発行できます。一時的なアクセス認証情報は、長期キーを公開する必要がなく、有効期限後に自動的に期限切れになるため、Tablestore リソースにアクセスする際のセキュリティと柔軟性が向上します。
背景情報
RAM ロール は、特定のリソースへのアクセス権限を付与できる仮想ユーザーです。 RAM ユーザーとは異なり、RAM ロールには、ログオンパスワードや AccessKey ペアなどの永続的な ID 認証情報がありません。代わりに、ロールは、RAM ユーザーなどの信頼できるエンティティによって引き受けられる必要があります。ロールが正常に引き受けられると、信頼できるエンティティは、Security Token Service (STS) トークンの形式で一時的な ID 認証情報を取得します。このトークンを使用して、RAM ロールとして Tablestore にアクセスできます。
信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールは、アカウント間のアクセスと一時的な承認を実装するために使用されます。このトピックでは、同じ Alibaba Cloud アカウントの RAM ユーザーが RAM ロールを引き受ける例を使用して、STS からの一時的なアクセス認証情報を使用して Tablestore リソースにアクセスする方法について説明します。
手順
STS から取得した一時的なアクセス認証情報を使用して Tablestore にアクセスするには、まず、引き受ける RAM ロールを作成し、Tablestore にアクセスするための権限を付与します。次に、RAM ロールを引き受けて STS から一時的なアクセス認証情報を取得する RAM ユーザーを作成します。最後に、取得した一時的なアクセス認証情報を使用して、Tablestore リソースにアクセスするためのリクエストを開始します。
ステップ 1:RAM ロールの作成
Alibaba Cloud アカウントまたは RAM 管理者を使用して、RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、 を選択します。[ロール] ページが表示されます。
[ロールの作成] をクリックし、信頼できるエンティティ情報を構成して、[OK] をクリックします。
パラメーター
サンプル値
プリンシパルタイプ
クラウドアカウント
プリンシパル名
現在のアカウント
[ロールの作成] ダイアログボックスで、[ロール名] を
RamTablestoreに設定し、[OK] をクリックします。
STS から一時的なアクセス認証情報を取得するには、RAM ロールの ARN を指定する必要があります。 ARN を取得するには、ロールリストでロール名をクリックして、ロールの詳細ページに移動します。次に、[基本情報] セクションで ARN を見つけてコピーします。

ステップ 2:RAM ロールに Tablestore 権限を付与する
デフォルトポリシーを使用する
この例では、AliyunOTSFullAccess ポリシーが RAM ロールにアタッチされ、Tablestore にアクセスするための権限が付与されます。
AliyunOTSFullAccess ポリシーには、Tablestore へのフルアクセス権限が含まれています。次の方法で権限を付与することもできます。
読み取り専用アクセスを許可するには、
AliyunOTSReadOnlyAccessポリシーを RAM ロールにアタッチします。書き込み専用アクセスが必要な場合は、
AliyunOTSWriteOnlyAccess権限を RAM ロールに付与します。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、ターゲット RAM ロールを見つけます。
RAM ロールの [操作] 列で [権限の付与] をクリックするか、ロール名をクリックしてロールの詳細ページに移動し、[権限の付与] セクションの [権限管理] をクリックします。
[権限の付与] パネルの [ポリシー] セクションで、
AliyunOTSFullAccessを検索して選択します。[権限の付与] をクリックします。
カスタムポリシーを使用する
カスタムの Resource Access Management (RAM) ポリシーを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[スクリプトエディター] をクリックし、テキストボックスにスクリプトを記述して、[OK] をクリックします。
次のサンプルスクリプトでは、RAM ロールが特定のインスタンスにアクセスできます。ビジネス要件に基づいてカスタムポリシースクリプトを指定できます。たとえば、RAM ロールにテーブルへのアクセスや API 操作の呼び出しを許可することができます。また、特定の IP アドレスからのみ、または特定の時点より前に Tablestore にアクセスするための権限を RAM ロールに付与することもできます。 RAM ポリシーの詳細については、「カスタムポリシーを作成する」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", // 許可 "Action": "ots:*", // アクション "Resource": "acs:ots:*:*:instance/your_instance_name*" // リソース } ] }[ポリシーの作成] ダイアログボックスで、ポリシー名(例:
TestRAMPolicy)を入力し、[OK] をクリックします。
カスタムポリシーを RAM ロールにアタッチします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、ターゲット RAM ロールを見つけます。
RAM ロールの右側にある [権限の付与] をクリックするか、ロール名をクリックしてロールの詳細ページに移動し、[権限の付与] エリアの [権限管理] をクリックします。
[権限の付与] パネルの [ポリシー] セクションで、作成したカスタムポリシーを検索して選択します。
[権限の付与] をクリックします。
ロールリストでロール名をクリックすると、ロールの詳細ページに移動できます。[権限] タブで、アタッチされている権限ポリシーを表示できます。

ステップ 3:RAM ユーザーの作成
RAM ロールを引き受ける RAM ユーザーを作成します。
Alibaba Cloud アカウント、または管理者権限を持つ RAM ユーザーを使用して、Resource Access Management (RAM) コンソール にログオンします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、[ユーザーの作成] をクリックします。
[ユーザーの作成] ページの [ユーザーアカウント情報] セクションで、次のパラメーターを構成します。
[ログオン名]:ログオン名は最大 64 文字で、文字、数字、ピリオド(.)、ハイフン (-)、アンダースコア (_) を使用できます。
[表示名]:表示名は最大 128 文字です。
[タグ]:
をクリックし、タグキーとタグ値を入力します。 RAM ユーザーに 1 つ以上のタグを追加できます。これにより、タグに基づいて RAM ユーザーを管理できます。
説明[ユーザーの追加] をクリックすると、複数の RAM ユーザーを同時に作成できます。
[アクセスモード] セクションで、[プログラムによるアクセス] を選択し、[OK] をクリックします。
説明RAM ユーザーとして Alibaba Cloud 管理コンソールにログオンしてアクセスする場合は、[コンソールアクセス] を選択します。
[操作] 列で [コピー] をクリックして、RAM ユーザーの情報を保存します。AccessKey ID と AccessKey シークレットを個別にコピーできます。
重要RAM ユーザーの AccessKey シークレットは、AccessKey ペアを作成したときにのみ表示されます。 [ユーザーの作成] ページを閉じた後、AccessKey シークレットを照会することはできません。 AccessKey シークレットを記録し、安全な場所に保管してください。
ステップ 4:RAM ユーザーに AssumeRole 権限を付与する
RAM ユーザーが RAM ロールを引き受けるには、AssumeRole 権限が必要です。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、ターゲット RAM ユーザーを見つけます。
RAM ユーザーの右側にある [権限の追加] をクリックするか、ユーザー名をクリックしてユーザーの詳細ページに移動し、[権限管理] タブで [権限の付与] をクリックします。
[権限の付与] パネルの [ポリシー] セクションで、
AliyunSTSAssumeRoleAccessを検索して選択します。[権限の付与] をクリックします。
ステップ 5:RAM ユーザーとして RAM ロールを引き受けて、STS から一時的なアクセス認証情報を取得する
Tablestore リソースにアクセスする前に、RAM ユーザーとして RAM ロールを引き受けて、STS から一時的なアクセス認証情報を取得する必要があります。一時的なアクセス認証情報は、指定された有効期間内であれば有効です。このセクションでは、Java を例として、具体的な操作を紹介します。
OpenAPI Explorer で AssumeRole 操作を呼び出すことによっても、一時的なアクセス認証情報を取得できます。
準備
次の依存関係を Maven プロジェクトに追加します。
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.6</version> </dependency>環境変数を構成します。構成が完了したら、IDE、コマンドラインインターフェイス、その他のデスクトップアプリケーション、バックグラウンドサービスなど、コンパイル環境とランタイム環境を再起動またはリフレッシュして、最新のシステム環境変数が正常にロードされていることを確認します。
Linux
コマンドラインインターフェイスで次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.bashrc環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを確認します。
echo $SHELLデフォルトのシェルタイプに基づいて操作を実行します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.zshrc環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Bash
次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.bash_profile環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET echo $TABLESTORE_STS_ROLE_ARN
Windows
CMD
CMD で次のコマンドを実行して、環境変数を設定します。
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"CMD を再起動した後、次のコマンドを実行して、環境変数が有効になっているかどうかを確認します。
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% echo %TABLESTORE_STS_ROLE_ARN%
PowerShell
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)次のコマンドを実行して、環境変数が有効になっているかどうかを確認します。
[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)
サンプルコード
次のサンプルコードは、RAM ユーザーとして RAM ロールを引き受けることによって STS から一時的なアクセス認証情報を取得し、Tablestore コンソールに一時的なアクセス認証情報を表示する方法を示しています。この例では、一時的なアクセス認証情報の有効期間は 1 時間です。
STS エンドポイントについては、「エンドポイント」をご参照ください。
import com.aliyun.sts20150401.models.AssumeRoleResponse;
import com.aliyun.tea.*;
public class AssumeRoleSample {
public static com.aliyun.sts20150401.Client createClient() throws Exception {
// プロジェクトコードが漏洩した場合、AccessKey ペアが公開され、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。次のサンプルコードは参照用としてのみ提供されています。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が構成されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// STS エンドポイントを指定します。
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()
// 一時的なアクセス認証情報の有効期間を指定します。単位:秒。最小有効期間は 900 秒です。最大有効期間は、現在のロールに指定されている最大セッション期間と同じです。現在のロールの最大セッション期間は 3,600 ~ 43,200 秒です。現在のロールのデフォルトの最大セッション期間は 3,600 秒です。
.setDurationSeconds(3600L)
// 必須。TABLESTORE_STS_ROLE_ARN 環境変数が構成されていることを確認してください。環境変数は、RAM ロールの ARN を指定します。
.setRoleArn(System.getenv("TABLESTORE_STS_ROLE_ARN"))
// 必須。異なるトークンを区別するために、ロールのセッション名を指定します。
.setRoleSessionName("RAMTablestore");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// STS から一時的なアクセス認証情報を取得し、一時的なアクセス認証情報を表示します。一時的なアクセス認証情報は安全な場所に保管してください。
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) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用としてのみ提供されています。
// エラーメッセージ。
System.out.println(error.getMessage());
// トラブルシューティング用の URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用としてのみ提供されています。
// エラーメッセージ。
System.out.println(error.getMessage());
// トラブルシューティング用の URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}その他のプログラミング言語の STS SDK とコード例については、「STS SDK の概要」をご参照ください。
ステップ 6:一時的なアクセス認証情報を使用して Tablestore にアクセスする
準備
Tablestore コンソール でインスタンスとデータテーブルを作成します。
インスタンス名、インスタンスエンドポイント、および リージョン ID を取得します。
重要デフォルトでは、新しく作成されたインスタンスのパブリックネットワークアクセスは無効になっています。パブリックネットワーク経由でインスタンス内のリソースにアクセスする必要がある場合は、インスタンスのパブリックネットワークアクセスを有効にする 必要があります。
環境変数を構成します。構成が完了したら、IDE、コマンドラインインターフェイス、その他のデスクトップアプリケーション、バックグラウンドサービスなど、コンパイル環境とランタイム環境を再起動またはリフレッシュして、最新のシステム環境変数が正常にロードされていることを確認します。
Linux
コマンドラインインターフェイスで次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.bashrc環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを確認します。
echo $SHELLデフォルトのシェルタイプに基づいて操作を実行します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.zshrc環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Bash
次のコマンドを実行して、環境変数の設定を
~/.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変更を有効にするには、次のコマンドを実行します。
source ~/.bash_profile環境変数が有効になっているかどうかを確認するには、次のコマンドを実行します。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Windows
CMD
CMD で次のコマンドを実行して、環境変数を設定します。
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"CMD を再起動した後、次のコマンドを実行して、環境変数が有効になっているかどうかを確認します。
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET% echo %TABLESTORE_SESSION_TOKEN%
PowerShell
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)次のコマンドを実行して、環境変数が有効になっているかどうかを確認します。
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
必要なプログラミング言語の Tablestore SDK をインストールします。
Java
Maven を使用して Java プロジェクトを管理する場合は、次の依存関係を pom.xml ファイルに追加します。
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>5.17.4</version> </dependency>詳細については、「Tablestore Java SDK をインストールする」をご参照ください。
Go
プロジェクトディレクトリで
go mod init <DIRNAME>コマンドを実行して、go.mod ファイルを生成します。次に、次のコマンドを実行して、Go 用の Tablestore SDK をインストールします。説明<DIRNAME>はプロジェクトディレクトリパスを示します。<DIRNAME> を実際のプロジェクトディレクトリパスに置き換えます。go get github.com/aliyun/aliyun-tablestore-go-sdk/tablestore詳細については、「Tablestore Go SDK をインストールする」をご参照ください。
Python
次のコマンドを実行して、pip を使用して Python 用の Tablestore SDK をインストールします。
sudo pip install tablestore詳細については、「Tablestore Python SDK をインストールする」をご参照ください。
Node.js
npm を使用して次のコマンドを実行し、Node.js 用の Tablestore SDK をインストールします。
npm install tablestore詳細については、「Tablestore Node.js SDK をインストールする」をご参照ください。
.NET
詳細については、「Tablestore .NET SDK をインストールする」をご参照ください。
PHP
詳細については、「Tablestore PHP SDK をインストールする」をご参照ください。
ワイドカラムモデル
ワイドカラムモデルを使用する場合は、STS から取得した一時的なアクセス認証情報を使用して、ワイドカラムモデルのクライアントを初期化し、リクエストを開始する必要があります。
Java
(推奨)V4 署名を使用する
次のサンプル Java コードは、V4 署名を使用してクライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
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) {
// インスタンスが存在するリージョンを指定します。例:cn-hangzhou。
final String region = "yourRegion"; // リージョン
// インスタンスの名前を指定します。
final String instanceName = "yourInstanceName"; // インスタンス名
// インスタンスのエンドポイントを指定します。
final String endpoint = "yourEndpoint"; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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");
// V4 署名を構築します。
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
// Tablestore クライアントを初期化します。
SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// ClientConfiguration を使用してデフォルトの構成を変更できます。次の例には、いくつかのカスタム構成が含まれています。
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // 接続を確立するためのタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setSocketTimeoutInMillisecond(5000); // ソケットタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // 再試行ポリシーを指定します。再試行ポリシーを指定しない場合は、デフォルトの再試行ポリシーが使用されます。
SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// Tablestore クライアントをシャットダウンします。
client.shutdown();
}
}V2 署名を使用する
次のサンプル Java コードは、V2 署名を使用してクライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
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) {
// インスタンスの名前を指定します。
final String instanceName = "yourInstanceName"; // インスタンス名
// インスタンスのエンドポイントを指定します。
final String endpoint = "yourEndpoint"; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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");
// V2 署名を構築します。
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
CredentialsProvider provider = new DefaultCredentialProvider(credentials);
// クライアントを初期化します。
SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// ClientConfiguration を使用してデフォルトの構成を変更できます。次の例には、具体的なカスタム構成が含まれています。
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // 接続を確立するためのタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setSocketTimeoutInMillisecond(5000); // ソケットタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // 再試行ポリシーを指定します。再試行ポリシーを指定しない場合は、デフォルトの再試行ポリシーが使用されます。
SyncClient client = new SyncClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// Tablestore クライアントをシャットダウンします。
client.shutdown();
}
}Go
次のサンプル Go コードは、クライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
// インスタンスの名前を指定します。
instanceName := "yourInstanceName" // インスタンス名
// インスタンスのエンドポイントを指定します。
endpoint := "yourEndpoint" // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
// クライアントを初期化します。
client := tablestore.NewClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil)
// インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
tables, err := client.ListTable()
if err != nil {
fmt.Println("Failed to list table.") // テーブルのリストを取得できませんでした。
} else {
for _, table := range (tables.TableNames) {
fmt.Println(table)
}
}
}Python
次のサンプル Python コードは、クライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# インスタンスの名前を指定します。
instance_name = "yourInstanceName" # インスタンス名
# インスタンスのエンドポイントを指定します。
endpoint = "yourEndpoint" # エンドポイント
# 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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")
# クライアントを初期化します。
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
resp = client.list_table()
for table_name in resp:
print(table_name)Node.js
次のサンプル Node.js コードは、クライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
// この例では、パスは相対パスです。ビジネス要件に基づいてパスを変更します。
var TableStore = require('../index.js');
// インスタンスの名前を指定します。
var instancename = 'yourInstanceName'; // インスタンス名
// インスタンスのエンドポイントを指定します。
var endpoint = 'yourEndpoint'; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID;
var accessKeySecret = process.env.TABLESTORE_ACCESS_KEY_SECRET;
var stsToken = process.env.TABLESTORE_SESSION_TOKEN;
// Tablestore クライアントを初期化します。
var client = new TableStore.Client({
accessKeyId: accessKeyId,
secretAccessKey: accessKeySecret,
stsToken: stsToken,
endpoint: endpoint,
instancename: instancename
});
// インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
client.listTable({}, function (err, data) {
if (err) {
console.log('error:', err); // エラー
return;
}
console.log('success:', data); // 成功
});PHP
次のサンプル PHP コードは、クライアントを初期化し、インスタンス内のデータテーブルのリストを照会する方法の例を示しています。
<?php
// この例では、パスは相対パスです。ビジネス要件に基づいてパスを変更します。
require (__DIR__ . '/../../vendor/autoload.php');
use Aliyun\OTS\OTSClient as OTSClient;
// インスタンスの名前を指定します。
$instanceName = "yourInstanceName"; // インスタンス名
// インスタンスのエンドポイントを指定します。
$endpoint = "yourEndpoint"; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID');
$accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');
$stsToken = getenv('TABLESTORE_SESSION_TOKEN');
// Tablestore クライアントを初期化します。
$otsClient = new OTSClient(array(
'EndPoint' => $endpoint,
'AccessKeyID' => $accessKeyId,
'AccessKeySecret' => $accessKeySecret,
'InstanceName' => $instanceName,
'StsToken' => $stsToken,
));
// インスタンス内のデータテーブルのリストを照会し、Tablestore コンソールにリストを表示します。
$response = $otsClient->listTable (array ());
print json_encode ($response);時系列モデル
時系列モデルを使用する場合は、STS から取得した一時的なアクセス認証情報を使用して、時系列モデルのクライアントを初期化し、リクエストを開始する必要があります。 Tablestore SDK for Java、Tablestore SDK for Go、および Tablestore SDK for Python のみが時系列モデルをサポートしています。
Java
(推奨)V4 署名を使用する
次のサンプル Java コードは、V4 署名を使用してクライアントを初期化し、インスタンス内の時系列テーブルのリストを照会する方法の例を示しています。
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) {
// インスタンスが存在するリージョンを指定します。例:cn-hangzhou。
final String region = "yourRegion"; // リージョン
// インスタンスの名前を指定します。
final String instanceName = "yourInstanceName"; // インスタンス名
// インスタンスのエンドポイントを指定します。
final String endpoint = "yourEndpoint"; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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");
// V4 署名を構築します。
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
// 時系列クライアントを初期化します。
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// ClientConfiguration を使用してデフォルトの構成を変更できます。次の例には、いくつかのカスタム構成が含まれています。
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // 接続を確立するためのタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setSocketTimeoutInMillisecond(5000); // ソケットタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // 再試行ポリシーを指定します。再試行ポリシーを指定しない場合は、デフォルトの再試行ポリシーが使用されます。
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// インスタンス内の時系列テーブルのリストを照会し、Tablestore コンソールにリストを表示します。
ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
// 時系列クライアントをシャットダウンします。
client.shutdown();
}
}V2 署名を使用する
次のサンプル Java コードは、V2 署名を使用してクライアントを初期化し、インスタンス内の時系列テーブルのリストを照会する方法の例を示しています。
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) {
// インスタンスの名前を指定します。
final String instanceName = "yourInstanceName"; // インスタンス名
// インスタンスのエンドポイントを指定します。
final String endpoint = "yourEndpoint"; // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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");
// V2 署名を構築します。
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret, securityToken);
CredentialsProvider provider = new DefaultCredentialProvider(credentials);
// クライアントを初期化します。
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
/*
// ClientConfiguration を使用してデフォルトの構成を変更できます。次の例には、具体的なカスタム構成が含まれています。
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setConnectionTimeoutInMillisecond(5000); // 接続を確立するためのタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setSocketTimeoutInMillisecond(5000); // ソケットタイムアウト期間を指定します。単位:ミリ秒。
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); // 再試行ポリシーを指定します。再試行ポリシーを指定しない場合は、デフォルトの再試行ポリシーが使用されます。
TimeseriesClient client = new TimeseriesClient(endpoint, provider, instanceName, clientConfiguration, new ResourceManager(null, null));
*/
// インスタンス内の時系列テーブルのリストを照会し、Tablestore コンソールにリストを表示します。
ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
listTimeseriesTableResponse.getTimeseriesTableNames().forEach(System.out::println);
// TimeSeriesClient をシャットダウンします。
client.shutdown();
}
}Go
次のサンプル Go コードは、クライアントを初期化し、インスタンス内の時系列テーブルのリストを照会する方法の例を示しています。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
func main() {
// インスタンスの名前を指定します。
instanceName := "yourInstanceName" // インスタンス名
// インスタンスのエンドポイントを指定します。
endpoint := "yourEndpoint" // エンドポイント
// 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
// クライアントを初期化します。
client := tablestore.NewTimeseriesClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, securityToken, nil, nil)
// インスタンス内の時系列テーブルのリストを照会し、Tablestore コンソールにリストを表示します。
timeseriesTables, err := client.ListTimeseriesTable()
if err != nil {
fmt.Println("Failed to list table.") // テーブルのリストを取得できませんでした。
} else {
for _, timeseriesTablesMeta := range (timeseriesTables.GetTimeseriesTableMeta()) {
fmt.Println(timeseriesTablesMeta.GetTimeseriesTableName())
}
}
}Python
次のサンプル Python コードは、クライアントを初期化し、インスタンス内の時系列テーブルのリストを照会する方法の例を示しています。
# -*- coding: utf-8 -*-
import os
from tablestore import OTSClient
# インスタンスの名前を指定します。
instance_name = "yourInstanceName" # インスタンス名
# インスタンスのエンドポイントを指定します。
endpoint = "yourEndpoint" # エンドポイント
# 環境変数から一時的な AccessKey ID、一時的な AccessKey シークレット、およびセキュリティトークンを取得します。
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")
# クライアントを初期化します。
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
# インスタンス内の時系列テーブルのリストを照会し、Tablestore コンソールにリストを表示します。
response = client.list_timeseries_table()
for tableMeta in response:
print(tableMeta.timeseries_table_name)