本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
您可以通過STS服務為其他用戶頒發一個臨時訪問憑證,用戶通過臨時訪問憑證可以在限定的有效期內,以符合策略規定的權限訪問Tablestore資源。超過有效期后,該憑證自動失效,無法繼續通過該憑證訪問Tablestore資源,確保了訪問控制的靈活性和時效性。
步驟一:創建RAM用戶
使用阿里云賬號(主賬號)或RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在用戶頁面,單擊創建用戶。
在創建用戶頁面的用戶賬號信息區域,設置用戶基本信息。
登錄名稱:可包含英文字母、數字、半角句號(.)、短劃線(-)和下劃線(_),最多64個字符。
顯示名稱:最多包含128個字符或漢字。
標簽:單擊,然后輸入標簽鍵和標簽值。為RAM用戶綁定標簽,便于后續基于標簽的用戶管理。
說明單擊添加用戶,可以批量創建多個RAM用戶。
在訪問方式區域,選中使用永久AccessKey訪問,然后單擊確定。
根據界面提示,完成安全驗證。
在保存AccessKey信息對話框,單擊確定。
單擊操作列的復制,保存訪問密鑰(AccessKey ID和AccessKey Secret)。
重要RAM用戶的AccessKey Secret只在創建時顯示,不支持查看,請妥善保管。
步驟二:為RAM用戶授予請求AssumeRole的權限
創建RAM用戶后,您需要授予RAM用戶通過扮演角色來調用STS服務的權限。
單擊已創建RAM用戶右側對應的添加權限。
在新增授權面板的權限策略區域,選擇AliyunSTSAssumeRoleAccess系統策略。
說明授予RAM用戶調用STS服務AssumeRole接口的固定權限是AliyunSTSAssumeRoleAccess,與后續獲取臨時訪問憑證以及通過臨時訪問憑證發起Tablestore請求所需權限無關。
單擊確認新增授權。
單擊關閉。
步驟三:創建RAM角色
您需要創建RAM角色,用于定義RAM角色被扮演時,可以獲得Tablestore服務的哪些訪問權限。
在左側導航欄,選擇身份管理>角色。
單擊創建角色,選擇可信實體類型為阿里云賬號,單擊下一步。
在創建角色對話框,填寫角色名稱為RamTablestoreTest,設置選擇信任的云賬號為當前云賬號。
單擊完成。角色創建完成后,單擊關閉。
在角色頁面,搜索框輸入角色名稱RamTablestoreTest,然后單擊RamTablestoreTest。
單擊ARN右側的復制,保存角色的ARN。
步驟四:為RAM角色授予表格存儲的只讀權限
為RAM角色附加一個或多個權限策略,明確RAM角色在被扮演時所能擁有的Tablestore資源訪問權限。例如,如果希望RAM用戶在扮演該角色后只能從Tablestore讀取數據,則需要為角色添加只讀權限的策略。
創建自定義權限策略。
在左側導航欄,選擇權限管理>權限策略。
在權限策略頁面,單擊創建權限策略。
在創建權限策略頁面,單擊腳本編輯,填寫策略配置,然后單擊確定。
警告以下示例僅供參考。您需要根據實際需求配置更細粒度的授權策略,防止出現權限過大的風險。更細粒度的授權策略配置,請參見自定義RAM Policy。
具體配置示例如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*", "ots:Consume*", "ots:Search", "ots:ComputeSplitPointsBySize" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app*" ], "Condition": {} } ] }
在創建權限策略對話框,填寫策略名稱為RamTestPolicy,然后單擊確定。
為RAM角色RamTablestoreTest授予自定義權限策略。
在左側導航欄,選擇
。在角色頁面,找到目標RAM角色RamTablestoreTest。
單擊RAM角色RamTablestoreTest右側的新增授權。
在新增授權面板的權限策略區域,選擇已創建的自定義權限策略RamTestPolicy。
單擊確認新增授權。
單擊關閉。
步驟五:使用RAM用戶扮演RAM角色獲取臨時訪問憑證
為角色授予只讀的權限后,RAM用戶需要通過扮演角色來獲取臨時訪問憑證。臨時訪問憑證包括安全令牌(SecurityToken)、臨時訪問密鑰(AccessKeyId和AccessKeySecret)以及過期時間(Expiration)。
使用STS SDK
您可以使用STS SDK來獲取臨時訪問憑證。
Java
本文以Java為例,說明如何使用STS SDK獲取臨時訪問憑證。
SDK 安裝信息
SDK 包名稱:com.aliyun/sts20150401
SDK包版本:1.1.4
SDK 包管理平臺:maven
SDK 安裝命令:
<dependency> <groupId>com.aliyun</groupId> <artifactId>sts20150401</artifactId> <version>1.1.4</version> </dependency>
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>使用AK&SK初始化賬號Client</p>
*
* @return Client
* @throws Exception
*/
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"));
// Endpoint 請參考 https://api.aliyun.com/product/Sts
config.endpoint = "sts.cn-hangzhou.aliyuncs.com";
return new com.aliyun.sts20150401.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.sts20150401.Client client = Sample.createClient();
com.aliyun.sts20150401.models.AssumeRoleRequest assumeRoleRequest = new com.aliyun.sts20150401.models.AssumeRoleRequest()
// 臨時訪問憑證的有效時間,單位為秒。最小值為900,最大值以當前角色設定的最大會話時間為準。當前角色最大會話時間取值范圍為3600秒~43200秒,默認值為3600秒。
.setDurationSeconds(3600L)
// 角色外部 ID。該參數為外部提供的用于表示角色的參數信息,主要功能是防止混淆代理人問題。
//.setExternalId(null)
// 為STS Token額外添加的一個權限策略,進一步限制STS Token的權限。
//.setPolicy(null)
// 必填,請確保代碼運行環境設置了環境變量 TABLESTORE_STS_ROLE_ARN。即步驟3生成的RAM角色的RamRoleArn。
.setRoleArn(System.getenv("TABLESTORE_STS_ROLE_ARN"))
// 自定義角色會話名稱,用來區分不同的令牌。
.setRoleSessionName("yourRoleSessionName");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.assumeRoleWithOptions(assumeRoleRequest, runtime);
} catch (TeaException error) {
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
Go
本文以Go為例,說明如何使用STS SDK獲取臨時訪問憑證。
SDK 安裝信息
SDK 包名稱:github.com/alibabacloud-go/sts-20150401/v2
SDK包版本:v2.0.2
SDK 包管理平臺:github
SDK 安裝命令:
go get github.com/alibabacloud-go/sts-20150401/v2
package main
import (
"encoding/json"
"strings"
"fmt"
"os"
sts20150401 "github.com/alibabacloud-go/sts-20150401/v2/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)
// Description:
//
// 使用AK&SK初始化賬號Client
//
// @return Client
//
// @throws Exception
func CreateClient () (_result *sts20150401.Client, _err error) {
// 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
config := &openapi.Config{
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
// Endpoint 請參考 https://api.aliyun.com/product/Sts
config.Endpoint = tea.String("sts.cn-hangzhou.aliyuncs.com")
_result = &sts20150401.Client{}
_result, _err = sts20150401.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
assumeRoleRequest := &sts20150401.AssumeRoleRequest{
// 必填,請確保代碼運行環境設置了環境變量 TABLESTORE_STS_ROLE_ARN。即步驟3生成的RAM角色的RamRoleArn。
RoleArn: tea.String(os.Getenv("TABLESTORE_STS_ROLE_ARN")),
// 臨時訪問憑證的有效時間,單位為秒。最小值為900,最大值以當前角色設定的最大會話時間為準。當前角色最大會話時間取值范圍為3600秒~43200秒,默認值為3600秒。
DurationSeconds: tea.Int64(3600),
// 為STS Token額外添加的一個權限策略,進一步限制STS Token的權限。
//Policy: ,
// 自定義角色會話名稱,用來區分不同的令牌。
RoleSessionName: tea.String("yourRoleSessionName"),
// 角色外部 ID。該參數為外部提供的用于表示角色的參數信息,主要功能是防止混淆代理人問題
//ExternalId: ,
}
runtime := &util.RuntimeOptions{}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 復制代碼運行請自行打印 API 的返回值
_, _err = client.AssumeRoleWithOptions(assumeRoleRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
fmt.Println(tea.StringValue(error.Message))
// 診斷地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return _err
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
Python
本文以Python為例,說明如何使用STS SDK獲取臨時訪問憑證。
SDK 安裝信息
SDK 包名稱:alibabacloud_sts20150401
SDK包版本:1.1.4
SDK 包管理平臺:pypi
SDK 安裝命令:
pip install alibabacloud_sts20150401==1.1.4
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
from typing import List
from alibabacloud_sts20150401.client import Client as Sts20150401Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_sts20150401 import models as sts_20150401_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> Sts20150401Client:
"""
使用AK&SK初始化賬號Client
@return: Client
@throws Exception
"""
# 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
config = open_api_models.Config(
# 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# Endpoint 請參考 https://api.aliyun.com/product/Sts
config.endpoint = f'sts.cn-hangzhou.aliyuncs.com'
return Sts20150401Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
assume_role_request = sts_20150401_models.AssumeRoleRequest(
# 臨時訪問憑證的有效時間,單位為秒。最小值為900,最大值以當前角色設定的最大會話時間為準。當前角色最大會話時間取值范圍為3600秒~43200秒,默認值為3600秒。
duration_seconds=3600,
# 角色外部ID。該參數為外部提供的用于表示角色的參數信息,主要功能是防止混淆代理人問題。
# external_id=None,
# 為STS Token額外添加的一個權限策略,進一步限制STS Token的權限。
# policy=None,
# 必填,請確保代碼運行環境設置了環境變量 TABLESTORE_STS_ROLE_ARN。即步驟3生成的RAM角色的RamRoleArn。
role_arn=os.environ['TABLESTORE_STS_ROLE_ARN'],
# 自定義角色會話名稱,用來區分不同的令牌。
role_session_name="yourRoleSessionName"
)
runtime = util_models.RuntimeOptions()
try:
# 復制代碼運行請自行打印 API 的返回值
client.assume_role_with_options(assume_role_request, runtime)
except Exception as error:
# 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
assume_role_request = sts_20150401_models.AssumeRoleRequest()
runtime = util_models.RuntimeOptions()
try:
# 復制代碼運行請自行打印 API 的返回值
await client.assume_role_with_options_async(assume_role_request, runtime)
except Exception as error:
# 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
Node.js
本文以Node.js為例,說明如何使用STS SDK獲取臨時訪問憑證。
SDK 安裝信息
SDK 包名稱:@alicloud/sts20150401
SDK包版本:1.1.4
SDK 包管理平臺:npm
SDK 安裝命令:
npm install @alicloud/sts20150401@1.1.4
'use strict';
const Sts20150401 = require('@alicloud/sts20150401');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');
class Client {
/**
* 使用AK&SK初始化賬號Client
* @return Client
* @throws Exception
*/
static createClient() {
// 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
let config = new OpenApi.Config({
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// Endpoint 請參考 https://api.aliyun.com/product/Sts
config.endpoint = `sts.cn-hangzhou.aliyuncs.com`;
return new Sts20150401.default(config);
}
static async main(args) {
let client = Client.createClient();
let assumeRoleRequest = new Sts20150401.AssumeRoleRequest({
// 臨時訪問憑證的有效時間,單位為秒。最小值為900,最大值以當前角色設定的最大會話時間為準。當前角色最大會話時間取值范圍為3600秒~43200秒,默認值為3600秒。
durationSeconds: 3600,
// 角色外部ID。該參數為外部提供的用于表示角色的參數信息,主要功能是防止混淆代理人問題。
//externalId: null,
// 為STS Token額外添加的一個權限策略,進一步限制STS Token的權限。
//policy: null,
// 必填,請確保代碼運行環境設置了環境變量 TABLESTORE_STS_ROLE_ARN。即步驟3生成的RAM角色的RamRoleArn。
roleArn: process.env.TABLESTORE_STS_ROLE_ARN,
//自定義角色會話名稱,用來區分不同的令牌。
roleSessionName: 'yourRoleSessionName'
});
let runtime = new Util.RuntimeOptions({ });
try {
// 復制代碼運行請自行打印 API 的返回值
await client.assumeRoleWithOptions(assumeRoleRequest, runtime);
} catch (error) {
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
console.log(error.message);
// 診斷地址
console.log(error.data["Recommend"]);
Util.default.assertAsString(error.message);
}
}
}
exports.Client = Client;
Client.main(process.argv.slice(2));
PHP
本文以PHP為例,說明如何使用STS SDK獲取臨時訪問憑證。
SDK 安裝信息
SDK 包名稱:alibabacloud/sts-20150401
SDK包版本:1.1.4
SDK 包管理平臺:packagist
SDK 安裝命令:
composer require alibabacloud/sts-20150401 1.1.4
<?php
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Sts\V20150401\Sts;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Sts\V20150401\Models\AssumeRoleRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* 使用AK&SK初始化賬號Client
* @return Sts Client
*/
public static function createClient(){
// 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
$config = new Config([
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
// Endpoint 請參考 https://api.aliyun.com/product/Sts
$config->endpoint = "sts.cn-hangzhou.aliyuncs.com";
return new Sts($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
$client = self::createClient();
$assumeRoleRequest = new AssumeRoleRequest([
// 臨時訪問憑證的有效時間,單位為秒。最小值為900,最大值以當前角色設定的最大會話時間為準。當前角色最大會話時間取值范圍為3600秒~43200秒,默認值為3600秒。
"durationSeconds" => 3600,
// 自定義角色會話名稱,用來區分不同的令牌。
"roleSessionName" => "yourRoleSessionName",
// 必填,請確保代碼運行環境設置了環境變量 TABLESTORE_STS_ROLE_ARN。即步驟3生成的RAM角色的RamRoleArn。
"roleArn" => getenv("TABLESTORE_STS_ROLE_ARN"),
]);
$runtime = new RuntimeOptions([]);
try {
// 復制代碼運行請自行打印 API 的返回值
$client->assumeRoleWithOptions($assumeRoleRequest, $runtime);
}
catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
var_dump($error->message);
// 診斷地址
var_dump($error->data["Recommend"]);
Utils::assertAsString($error->message);
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));
使用REST API
您可以通過調用STS服務的AssumeRole - 獲取扮演角色的臨時身份憑證接口來獲取臨時訪問憑證。
步驟六:使用STS臨時訪問憑證請求Tablestore列出表名稱
臨時訪問憑證有效期(Expiration)到期之前,列出表名稱的Java示例代碼如下:
臨時訪問憑證過期時間格式是UTC,比北京時間晚8小時。例如,臨時訪問憑證過期時間是2024-04-18T11:33:40Z,說明臨時訪問憑證將在北京時間2024年4月18日19時33分40秒之前過期。
臨時訪問憑證沒有明確的使用次數限制。
列出表名稱的Java示例代碼如下:
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory;
import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider;
import com.alicloud.openservices.tablestore.model.ListTableResponse;
public class StsAccessKeySample {
public static void main(String[] args) {
// yourInstance 填寫表格存儲實例名稱。
String instanceName = "yourInstance";
// yourEndpoint 填寫表格存儲實例的訪問地址。例如 https://yourInstance.cn-hangzhou.ots.aliyuncs.com。
String endPoint = "yourEndpoint";
// 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。
// 本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量:TABLESTORE_ACCESS_KEY_ID、TABLESTORE_ACCESS_KEY_SECRET和TABLESTORE_SESSION_TOKEN。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 創建OTSClient實例
SyncClient client = new SyncClient(endPoint, credentialsProvider, instanceName, null, new ResourceManager(null, null));
//查詢表名稱
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// 關閉OTSClient
client.shutdown();
}
}
常見問題
報錯You are not authorized to do this action. You should be authorized by RAM.如何處理?
步驟五中使用RAM用戶扮演RAM角色獲取臨時訪問憑證時,必須使用RAM用戶的訪問密鑰(AccessKey ID和AccessKey Secret),不能使用阿里云賬號的訪問密鑰發起請求。
報錯The Min/Max value of DurationSeconds is 15min/1hr.如何處理?
報錯原因是設置的臨時訪問憑證有效期超出允許的時間范圍。請遵循以下原則設置有效期:
如果沒有自定義角色最大會話時間,則當前角色會話時間默認值為3600秒。此時,通過durationSeconds設置的臨時訪問憑證有效時間允許的最小值為900秒,最大值為3600秒。
如果自定義了角色最大會話時間,則通過durationSeconds設置的臨時訪問憑證有效時間的最小值為900秒,最大值以角色最大會話時間為準。角色會話時間允許設置的取值范圍為3600秒~43200秒。
您可以通過RAM控制臺查看角色最大會話時間。具體步驟,請參見查看RAM角色。
報錯The security token you provided is invalid.如何處理?
請確保完整填寫步驟五獲取到的SecurityToken。
是否支持同時獲取多個臨時訪問憑證?
支持。發起一次請求僅返回一個臨時訪問憑證。如果您希望獲取多個臨時訪問憑證,您需要發起多次請求。在有效期內,您可以同時使用獲取到的多個臨時訪問憑證。