本文通过阿里云ECS Java SDK调用ModifyInstanceSpec变更一台按量付费ECS实例的实例规格,调用ModifyPrepayInstanceSpec变更一台包年包月ECS实例的实例规格。
前提条件
变更ECS实例规格时,您需要注意:
- 按量付费实例不能处于欠费状态。
- 包年包月实例不能处于过期状态。
- 实例必须处于已停止(Stopped)状态。
变更包年包月实例规格
以下代码适用于在中国杭州地域下,通过调用ModifyPrepayInstanceSpec将一台包年包月ECS实例的实例规格变更为ecs.g5.large:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class ModifyPrepayInstanceSpec {
public static void main(String[] args) {
// 创建并初始化DefaultAcsClient实例。
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<yourAccessKeyId>", "<yourAccessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
// 创建API请求,并设置参数。
ModifyPrepayInstanceSpecRequest request = new ModifyPrepayInstanceSpecRequest();
request.setRegionId("cn-hangzhou");
request.setInstanceId("i-bp1jd3uddaduyo8*****");
// 设置新的实例规格,ModifyPrepayInstanceSpecRequest支持升级实例规格和降配实例规格。
request.setInstanceType("ecs.g5.large");
try {
ModifyPrepayInstanceSpecResponse response = client.getAcsResponse(request);
logInfo(response.getOrderId());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
private static void logInfo(String message) {
System.out.println(message);
}
}
变更按量付费实例规格
以下代码适用于在中国杭州地域下,通过调用ModifyInstanceSpec将一台按量付费ECS实例的实例规格变更为ecs.g5.large:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.alibaba.fastjson.JSON;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class ModifyInstanceSpec {
public static void main(String[] args) {
// 创建并初始化DefaultAcsClient实例。
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<yourAccessKeyId>", "<yourAccessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
// 创建API请求,并设置参数。
ModifyInstanceSpecRequest request = new ModifyInstanceSpecRequest();
request.setRegionId("default");
// 必须指定实例ID。
request.setInstanceId("i-bp1gc5z6103qs2t40***");
// 设置新的实例规格,ModifyInstanceSpecRequest支持升级实例规格和降配实例规格。
request.setInstanceType("ecs.g5.large");
try {
ModifyInstanceSpecResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSONString(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}