如果您是开发者,可参考本文提供的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);
    }
}
查询结果的返回示例,如下图所示:抢占式实例价格结果