Java SDK通用流程及樣本

更新時間:
Copy as MD

本文以使用Auto ScalingJava SDK查詢伸縮組內的ECS執行個體列表為例,詳細介紹Auto ScalingJava SDK的通用使用流程。

背景資訊

  • 阿里雲開發人員中心為您提供了Auto ScalingJava SDK以及阿里雲核心庫的Maven專案依賴,您可以編寫代碼調用阿里雲SDK來實現對阿里雲的產品和服務的訪問。

  • 本文樣本目的是查詢伸縮組內ECS執行個體的列表,關於伸縮組的更多資訊,請參見伸縮組概述

  • 舊版SDK和新版SDK的方法、類以及對象之間存在一定的區別。若您使用的是舊版SDK,建議您切換為新版SDK,擷取最新功能。

準備工作

  • 建立AccessKey。AccessKey包括AccessKey IDAccessKey Secret,關於如何建立和擷取AccessKey,請參見建立AccessKey

    重要
    • 為避免主帳號泄露AccessKey帶來的安全風險,強烈建議您建立RAM使用者,授予RAM使用者相關存取權限,再使用RAM使用者的AccessKey調用SDK。具體操作,請參見Auto Scaling系統權限原則參考

    • RAM使用者的AccessKey Secret只能在建立AccessKey時顯示,建立完成後不支援查看。請在建立好AccessKey後,及時並妥善儲存AccessKey Secret。

  • 配置環境變數具體操作,請參見Linux、macOSWindows系統配置環境變數。本文通過配置環境變數(ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET)的方式配置Alibaba Cloud Credentials工具的身分識別驗證,實現以非AK硬式編碼方式訪問阿里雲OpenAPI。

  • 下載並安裝JDK1.8或以上版本,如果還未安裝,請參見Windows安裝JDK

使用Auto ScalingSDK

手動整合依賴

使用Auto ScalingJava SDK查詢伸縮組內ECS執行個體列表

步驟一:安裝Auto ScalingJava SDK

  1. 通過以下任一方式在IDEA中配置Maven專案管理工具。

    • 方式一:使用IDEA中整合的Maven專案管理工具。

    • 方式二:訪問Maven官方下載頁面(Download Apache Maven)下載對應作業系統的Maven工具,手動設定Maven工具。

  2. 訪問阿里雲開發套件(SDK),選擇雲產品為Auto Scaling,擷取阿里雲的SDK核心庫Auto ScalingMaven專案依賴。

  3. 通過以下任一方式建立Maven專案。

    • 方式一:在IDEA中添加一個Maven專案。方式一:在 IntelliJ IDEA 中開啟 New Project 對話方塊,在左側項目類型列表中選擇 Maven,將 Project SDK 設定為已安裝的 JDK 版本(如 1.8),然後單擊 Next 完成後續配置。

    • 方式二:將已有的專案轉換為Maven專案。

      1. 按右鍵要轉換的專案,並選擇Add Framework Support...

      2. 選擇Maven,並單擊OK

  4. 在專案目錄下的pom.xml檔案中建立 <dependencies></dependencies>標籤,在該標籤中添加以下依賴。

    添加依賴後,點擊右上方重新整理按鈕,或者右鍵專案名稱,選擇,下載Maven依賴到專案中。

    說明

    SDK封裝更新頻繁,建議您通過阿里雲開發套件(SDK)官網擷取最新版本依賴。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-openapi</artifactId>
      <version>0.2.8</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>ess20220222</artifactId>
      <version>1.5.2</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>credentials-java</artifactId>
      <version>0.2.11</version>
    </dependency>

步驟二:編寫Java SDK的通用流程

本步驟以Auto ScalingJava SDK查詢伸縮組內ECS執行個體列表的方法DescribeScalingInstances為例,介紹編寫Auto ScalingJava SDK的通用操作流程。

  1. 通過Credentials工具從環境變數中擷取AccessKey資訊。

    代碼如下所示:

    com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
    com.aliyun.teaopenapi.models.Config config = new Config();
    config.setCredential(credentialClient);
    config.setEndpoint("ess.aliyuncs.com");
  2. 產生Client的對象client

    代碼如下所示:

    com.aliyun.ess20220222.Client client = new com.aliyun.ess20220222.Client(config);
  3. 建立一個對應方法的Request,使用建構函式產生一個預設的請求類request

    類的命名規則為API方法名加上Request。例如,查詢伸縮組內ECS執行個體列表的API方法名為DescribeScalingInstances,則對應的請求類的名稱為DescribeScalingInstancesRequest

    DescribeScalingInstancesRequest request = new DescribeScalingInstancesRequest();
  4. 佈建要求類request的參數。

    通過request類的setXxx方法設定必要的資訊,即API中必須要設定的參數資訊,通過setXxx方法設定參數。樣本中:

    • DescribeScalingInstancesAPI方法RegionId用來指定地區。

    • DescribeScalingInstancesAPI方法InstanceId用來設定待查詢的伸縮組內ECS執行個體ID。設定setInstanceId的值為i-bp15itgtxemxy7v9**,表示查詢的伸縮組內ECS執行個體IDi-bp15itgtxemxy7v9**

    request.setInstanceId("i-bp15itgtxemxy7v9****");
  5. 通過調用client對象的describeScalingInstancesWithOptions方法獲得對應request響應結果

    代碼如下所示:

    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    DescribeScalingInstancesResponse response = client.describeScalingInstancesWithOptions(request,runtime);
    說明

    您可以進入Auto Scaling_SDK中心-阿里雲OpenAPI開發人員門戶 (aliyun.com),選擇Java頁簽 > 快速入門 > 步驟介紹,瞭解詳細流程。

完整程式碼範例

以下為本文樣本的完整Java SDK代碼。

import com.aliyun.ess20220222.models.DescribeScalingInstancesRequest;
import com.aliyun.ess20220222.models.DescribeScalingInstancesResponse;
import com.aliyun.teaopenapi.models.Config;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class DescribeScalingInstances {
    public static void main(String[] args) throws Exception {
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new Config();
        config.setCredential(credentialClient);
        config.setEndpoint("ess.aliyuncs.com");
        com.aliyun.ess20220222.Client client = new com.aliyun.ess20220222.Client(config);
        DescribeScalingInstancesRequest request = new DescribeScalingInstancesRequest();
        request.setRegionId("cn-hangzhou");
        request.setScalingGroupId("asg-XXXXXXXX");
        request.setScalingConfigurationId("asc-XXXXXXXXX");
        request.setPageNumber(1);
        request.setPageSize(10);
        List<String> instanceIdList = new ArrayList<String>();
        instanceIdList.add("i-XXXXXX");
        request.setInstanceIds(instanceIdList);
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        DescribeScalingInstancesResponse response = client.describeScalingInstancesWithOptions(request,runtime);
        System.out.println(new Gson().toJson(response));
    }
}

執行結果

全部返回資訊如下所示:

{
    "TotalCount": 2,
    "RequestId": "5E65F238-4B45-54B6-BE15-A34956FA0D96",
    "PageSize": 10,
    "PageNumber": 1,
    "ScalingInstances": {
        "ScalingInstance": [
            {
                "LoadBalancerWeight": 50,
                "CreatedTime": "2022-04-27T03:24:58Z",
                "WarmupState": "NoNeedWarmup",
                "ZoneId": "cn-hangzhou-i",
                "InstanceId": "i-bp1h3dog530vvnqm****",
                "ScalingActivityId": "asa-bp16rgo6477ojn3u****",
                "ScalingGroupId": "asg-bp10uuhy2wbb2tip****",
                "CreationTime": "2022-04-27T03:24Z",
                "HealthStatus": "Healthy",
                "LifecycleState": "Protected",
                "Entrusted": false,
                "CreationType": "Attached"
            },
            {
                "LoadBalancerWeight": 50,
                "CreatedTime": "2022-04-27T06:38:21Z",
                "ZoneId": "cn-hangzhou-i",
                "InstanceId": "i-bp15itgtxemxy7v9****",
                "ScalingActivityId": "asa-bp1ejteup0bntltl****",
                "ScalingGroupId": "asg-bp10uuhy2wbb2tip****",
                "HealthStatus": "Healthy",
                "LifecycleState": "Stopped",
                "CreationType": "AutoCreated",
                "WarmupState": "NoNeedWarmup",
                "CreationTime": "2022-04-27T06:38Z",
                "Entrusted": true,
                "ScalingConfigurationId": "asc-bp1433dp4gktwkmi****"
            }
        ]
    },
    "TotalSpotCount": 0
}

OpenAPI 門戶下載SDK範例程式碼

使用Auto ScalingJava SDK建立一個伸縮組

步驟一:擷取SDK範例程式碼

您可以通過阿里雲的OpenAPI門戶,調用Auto ScalingAPI自動產生SDK範例程式碼。

  1. 單擊API Explorer

  2. 參考圖中樣本步驟下載完整的SDK工程。下載完成後解壓。

在 OpenAPI 門戶頁面頂部選擇Auto Scaling服務,在左側 API 列表中找到 CreateScalingGroup 介面。在輸入參數地區填寫參數(如 ScalingGroupNameRegionIdMinSizeMaxSize 等),單擊發起調用。切換到右側SDK樣本頁簽,選擇 SDK 版本(推薦 V2.0)和程式設計語言(如 Java、Python、Go 等),查看自動產生的 SDK 範例程式碼。通過右上方SDK文檔SDK安裝資訊連結下載完整 SDK 工程。

步驟二:運行SDK範例程式碼

  1. 使用IntelliJ IDEA,單擊File->Open,選擇解壓後的工程檔案夾,等待Maven自動安裝依賴資訊

  2. 運行範例程式碼。

    雙擊開啟Sample,確認無報錯後,運行代碼。

  3. 查看運行結果。

    Auto Scaling控制台查看新建立的伸縮組。

完整程式碼範例

使用Java SDK建立伸縮組的完整參考樣本,請參見Java SDK樣本

後續步驟

伸縮組建立成功後不會立即生效。您需要先調用EnableScalingGroup啟動伸縮組,伸縮組才能觸發伸縮活動和執行伸縮規則。

相關文檔