本文以使用弹性伸缩Java SDK查询伸缩组内的ECS实例列表为例,详细介绍弹性伸缩Java SDK的通用使用流程。
背景信息
阿里云开发者中心为您提供了弹性伸缩Java SDK以及阿里云核心库的Maven项目依赖,您可以编写代码调用阿里云SDK来实现对阿里云的产品和服务的访问。
本文示例目的是查询伸缩组内ECS实例的列表,关于伸缩组的更多信息,请参见伸缩组概述。
旧版SDK和新版SDK的方法、类以及对象之间存在一定的区别。若您使用的是旧版SDK,建议您切换为新版SDK,获取最新功能。
说明升级版SDK和原版SDK区别的更多信息,请参见V2.0 SDK 和 V1.0 SDK。
更多代码示例请参见阿里云代码示例库(CodeSample)。
准备工作
创建AccessKey。AccessKey包括AccessKey ID和AccessKey Secret,关于如何创建和获取AccessKey,请参见创建AccessKey。
重要为避免主账号泄露AccessKey带来的安全风险,强烈建议您创建RAM用户,授予RAM用户相关访问权限,再使用RAM用户的AccessKey调用SDK。具体操作,请参见弹性伸缩系统权限策略参考。
RAM用户的AccessKey Secret只能在创建AccessKey时显示,创建完成后不支持查看。请在创建好AccessKey后,及时并妥善保存AccessKey Secret。
配置环境变量具体操作,请参见在Linux、macOS和Windows系统配置环境变量。本文通过配置环境变量(
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
)的方式配置Alibaba Cloud Credentials工具的身份验证,实现以非AK硬编码的方式访问阿里云OpenAPI。下载并安装JDK1.8或以上版本,如果还未安装,请参见在Windows安装JDK。
使用弹性伸缩SDK
手动集成依赖
使用弹性伸缩Java SDK查询伸缩组内ECS实例列表。
步骤一:安装弹性伸缩的Java SDK
通过以下任一方式在IDEA中配置Maven项目管理工具。
方式一:使用IDEA中集成的Maven项目管理工具。
方式二:访问Maven官方下载页面(Download Apache Maven)下载对应操作系统的Maven工具,手动配置Maven工具。
访问阿里云开发工具包(SDK),选择云产品为弹性伸缩,获取阿里云的SDK核心库和弹性伸缩的Maven项目依赖。
通过以下任一方式创建Maven项目。
方式一:在IDEA中添加一个Maven项目。
方式二:将已有的项目转换为Maven项目。
右键单击要转换的项目,并选择Add Framework Support...。
选择Maven,并单击OK。
在项目目录下的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的通用流程
本步骤以弹性伸缩Java SDK查询伸缩组内ECS实例列表的方法DescribeScalingInstances为例,介绍编写弹性伸缩Java SDK的通用操作流程。
通过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");
生成Client的对象client。
代码如下所示:
com.aliyun.ess20220222.Client client = new com.aliyun.ess20220222.Client(config);
创建一个对应方法的Request,使用构造函数生成一个默认的请求类request。
类的命名规则为API方法名加上Request。例如,查询伸缩组内ECS实例列表的API方法名为DescribeScalingInstances,则对应的请求类的名称为DescribeScalingInstancesRequest。
DescribeScalingInstancesRequest request = new DescribeScalingInstancesRequest();
设置请求类request的参数。
通过request类的setXxx方法设置必要的信息,即API中必须要设置的参数信息,通过setXxx方法设置参数。示例中:
DescribeScalingInstances的API方法RegionId用来指定地域。
DescribeScalingInstances的API方法InstanceId用来设置待查询的伸缩组内ECS实例ID。设置setInstanceId的值为i-bp15itgtxemxy7v9****,表示查询的伸缩组内ECS实例ID为i-bp15itgtxemxy7v9****。
request.setInstanceId("i-bp15itgtxemxy7v9****");
通过调用client对象的describeScalingInstancesWithOptions方法获得对应request响应结果。
代码如下所示:
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); DescribeScalingInstancesResponse response = client.describeScalingInstancesWithOptions(request,runtime);
说明您可以进入弹性伸缩_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示例代码
使用弹性伸缩Java SDK创建一个伸缩组。
步骤一:获取SDK示例代码
您可以通过阿里云的OpenAPI门户,调用弹性伸缩API自动生成SDK示例代码。
单击OpenAPI门户。
参考图中示例步骤下载完整的SDK工程。下载完后完成解压。
步骤二:运行SDK示例代码
使用IntelliJ IDEA,单击File->Open,选择解压后的工程文件夹,等待Maven自动安装依赖信息。
运行示例代码。
双击打开Sample,确认无报错后,运行代码。
查看运行结果。
在弹性伸缩管理控制台 (aliyun.com)查看新创建的伸缩组。
完整代码示例
使用Java SDK创建伸缩组的完整参考示例,请参见Java SDK示例。
后续步骤
伸缩组创建成功后不会立即生效。您需要先调用EnableScalingGroup启动伸缩组,伸缩组才能触发伸缩活动和执行伸缩规则。