文档

变更ECS实例规格

更新时间:

如果您是开发者,可以通过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****"
}