如果您是开发者,可以通过SDK的方式来变更ECS实例规格。本文介绍了如何使用Java SDK(V2.0 SDK)来调用ModifyInstanceSpec方法,对按量付费的ECS实例规格进行变更,并使用ModifyPrepayInstanceSpec方法对包年包月的ECS实例规格进行变更。
前提条件
变更ECS实例规格时,您需要注意:
按量付费实例不能处于欠费状态。
包年包月实例不能处于过期状态。
实例必须处于已停止(Stopped)状态。
通过DescribeResourcesModification查询当前实例支持变配的实例规格。
已准备阿里云账号以及对应的访问密钥(AccessKey)。
使用Alibaba Cloud SDK for Java时需要设置阿里云账号的AccessKey信息。AccessKey的获取方式,请参见创建AccessKey。
请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量。
在开发环境中安装ECS Java SDK 2.0。具体操作,请参见安装和使用ECS SDK。
您需要在Maven项目中添加以下依赖。
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>ecs20140526</artifactId> <version>5.1.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.3.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-console</artifactId> <version>0.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-util</artifactId> <version>0.2.21</version> </dependency> </dependencies>
变更包年包月实例规格
在华东1(杭州)地域调用ModifyPrepayInstanceSpec将一台包年包月ECS实例的实例规格从ecs.g6.large变更为ecs.c6.6xlarge。
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.ModifyPrepayInstanceSpecRequest;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class ModifyPrepayInstanceSpec {
public static Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
Config config = new Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
Client client = ModifyPrepayInstanceSpec.createClient();
ModifyPrepayInstanceSpecRequest modifyPrepayInstanceSpecRequest = new ModifyPrepayInstanceSpecRequest()
.setRegionId("cn-hangzhou")
.setInstanceId("i-bp196hys912ibl65****")
.setInstanceType("ecs.c6.6xlarge");
RuntimeOptions runtime = new RuntimeOptions();
try {
client.modifyPrepayInstanceSpecWithOptions(modifyPrepayInstanceSpecRequest, runtime);
}catch (Exception error){
// 错误 message
System.out.println(error.getMessage());
}
}
}
返回结果如下所示。
{
"orderId": "23702510382****",
"requestId": "AE8B6590-C414-5A7A-B4AF-D77D8D4F****"
}
变更按量付费实例规格
在华东1(杭州)调用ModifyInstanceSpec将一台按量付费ECS实例的实例规格从ecs.g6.large变更为ecs.c6.6xlarge。
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.ModifyInstanceSpecRequest;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class ModifyInstanceSpec {
public static Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
Config config = new Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
Client client = ModifyPrepayInstanceSpec.createClient();
ModifyInstanceSpecRequest modifyInstanceSpecRequest = new ModifyInstanceSpecRequest()
.setInstanceId("i-bp18loxu99orsnld****")
.setInstanceType("ecs.c6.6xlarge");
RuntimeOptions runtime = new RuntimeOptions();
try {
client.modifyInstanceSpecWithOptions(modifyInstanceSpecRequest, runtime);
} catch (TeaException error) {
// 错误 message
System.out.println(error.getMessage());
}
}
}
返回结果如下所示。
{
"requestId": "0F1C355E-2FF4-518C-9256-67B3241D****"
}
文档内容是否对您有帮助?