全部產品
Search
文件中心

Key Management Service:RAM憑據外掛程式

更新時間:Dec 05, 2025

您在KMS託管RAM使用者的AccessKey後,可以安裝RAM憑據外掛程式,在使用阿里雲SDK時通過引用RAM憑據的名稱,擷取AccessKey完成API鑒權,無需關注AccessKey的具體資訊或者是否被輪轉。本文介紹RAM憑據外掛程式的工作原理、安裝和使用。

工作原理

RAM憑據外掛程式根據憑據名稱,從KMS擷取RAM憑據值並緩衝在應用程式的記憶體中。應用程式使用阿里雲SDK時,通過RAM憑據外掛程式本機快取的AccessKey向雲產品發起請求。

當由於憑據輪轉等原因導致RAM憑據外掛程式本機快取的AccessKey失效時,RAM憑據外掛程式將立即向KMS重新擷取憑據並重新整理本機快取,並根據您設定的錯誤重試行為,通過最新擷取的RAM憑據重試雲產品調用請求。RAM憑據外掛程式預設依據云產品調用響應錯誤碼InvalidAccessKeyIdInvalidAccessKeyId.NotFound來判斷AccessKey無效。

支援的阿里雲SDK

KMS為下表中的阿里雲SDK提供了RAM憑據外掛程式。

重要

RAM憑據外掛程式需要針對各阿里雲SDK分別開發,如果RAM外掛程式不能滿足您的要求,請使用憑據用戶端阿里雲SDK。關於各SDK的介紹,請參見SDK參考。您也可以聯絡技術支援人員反饋需求。

Java SDK(僅支援Java 8及以上版本)

阿里雲SDK名稱

RAM憑據外掛程式模組名稱

阿里雲Java SDK(V2.0)

aliyun-java-tea-openapi-sdk-managed-credentials-provider

阿里雲Java SDK(V1.0)

aliyun-java-sdk-managed-credentials-provider

OSS Java SDK V1

aliyun-oss-java-sdk-managed-credentials-provider

訊息佇列商業版 TCP協議Java SDK

ons-client-managed-credentials-provider

Python SDK

阿里雲SDK名稱

RAM憑據外掛程式模組名稱

說明

阿里雲 Python SDK(V1.0)

aliyun-openapi-python-sdk-managed-credentials-provider

僅支援V1.0版本, 不支援V2.0版本。V2.0版本請使用憑據用戶端阿里雲SDK

OSS Python SDK

aliyun-oss-python-sdk-managed-credentials-provider

無。

Go SDK

阿里雲SDK名稱

RAM憑據外掛程式模組名稱

說明

阿里雲 Go SDK(V1.0)

alibaba-cloud-sdk-go-managed-credentials-provider

僅支援V1.0版本, 不支援V2.0版本。V2.0版本請使用憑據用戶端阿里雲SDK

OSS Go SDK

aliyun-oss-go-sdk-managed-credentials-provider

無。

步驟一:建立訪問憑證

情境一:通過共用網關擷取憑據值

網路類型為公網或VPC網路。訪問憑證支援ECS執行個體RAM角色、ClientKey。

ECS執行個體RAM角色

ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。

具體操作,請參見執行個體RAM角色

  1. 登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。

    • 信任主體類型:選擇雲端服務

    • 信任主體名稱:選擇Elastic Compute Service

  2. 授予RAM角色訪問KMS的許可權。

    • 方式一:設定基於身份的策略

      KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。image

    • 方式二:設定基於資源的策略

      KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略憑據策略

  3. 登入ECS管理主控台,將RAM角色授予ECS執行個體。image

ClientKey

請參考建立應用存取點中的標準建立方式,建立用於訪問共用網關的ClientKey。

重要
  • 配置網路規則時,網路類型選擇PublicVPC

  • 配置許可權規則範圍時,請選擇KMS共享网关

情境二:通過專屬網關擷取憑據值(不推薦)

網路類型為KMS私人網路。訪問憑證僅支援ClientKey。

ClientKey支援快速建立和標準建立兩種方式。關於ClientKey的詳細介紹,請參見應用存取點概述建立應用存取點

  • 方式一:快速建立

    便捷高效適合於快速測試和開發情境,該方式建立的訪問憑證可以訪問KMS執行個體的全部資源。

    1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊应用接入 > 接入点

    2. 应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。

      配置項

      說明

      创建模式

      選擇快速创建

      作用域(KMS实例)

      選擇應用要訪問的KMS執行個體。

      应用接入点名称

      自訂應用存取點的名稱。

      认证方式

      預設為ClientKey,不支援修改。

      默认权限策略

      預設為key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。

    3. 單擊確定,瀏覽器會自動下載ClientKey。

      ClientKey包含應用身份憑證內容(ClientKeyContent)憑證口令(ClientKeyPassword)應用身份憑證內容(ClientKeyContent)檔案名稱預設為clientKey_****.json憑證口令(ClientKeyPassword)檔案名稱預設為clientKey_****_Password.txt

  • 方式二:標準建立

    若您希望對資源設定更精細化的存取權限,建議您使用標準建立。具體操作,請參考建立應用存取點

    重要

    建立應用存取點時如果選擇標準建立,需要注意以下兩點:

    • 配置網路規則時,網路類型選擇Private

    • 配置許可權規則範圍時,請選擇對應的KMS執行個體ID

步驟二:通過設定檔設定RAM憑據外掛程式運行參數

RAM憑據外掛程式僅支援通過設定檔方式,配置運行參數。您需要在應用程式的運行目錄中新增設定檔(managed_credentials_providers.properties),根據不同認證方式在設定檔中新增內容。

說明

如果您的應用程式無法自動讀取到managed_credentials_providers.properties檔案,請參考程式碼範例,通過在代碼中設定設定檔路徑的方式讀取。

ECS執行個體RAM角色

設定檔內容如下。

credentials_type=ecs_ram_role
## ECS RAM Role名稱
credentials_role_name=#credentials_role_name#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey(共用網關)

通過KMS共用網關Endpoint擷取憑據值,設定檔內容如下。

## 訪問憑據類型。
credentials_type=client_key

## 讀取client key的憑證口令:支援從環境變數或者檔案讀取。
## 憑證口令:在應用存取點AAP中建立Client Key時儲存的憑證口令(ClientKeyPassword)。
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#

# Client Key檔案路徑。
# Client Key檔案:在應用存取點AAP中建立Client Key時下載的應用身份憑證內容(ClientKeyContent)。
# 下載後檔案名稱預設為ClientKey_******.json。
client_key_private_key_path=#your client key private key file path#

## 關聯的KMS服務地區。
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey(專屬網關)

通過KMS專屬網關Endpoint擷取憑據值,設定檔內容如下。

參數配置項為cache_client_dkms_config_infocache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。

  • 方式一:通過環境變數擷取ClientKey憑證口令

    設定檔內容為:

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

    該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:

    cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
  • 方式二:通過檔案擷取ClientKey憑證口令

    ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

    設定檔內容為:

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

    樣本如下:

    cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

各配置項說明:

配置項

配置項含義

說明

regionId

KMS執行個體所在地區ID。

具體的地區ID,請參見地區和可用性區域

endpoint

KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

clientKeyFile

ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

  • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

  • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

重要

ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

passwordFromFilePathpasswordFromEnvVariable

  • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

  • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

ignoreSslCerts

是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

  • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

    說明

    取值為true時,無需配置caFilePath

  • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

正式生產環境中,請將該值設定為false。

caFilePath

KMS執行個體CA認證檔案的絕對路徑或相對路徑。

KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

步驟三:在雲產品SDK中使用RAM憑據外掛程式

Java

阿里雲Java SDK(V2.0)

Java 9+ 相容性說明

由於本外掛程式依賴 CGLIB 對類進行動態代理,在使用 Java 9 及以上版本運行程式時,可能會遇到報錯java.lang.reflect.InaccessibleObjectException

請在啟動應用時添加以下JVM參數,以允許CGLIB訪問受限的API:

--add-opens java.base/java.lang=ALL-UNNAMED

例如通過命令列運行程式時:

java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar

如果您是在IDE(如IntelliJ IDEA或Eclipse)中運行程式,請在VM options中添加該參數。

  1. 通過Maven的方式在專案中引入RAM憑據外掛程式。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId>
        <version>[1.3.5,]</version>
    </dependency>
    說明

    建議您安裝最新版本的外掛程式,更多資訊,請參見原始代碼

  2. 獲得阿里雲Java SDK用戶端並調用雲端服務。

    以調用ECS DescribeInstances為例。

    1. 添加雲端服務器ecs20140526依賴。

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>ecs20140526</artifactId>
          <version>7.1.0</version>
      </dependency>
    2. 調用DescribeInstances介面。

      import com.aliyun.ecs20140526.Client;
      import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
      import com.aliyun.kms.secretsmanager.plugin.tea.openapi.ProxyClientCreator;
      import com.google.gson.Gson;
      
      public class AliyunTeaOpenApiProviderSample {
      
          public static void main(String[] args) throws Exception {
              // Step 1: 指定託管憑據的名稱(在KMS中建立的憑據名稱)
              String secretName = "your-secret-name";
      
              /*
                如果應用無法設定從classpath和可執行jar包中讀取預設設定檔(managed_credentials_providers.properties),
                或需自訂設定檔名稱時,可調用以下代碼設定自訂設定檔,並按以下順序讀取:
                1."your-config-name"配置絕對路徑+檔案名稱,即讀取絕對路徑下的檔案
                2."your-config-name"僅設定檔名稱,預設先讀取classpath下的設定檔,再讀取可執行jar包中的設定檔
              */
              //ConfigLoader.setConfigName("your-config-name");
      
              // Step 2: 配置 OpenAPI 用戶端
              com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
              config.endpoint = "your-product-endpoint"; // 替換為實際的雲產品 endpoint
      
              // Step 3: 建立用戶端執行個體
              Client client = ProxyClientCreator.createClient(config, Client.class, secretName);
      
              // Step 4: 調用雲端服務 API
              com.aliyun.ecs20140526.models.DescribeInstancesRequest request = new com.aliyun.ecs20140526.models.DescribeInstancesRequest();
              request.setRegionId("cn-hangzhou"); // 設定地區ID
              DescribeInstancesResponse response = client.describeInstances(request);
      
              // Step 5: 列印結果
              System.out.println(new Gson().toJson(response.getBody()));
          }
      }

阿里雲Java SDK(V1.0)

  1. 通過Maven的方式在專案中引入RAM憑據外掛程式。

    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>[4.3.2,5.0.0]</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId>
      <version>[1.3.1,]</version>
    </dependency>
    說明

    建議您安裝最新版本的外掛程式,更多資訊,請參見原始代碼

  2. 獲得阿里雲Java SDK用戶端並調用雲端服務。

    以調用ECS DescribeInstanceStatus為例。

    1. 添加雲端服務器aliyun-java-sdk-ecs依賴。

      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-ecs</artifactId>
        <version>5.11.20</version>
      </dependency>
    2. 調用DescribeInstanceStatus介面。

      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse;
      import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient;
      import com.aliyuncs.exceptions.ClientException;
      import com.aliyuncs.exceptions.ServerException;
      
      public class AliyunSdkProviderSample {
          public static void main(String[]args) {
              String secretName="******";
              /*
                如果應用無法設定從classpath和可執行jar包中讀取預設設定檔(managed_credentials_providers.properties),
                或需自訂設定檔名稱時,可調用以下代碼設定自訂設定檔,並按以下順序讀取:
                1."your-config-name"配置絕對路徑+檔案名稱,即讀取絕對路徑下的檔案
                2."your-config-name"僅設定檔名稱,預設先讀取classpath下的設定檔,再讀取可執行jar包中的設定檔
              */
              //ConfigLoader.setConfigName("your-config-name");
              
              // 1. 擷取ACSClient by aliyun-java-sdk-managed-credentials-provider
              IAcsClient client = null;
              try {
                  client = new ProxyAcsClient("<the regionId of ECS>", secretName);
              } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 2. 調用ECS的OpenAPI實現業務功能
              DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
              DescribeInstanceStatusResponse response;
              try {
                   response = client.getAcsResponse(request);
              } catch (ServerException e) {
                   e.printStackTrace();
               } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 3. 通過下面方法關閉用戶端來釋放外掛程式關聯的資源 
              client.shutdown();
          }
      }

在OSS SDK中使用

  1. 通過Maven的方式在專案中引入RAM憑據外掛程式。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.17</version>
    </dependency>
    <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>[2.1.0,3.10.2]</version>
    <exclusions>
        <exclusion>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-kms</artifactId>
        </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId>
    <version>[1.3.1,]</version>
    </dependency>
    說明

    建議您安裝最新版本的外掛程式,更多資訊,請參見原始代碼

  2. 獲得OSS Java SDK用戶端並調用雲端服務。

    以調用OSS listBuckets 為例:

    import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder;
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.model.Bucket;
    
    import java.util.List;
    
    public class OssProviderSample {
    
        public static void main(String[] args) throws Exception {
            String secretName = "******";
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
            /*
              如果應用無法設定從classpath和可執行jar包中讀取預設設定檔(managed_credentials_providers.properties),
              或需自訂設定檔名稱時,可調用以下代碼設定自訂設定檔,並按以下順序讀取:
              1."your-config-name"配置絕對路徑+檔案名稱,即讀取絕對路徑下的檔案
              2."your-config-name"僅設定檔名稱,預設先讀取classpath下的設定檔,再讀取可執行jar包中的設定檔
            */
            //ConfigLoader.setConfigName("your-config-name");
    
            // 擷取Oss Client
            OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
    
    
            // 以下為業務方業務代碼:調用阿里雲OSS服務實現業務功能
            List<Bucket> buckets = ossClient.listBuckets();
            for (Bucket bucket : buckets) {
                if (bucket != null) {
                    // ...
                }
            }
    
            // 通過下面方法關閉用戶端來釋放外掛程式關聯的資源 
            ossClient.shutdown();
        }
    
    }

Python

阿里雲Python SDK(V1.0)

  1. 執行pip命令以在專案中使用RAM憑據外掛程式。

    pip install aliyun-openapi-python-sdk-managed-credentials-provider
    說明

    請確保外掛程式版本為0.1.0及以上版本,更多資訊,請參見原始代碼

  2. 獲得阿里雲Python SDK用戶端並調用雲端服務。

    from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
    
       region="cn-hangzhou"
       secretName="******"
    
       # 1. 擷取ACSClient
       client = ProxyAcsClient(region_id=region, secret_name=secretName )
    
       # 2. 業務方業務代碼:使用client調用阿里雲服務,無需代碼改動。
       ...
    
       # 3. 通過下面方法關閉用戶端來釋放外掛程式關聯的資源
       client.shutdown()

OSS Python SDK

  1. 執行pip命令以在專案中使用RAM憑據外掛程式。

    pip install aliyun-oss-python-sdk-managed-credentials-provider
    說明

    請確保外掛程式版本為0.1.0及以上版本,更多資訊,請參見原始代碼

  2. 獲得阿里雲OSS Python SDK用戶端並調用雲端服務。

    from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket
    from itertools import islice
    
    endpoint = "******"
    secret_name ="******"
    bucket_name = "******"
    bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name)
    objects = bucket.list_objects()
    for b in islice(objects.object_list, 10):
        print(b.key)
    bucket.shutdown()

Go

阿里雲Go SDK(V1.0)

警告

受Go語言RAM外掛程式SDK的限制,當前無法完成對憑據失效的自動重試。如果需手動輪換憑據,請確保輪換視窗至少為 13 小時,以避免因憑據失效導致任務中斷。

  1. 安裝阿里雲Go SDK的RAM憑據外掛程式。

    重要
    • 建議安裝最新版本的外掛程式,更多資訊,請參見原始代碼

    • Go語言下RAM憑據外掛程式依賴的alibaba-cloud-sdk-go 版本需小於v1.63.0,請在外掛程式的 go.mod 檔案中檢查並確認版本,以避免潛在的相容性問題。

    • 方式一:使用go.mod管理您的依賴。

      go.mod檔案中添加以下內容安裝依賴包。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X
      )
    • 方式二:使用go get命令擷取遠程程式碼封裝。

      go get -u github.com/aliyun/aliyun-sdk-mxanaged-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
  2. 獲得阿里雲Go SDK的用戶端並調用雲端服務。

    以調用ECS DescribeInstances 為例:

    package sample
    
    import (
        "fmt"
        "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
        sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        regionId := "cn-hangzhou"
    
        client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
        ecsClient := client.(*ecs.Client)
    
        request := ecs.CreateDescribeInstancesRequest()
        instancesResponse, err := ecsClient.DescribeInstances(request)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        for _, instance := range instancesResponse.Instances.Instance {
            // do something with instance
        }
    }

OSS Go SDK

  1. 安裝OSS Go SDK的RAM憑據外掛程式。

    重要
    • 建議安裝最新版本的外掛程式,更多資訊,請參見原始代碼

    • Go語言下RAM憑據外掛程式依賴的alibaba-cloud-sdk-go 版本需小於v1.63.0,請在外掛程式的 go.mod 檔案中檢查並確認版本,以避免潛在的相容性問題。

    • 方式一:使用go.mod管理您的依賴。

      go.mod檔案中添加以下內容安裝依賴包。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X
      )
    • 方式二:使用go get命令擷取遠程程式碼封裝。

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
  2. 獲得阿里雲OSS Go SDK用戶端並調用雲端服務。

    package sample
    
    import (
        "fmt"
        ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    
        // 擷取Proxy Oss Client
        client, err := ossprovider.New(endpoint, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        result, err := client.ListBuckets()
        if err != nil {
            fmt.Println(err)
            return
        }
        for _, bucket := range result.Buckets {
            //業務代碼
        }
    
        // 關閉用戶端來釋放外掛程式關聯的資源
        client.Shutdown()
    }