如果您是开发者,可参考本文提供的Java代码示例查询抢占式实例当前最新的价格。
前提条件
- 已准备阿里云账号以及对应的访问密钥(AccessKey)。
使用Alibaba Cloud SDK for Java时需要设置阿里云账号的AccessKey信息。AccessKey的获取方式,请参见获取AccessKey。
- 已在开发环境中安装Java SDK。
您需要在Maven项目中添加以下依赖。具体操作,请参见安装Java SDK。
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ecs</artifactId> <version>4.23.10</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.0.8</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68</version> </dependency> </dependencies>
代码示例
本文提供名为
查询结果的返回示例,如下图所示:QuerySpotLatestPrice
的示例类,代码中主要通过ECS的DescribePrice接口实现查询抢占式实例当前最新的价格功能。import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.ecs.model.v20140526.DescribePriceRequest;
import com.aliyuncs.ecs.model.v20140526.DescribePriceResponse;
import com.aliyuncs.profile.DefaultProfile;
/**
* 通过DescribePrice查询最新价格。
*/
public class QuerySpotLatestPrice {
private static IAcsClient client;
// 请将regionId修改为您需要查询的地域ID。
static String regionId = "cn-hangzhou";
// 查询专有网络VPC类型的ECS实例。
static String resourceType = "instance";
static String instanceNetworkType = "vpc";
// 请将instanceType修改为您需要查询的实例规格。
static String instanceType = "ecs.g6.8xlarge";
// 设置抢占策略为系统自动出价。
static String spotStrategy = "SpotAsPriceGo";
// 请将spotDuration修改为您需要保留抢占式实例的时长。不能确定保留时长时,请设置为0。
static Integer spotDuration = 1;
// 请将zoneId修改为您需要查询的可用区ID。
static String zoneId = "cn-hangzhou-i";
public static void main(String[] args) throws Exception {
client = Initialization();
describePrice(client);
}
public static void describePrice(IAcsClient client) throws Exception {
// 设置DescribePrice参数,并向DescribePrice发送请求。
DescribePriceRequest request = new DescribePriceRequest();
request.setRegionId(regionId);
request.setResourceType(resourceType);
request.setInstanceType(instanceType);
request.setInstanceNetworkType(instanceNetworkType);
request.putQueryParameter("spotStrategy",spotStrategy);
request.putQueryParameter("spotDuration",spotDuration);
request.putQueryParameter("zoneId",zoneId);
// 接收调用的返回结果,并输出查询到的抢占式实例当前最新价格。
DescribePriceResponse describePriceResponse = client.getAcsResponse(request);
System.out.println("抢占式实例价格:"+describePriceResponse.getPriceInfo().getPrice().getTradePrice()+"元");
}
private static IAcsClient Initialization() {
/**
* 初始化请求参数。
* 其中变量<your-access-key-id>需要设置为您的阿里云账号的AccessKey ID。
* <your-access-key-secret>需要设置为您的阿里云账号的AccessKey Secret。
*/
DefaultProfile profile = DefaultProfile.getProfile(regionId, "<your-access-key-id>", "<your-access-key-secret>");
return new DefaultAcsClient(profile);
}
}
