详情页标题前

阿里云ECS云服务器批量创建ECS实例-云淘科技

详情页1

本文介绍如何通过阿里云ECS Java SDK调用RunInstances创建一台或多台ECS实例

前提条件

创建ECS实例前,您必须提前查询以下信息:

  • 调用DescribeRegions查询ECS实例启动的阿里云地域,假设为cn-hangzhou。

  • 调用DescribeImages接口查看要使用的镜像ID,假设为freebsd_11_02_64_30G_alibase_20190722.vhd。

  • 调用DescribeInstanceTypes查询ECS实例使用的实例规格,假设为ecs.g5.large。详情请参见实例规格族。

  • 调用DescribeSecurityGroups查询指定地域中的一个或多个安全组ID,假设为sg-bp1fg655nh68xyz9i***。安全组的网络类型将决定ECS实例的网络类型,例如,如果您选择的是一个专有网络VPC类型的安全组,则新建的ECS实例会自动加入安全组所属的专有网络VPC。

  • 如果安全组的网络类型为专有网络VPC,调用VPC API DescribeVSwitches查询安全组所属专有网络VPC中的虚拟交换机ID,假设为vsw-bp1wt4qpuavdb6y6k8***。

  • 开通按量付费ECS资源时,您的阿里云账户余额(即现金余额)和代金券的总值不得小于100.00元人民币。

背景信息

本文调用RunInstances接口创建并自动启动多台ECS实例。详情请参见RunInstances。

说明

调用RunInstances会创建ECS实例等计费资源,会产生实际费用。如果您只需测试示例代码,可以代码中设置DryRun方法,只发送检查请求,不会创建实例。检查项包括是否填写了必需参数、请求格式、业务限制和ECS库存等。

代码示例

以下代码适用于公网带宽采用按流量计费、实例计费方式采用按量付费、网络类型采用专有网络VPC的新建ECS实例:

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 java.util.UUID;
import com.aliyuncs.ecs.model.v20140526.*;

public class RunInstances {

    public static void main(String[] args) {
       	// 请确保代码运行环境设置了环境变量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"));
        IAcsClient client = new DefaultAcsClient(profile);

        // 创建API请求,并设置参数。
        RunInstancesRequest request = new RunInstancesRequest();
        request.setRegionId("cn-hangzhou");
        request.setImageId("freebsd_11_02_64_30G_alibase_20190722.vhd");
        request.setInstanceType("ecs.g5.large");
        request.setSecurityGroupId("sg-bp1fg655nh68xyz9i***");
        request.setVSwitchId("vsw-bp1wt4qpuavdb6y6k8***");
        request.setInstanceName("MyFirstEcsInstance");
        request.setDescription("MyFirstEcsInstance");
        request.setInternetMaxBandwidthOut(2);
        request.setInternetChargeType("PayByTraffic");
        request.setClientToken(UUID.randomUUID().toString());

        // 添加一块数据盘,数据盘类型为SSD云盘,容量为100GiB,并开启了随ECS实例释放。
        List dataDiskList = new ArrayList();

        RunInstancesRequest.DataDisk dataDisk1 = new RunInstancesRequest.DataDisk();
        dataDisk1.setSize(100);
        dataDisk1.setCategory("cloud_ssd");
        dataDisk1.setDeleteWithInstance(true);
        dataDiskList.add(dataDisk1);
        request.setDataDisks(dataDiskList);
        // 批量创建五台ECS实例,如果不设置该参数,默认创建一台ECS实例。
        // request.setAmount(5);
        // 如果缺少库存可以接受的最低创建数量。
        // request.setMinAmount(2);

        List tagList = new ArrayList();

        RunInstancesRequest.Tag tag1 = new RunInstancesRequest.Tag();
        tag1.setKey("EcsProduct");
        tag1.setValue("DocumentationDemo");
        tagList.add(tag1);
        request.setTags(tagList);
        // 打开预检参数功能,不会实际创建ECS实例,只检查参数正确性、用户权限或者ECS库存等问题。
        // 实际情况下,设置了DryRun参数后,Amount必须为1,MinAmount必须为空,您可以根据实际需求修改代码。
        // request.setDryRun(true);
        request.setInstanceChargeType("PostPaid");

        // 发起请求并处理返回或异常。
        RunInstancesResponse response;
        try {
            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());
        }

    }
}

执行结果

实际返回结果为:

{
    "RequestId":"04F0F334-1335-436C-A1D7-6C044FE73368",
    "InstanceIdSets":{
        "InstanceIdSet":[
            "i-instanceid1",
            "i-instanceid2",
            "i-instanceid3"
        ]
    }
}

腾讯云1折,限时活动,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/151607.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云RDS数据库DescribeBinlogFiles – 查看RDS实例的日志(Binglog/Wal)文件-云淘科技

    该接口用于查询RDS MySQL/RDS MariaDB实例的Binlog日志或RDS PostgreSQL实例的Wal日志。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS MariaDB 注意事项 当DownloadLink为NULL时,表示RDS没有提供下载链接URL。 当DownloadLink不为NULL时,用户可以根…

    阿里云数据库 2023年12月9日
  • 阿里云ECS云服务器使用自定义镜像创建ECS实例-云淘科技

    本地镜像文件导入成功后,即成为ECS的自定义镜像。您可以使用该自定义镜像创建具有相同操作系统、应用程序和数据的ECS实例,以保障您云上业务的运维效率。 操作步骤 登录ECS管理控制台。 在左侧导航栏,选择实例与镜像 > 镜像。 在页面左侧顶部,选择目标资源所在的地域。 在镜像页面,选择自定义镜像页签。 找到已导入的自定义镜像,在操作列中,单击创建实例。…

    阿里云服务器 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云负载均衡上传非阿里云签发证书-云淘科技

    上传非阿里云签发证书,您需要持有证书的公钥或私钥文件。 前提条件 上传非阿里云签发证书前,您必须: 已经购买了服务器证书。 已经生成了CA证书和客户端证书。具体信息,请参见生成CA证书。 限制条件 在上传证书前,注意每个账号最多可以创建100个证书。 操作步骤 登录传统型负载均衡CLB控制台。 在左侧导航栏,选择传统型负载均衡 CLB(原SLB) > …

    阿里云负载均衡 2023年12月10日
  • 阿里云RDS数据库修改时区-云淘科技

    本文介绍如何修改RDS PostgreSQL云盘实例的时区,您可以在RDS控制台修改时区参数,也可以调用API接口修改时区参数。 前提条件 RDS PostgreSQL云盘版实例。 注意事项 SET timezone语句仅当前会话生效,无法持久化,建议通过设置实例参数功能进行修改。 如果您需要为某个数据库单独设置时区,请使用ALTER DATABASE SE…

    阿里云数据库 2023年12月9日
  • 阿里云大数据开发治理平台 DataWorks附录:数据服务错误代码表-云淘科技

    DataWorks数据服务接收到调用API的请求后,会将请求结果信息返回给请求端,其中包含各类错误码。通过解读错误码,您可以快速定位问题并自助排错。本文为您介绍常见数据服务错误码及相应含义。 错误代码 描述 语义 0 success 数据查询及返回结果成功。 1108110583 query timeout 请求查询超时,API在数据服务和数据库中的整体执行…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。