文档

查询抢占式实例当前价格

更新时间:

抢占式实例价格随市场供需关系实时变化,您可以参考本文提供的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.83</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() {
        //请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        return new DefaultAcsClient(profile);
    }
}

查询结果的返回示例,如下图所示:抢占式实例价格结果

  • 本页导读 (1)
文档反馈