日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ECS Java V2.0 SDK調(diào)用示例

本文以調(diào)用查詢一臺或多臺ECS實例的詳細信息(DescribeInstances)接口為例,為您介紹Java V2.0 SDK的安裝和使用。

前提條件

  1. 由于阿里云賬號(主賬號)擁有資源的所有權限,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化權限需求的RAM用戶的AccessKey。具體操作方式請參見創(chuàng)建AccessKey

  2. 給RAM用戶授予操作云服務器ECS相關資源的權限。本文提供的示例代碼為查詢示例,所以選擇AliyunECSReadonlyAccess系統(tǒng)權限策略,您在使用的時候可以根據(jù)業(yè)務需求進行自定義授權。

    1. 使用自定義權限策略。

      關于如何創(chuàng)建自定義權限策略,請參見創(chuàng)建自定義權限策略授權信息

      云服務器ECS依據(jù)最佳實踐提供了一些自定義權限策略示例,您可以參考這些示例以快速創(chuàng)建符合自身業(yè)務需求的自定義權限策略,具體詳情請參見云服務器ECS自定義權限策略參考

    2. 使用系統(tǒng)權限策略。

      云服務器ECS支持的所有系統(tǒng)權限策略及其對應的權限描述,請參見云服務器 ECS系統(tǒng)權限策略參考

  3. 在環(huán)境變量中配置AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量

安裝SDK

Java SDK支持多種安裝方式,本示例以Apache Maven安裝方式為例,更多安裝方式獲取方式,請參見SDK 中心

打開Maven項目的pom.xml文件,在<dependencies>節(jié)點中加入依賴配置,并刷新Maven配置。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>ecs20140526</artifactId>
  <version>5.3.0</version>
</dependency>

使用SDK

1. 初始化客戶端

阿里云SDK支持多種訪問憑據(jù)用于初始化客戶端,例如AccessKey和STS Token等,更多方式請參見管理訪問憑據(jù)。本示例以通過AccessKey初始化客戶端為例。

import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // 必填,請確保代碼運行環(huán)境設置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環(huán)境設置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint 請參考 https://api.aliyun.com/product/Ecs
                .setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }
}

2. 構建接口的請求對象

在構建請求對象之前,請查看該接口的API文檔獲取參數(shù)信息。

說明

請求對象命名規(guī)則:{API名稱}Request,例如DescribeInstances該接口的請求對象為DescribeInstancesRequest。

// 構造請求對象
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");

3. 發(fā)起調(diào)用

通過客戶端調(diào)用OpenAPI時,支持設置運行時參數(shù),例如超時配置、代理配置等,更多信息請查看進階配置

說明

接口返回對象命名規(guī)則:{API名稱}Response,例如DescribeInstances該接口的返回對象為DescribeInstancesResponse。

// 設置運行時參數(shù)
RuntimeOptions runtime = new RuntimeOptions();
// 調(diào)用 DescribeInstances 接口
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());

4. 異常處理

Java SDK將異常進行了細致的分類,主要劃分為TeaUnretryableException和TeaException。

  • TeaUnretryableException:主要是因為網(wǎng)絡問題造成,一般是網(wǎng)絡問題達到最大重試次數(shù)后拋出。

  • TeaException:主要以業(yè)務報錯為主的異常。

建議采取合理的措施來處理異常,比如合理地傳播異常、記錄日志、嘗試恢復等,以確保系統(tǒng)的健壯性和穩(wěn)定性。

5. 完整示例

import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // 必填,請確保代碼運行環(huán)境設置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環(huán)境設置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint 請參考 https://api.aliyun.com/product/Ecs
                .setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }

    public static void main(String[] args) {
        try {
            Client client = Sample.createClient();
            // 構造請求對象
            DescribeInstancesRequest request = new DescribeInstancesRequest()
                    .setRegionId("cn-hangzhou");
            // 設置運行時參數(shù)
            RuntimeOptions runtime = new RuntimeOptions();
            // 調(diào)用 DescribeInstances 接口
            DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
            System.out.println(response.body.toMap());
        } catch (TeaUnretryableException ue) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            ue.printStackTrace();
            // 打印錯誤信息
            System.out.println(ue.getMessage());
            // 打印請求記錄,查詢錯誤發(fā)生時的請求信息
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            e.printStackTrace();
            // 打印錯誤碼
            System.out.println(e.getCode());
            // 打印錯誤信息,錯誤信息中包含 RequestId
            System.out.println(e.getMessage());
            // 打印服務端返回的具體錯誤內(nèi)容
            System.out.println(e.getData());
        } catch (Exception e) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            e.printStackTrace();
        }
    }
}

場景化示例

更多內(nèi)容

除了使用上述調(diào)用方式外,您還可以使用泛化調(diào)用方式調(diào)用ECS的OpenAPI,詳細介紹請參見泛化調(diào)用

若您當前使用的是V1.0 SDK,并希望進一步了解V1.0 SDK的相關內(nèi)容,請參見V1.0 Java SDK