云服务器BCC

    BCC实例

    BCC实例是百度智能云上的云服务器操作实例,也是计费、权限控制等高级功能的管理实体。

    创建实例

    使用以下代码可以创建BCC实例,包括专属实例、普通型Ⅰ 型实例、普通型Ⅱ型实例、存储优化型BCC、计算优化型BCC:

    public static void createInstance(BccClient bccClient) {
        CreateInstanceRequest createInstanceRequest = new CreateInstanceRequest();
    
        // 设置创建BCC虚机使用的镜像
        createInstanceRequest.setImageId(imageId);
        // 设置创建BCC的密码
        createInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的核数
        createInstanceRequest.setCpuCount(newCpuCount);
        // 设置创建BCC的内存大小GB
        createInstanceRequest.setMemoryCapacityInGB(newMemoryInGb);
        // 设置创建BCC使用的网络带宽大小
        createInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createInstanceRequest.setName(newName);
        // 设置创建BCC所在的zone
        createInstanceRequest.setZoneName(zoneName);
    
        // 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,
        // 同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
        // 设置创建BCC使用的子网,
        createInstanceRequest.setSubnetId(subnetId);
        // 设置创建BCC使用的安全组
        createInstanceRequest.setSecurityGroupId(securityGroupId);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 设置创建BCC的付费方式为包年包月计费的预付费
        // createInstanceRequest.setBilling(new Billing().withPaymentTiming("Prepaid"));
        // 设置创建BCC的付费方式为后付费
        createInstanceRequest.setBilling(new Billing().withPaymentTiming("Postpaid"));
    
        List<EphemeralDisk> ephemeralDiskList = new ArrayList<EphemeralDisk>();
        // DCC实例可以创建多块本地盘,需要指定磁盘类型以及大小。
        // 其他类型BCC最多只能使用一块本地盘,使用默认磁盘类型,需要指定磁盘大小。
        ephemeralDiskList.add(new EphemeralDisk().withSizeInGB(sizeInGb));
    
        // 可以创建以下几种BCC机型
        
        // 设置需要创建BCC使用的DCC服务器id
        createInstanceRequest.setDedicatedHostId(dedicatedHostId);
        // 设置需要创建的BCC实例类型为普通型BCCⅠ 型
        createInstanceRequest.setInstanceType(InstanceType.N1.name());
        // 设置需要创建的BCC实例类型为普通型BCCⅡ 型
        createInstanceRequest.setInstanceType(InstanceType.N2.name());
        // 设置需要创建的BCC实例类型为计算优化型型
        createInstanceRequest.setInstanceType(InstanceType.C1.name());
        // 设置需要创建的BCC实例类型为存储优化型
        createInstanceRequest.setInstanceType(InstanceType.S1.name());
        // 执行创建BCC请求
        CreateInstanceResponse createInstanceResponse = bccClient.createInstance(createInstanceRequest);
        for (String instanceId : createInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
     
    // 创建GPU BCC虚机
    public static void createGpuInstance(BccClient bccClient) {
        CreateInstanceRequest createInstanceRequest = new CreateInstanceRequest();
    
        // 设置创建BCC虚机使用的镜像
        createInstanceRequest.setImageId(imageId);
        // 设置创建BCC的密码
        createInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的核数
        createInstanceRequest.setCpuCount(12);
        // 设置创建BCC的内存大小GB
        createInstanceRequest.setMemoryCapacityInGB(40);
        // 设置创建BCC使用的网络带宽大小
        createInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createInstanceRequest.setName(newName);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        // createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 设置创建BCC的付费方式为包年包月计费的预付费
        // createInstanceRequest.setBilling(new Billing().withPaymentTiming("Prepaid"));
        // 设置创建BCC的付费方式为后付费
        createInstanceRequest.setBilling(new Billing().withPaymentTiming("Postpaid"));
    
        List<EphemeralDisk> ephemeralDiskList = new ArrayList<EphemeralDisk>();
        // DCC实例可以创建多块本地盘,需要指定磁盘类型以及大小。
        // 其他类型BCC最多只能使用一块本地盘,使用默认磁盘类型,需要指定磁盘大小。
        ephemeralDiskList.add(new EphemeralDisk().withSizeInGB(450));
    
        // 设置需要创建的BCC实例类型为GPU类型
        createInstanceRequest.setInstanceType(InstanceType.G1.name());
        createInstanceRequest.setGpuCard(GpuCardType.P4);
        createInstanceRequest.setCardCount(1);
        // 执行创建BCC请求
        CreateInstanceResponse createInstanceResponse = bccClient.createInstance(createInstanceRequest);
        for (String instanceId : createInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
    
    // 创建FPGA BCC虚机
    public static void createFpgaInstance(BccClient bccClient) {
        CreateInstanceRequest createInstanceRequest = new CreateInstanceRequest();
    
        // 设置创建BCC虚机使用的镜像
        createInstanceRequest.setImageId("m-r3BBe7Ep");
        // 设置创建BCC的密码
        createInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的核数
        createInstanceRequest.setCpuCount(16);
        // 设置创建BCC的内存大小GB
        createInstanceRequest.setMemoryCapacityInGB(64);
        // 设置创建BCC使用的网络带宽大小
        createInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createInstanceRequest.setName(newName);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        // createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 设置创建BCC的付费方式为包年包月计费的预付费
        // createInstanceRequest.setBilling(new Billing().withPaymentTiming("Prepaid"));
        // 设置创建BCC的付费方式为后付费
        createInstanceRequest.setBilling(new Billing().withPaymentTiming("Postpaid"));
    
        List<EphemeralDisk> ephemeralDiskList = new ArrayList<EphemeralDisk>();
        // DCC实例可以创建多块本地盘,需要指定磁盘类型以及大小。
        // 其他类型BCC最多只能使用一块本地盘,使用默认磁盘类型,需要指定磁盘大小。
        ephemeralDiskList.add(new EphemeralDisk().withSizeInGB(450));
    
        // 设置需要创建的BCC实例类型为FPGA类型
        createInstanceRequest.setInstanceType(InstanceType.F1.name());
        // 设置需要创建FPGA卡信息
        createInstanceRequest.setFpgaCard(FpgaCardType.KU115);
        createInstanceRequest.setCardCount(1);
        // 执行创建BCC请求
        CreateInstanceResponse createInstanceResponse = bccClient.createInstance(createInstanceRequest);
        for (String instanceId : createInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
        
    // 创建专属实例(支持对明文密码加密)
    public static void createDccInstanceWithEncryption(DccClient dccClient) {
        CreateDccInstanceRequest createDccInstanceRequest = new CreateDccInstanceRequest();
    
        // 设置创建BCC虚机使用的镜像
        createDccInstanceRequest.setImageId(imageId);
        // 设置创建BCC的密码
        createDccInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的核数
        createDccInstanceRequest.setCpuCount(newCpuCount);
        // 设置创建BCC的内存大小GB
        createDccInstanceRequest.setMemoryCapacityInGB(newMemoryInGb);
        // 设置创建BCC使用的网络带宽大小
        createDccInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createDccInstanceRequest.setName(newName);
    
        // 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,
        // 同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
        // 设置创建BCC使用的子网,
        createDccInstanceRequest.setSubnetId(subnetId);
        // 设置创建BCC使用的安全组
        createDccInstanceRequest.setSecurityGroupId(securityGroupId);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createDccInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 设置创建BCC的付费方式为包年包月计费的预付费
        createDccInstanceRequest.setBilling(new Billing().withPaymentTiming("Prepaid"));
        // 设置创建BCC的付费方式为后付费
        createDccInstanceRequest.setBilling(new Billing().withPaymentTiming("Postpaid"));
    
        List<EphemeralDisk> ephemeralDiskList = new ArrayList<EphemeralDisk>();
        // DCC实例可以创建多块本地盘,需要指定磁盘类型以及大小。
        // 其他类型BCC最多只能使用一块本地盘,使用默认磁盘类型,需要指定磁盘大小。
        ephemeralDiskList.add(new EphemeralDisk().withSizeInGB(sizeInGb));
    
        // 可以创建以下几种BCC机型
        
        // 设置需要创建BCC使用的DCC服务器id
        createDccInstanceRequest.setDedicatedHostId(dedicatedHostId);
        // 设置需要创建的BCC实例类型为普通型BCCⅠ 型
        createDccInstanceRequest.setInstanceType(InstanceType.N1.name());
        // 设置需要创建的BCC实例类型为普通型BCCⅡ 型
        createDccInstanceRequest.setInstanceType(InstanceType.N2.name());
        // 设置需要创建的BCC实例类型为计算优化型型
        createDccInstanceRequest.setInstanceType(InstanceType.C1.name());
        // 设置需要创建的BCC实例类型为存储优化型
        createDccInstanceRequest.setInstanceType(InstanceType.S1.name());
        // 执行创建BCC请求
        CreateDccInstanceResponse createDccInstanceResponse = dccClient.createDccInstanceWithEncryption(createDccInstanceRequest);
        for (String instanceId : createDccInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
     
    1. 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的实例id信息了解BCC虚机的创建进度。
    2. 本接口用于创建一个或多个同配虚拟机实例。
    3. 创建实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
    4. 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于100;预付费方式的实例则需要账户现金余额大于等于实例费用。
    5. 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
    6. 缺省情形下,一个实例最多只能挂载5个云磁盘。
    7. 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
    8. 创建实例支持创建和添加临时数据盘,但不支持单独创建或添加临时数据盘。
    9. 临时数据盘不支持挂载、卸载、删除。
    10. 普通实例的临时数据盘最大不能超过500G。
    11. 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
    12. 指定公网IP带宽创建,计费方式为按照带宽计费。
    13. 创建接口为异步创建,可通过查询实例详情接口查询实例状态
    14. 可通过该接口指定专属服务器创建实例,专属实例不参与计费。专属实例只能通过ephemeralDisks创建临时盘并指定磁盘类型。
    15. 每个实例最多只能购买一块临时数据盘。
    16. 实例的临时数据盘默认只有hp1类型。
    17. 通过instanceType字段指定需要创建的虚机类型,目前API支持创建的虚机类型参见下述InstanceType。参数(instanceType,cpuCount,memoryCapacityInGB)可以确定需要的机型以及配置。
    18. 创建存储优化型实例必须购买临时数据盘,通过ephemeralDisks指定临时盘数据盘大小,默认nvme类型数据盘,无需指定。
    19. 创建请求详细使用请参考BCC API 文档创建实例
    20. 创建FPGA BCC虚机需要使用指定的(CPU、内存、本地数据盘、FPGA卡类型以及专用镜像), 详细请参考BCC API 文档FPGA型BCC可选规格配置
    21. 创建GPU BCC虚机需要使用指定的(CPU、内存、本地数据盘、GPU卡类型), 详细请参考BCC API 文档GPU型BCC可选规格配置

    创建实例(通过指定实例套餐规格)

    使用以下代码可以创建BCC实例,包括普通型BCC、存储优化型BCC、计算优化型BCC、大数据机型BCC、GPU机型BCC、FPGA机型BCC:

    public static void createInstanceBySpec(BccClient bccClient) {
        CreateInstanceRequest createInstanceRequest = new CreateInstanceRequest();
    
        // 设置创建BCC虚机使用的镜像
        createInstanceRequest.setImageId(imageId);
        // 设置创建BCC的密码
        createInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的套餐规格
        createInstanceRequest.setSpec(spec);
        // 设置创建BCC使用的网络带宽大小
        createInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createInstanceRequest.setName(newName);
        // 设置创建BCC所在的zone
        createInstanceRequest.setZoneName(zoneName);
    
        // 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,
        // 同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
        // 设置创建BCC使用的子网,
        createInstanceRequest.setSubnetId(subnetId);
        // 设置创建BCC使用的安全组
        createInstanceRequest.setSecurityGroupId(securityGroupId);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 设置创建BCC的付费方式为包年包月计费的预付费
        // createInstanceRequest.setBilling(new Billing().withPaymentTiming("Prepaid"));
        // 设置创建BCC的付费方式为后付费
        createInstanceRequest.setBilling(new Billing().withPaymentTiming("Postpaid"));
    
        List<EphemeralDisk> ephemeralDiskList = new ArrayList<EphemeralDisk>();
        // 本地盘,使用默认磁盘类型,需要指定磁盘大小。
        ephemeralDiskList.add(new EphemeralDisk().withSizeInGB(sizeInGb));
    
        // 执行创建BCC请求
        CreateInstanceResponse createInstanceResponse = bccClient.createInstanceBySpec(createInstanceRequest);
        for (String instanceId : createInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
     
     
    1. 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的实例id信息了解BCC虚机的创建进度。
    2. 本接口用于创建一个或多个同配虚拟机实例。
    3. 创建实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
    4. 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于100;预付费方式的实例则需要账户现金余额大于等于实例费用。
    5. 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
    6. 缺省情形下,一个实例最多只能挂载5个云磁盘。
    7. 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
    8. 创建实例支持创建和添加临时数据盘,但不支持单独创建或添加临时数据盘。
    9. 临时数据盘不支持挂载、卸载、删除。
    10. 普通实例的临时数据盘最大不能超过500G。
    11. 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
    12. 指定公网IP带宽创建,计费方式为按照带宽计费。
    13. 创建接口为异步创建,可通过查询实例详情接口查询实例状态
    14. 每个实例最多只能购买一块临时数据盘。
    15. 实例的临时数据盘默认只有hp1类型。
    16. 创建存储优化型实例必须购买临时数据盘,通过ephemeralDisks指定临时盘数据盘大小,默认nvme类型数据盘,无需指定。
    17. 创建请求详细使用请参考BCC API 文档创建实例(通过指定实例套餐规格) )

    创建竞价实例

    使用以下代码可以创建BCC竞价实例,包括普通型Ⅰ型实例、普通型Ⅲ型实例:

    public static void createBidInstance(BccClient bccClient) {
        CreateInstanceRequest createInstanceRequest = new CreateInstanceRequest();
        
        // 设置创建BCC虚机使用的竞价模式:market 或者 custom
        createInstanceRequest.setBidModel(bidModel);
        // 设置创建BCC虚机使用的竞价金额,只有当bidModel为custom时有效
        createInstanceRequest.setBidPrice(bidPrice);
        // 设置创建BCC虚机使用的镜像
        createInstanceRequest.setImageId(imageId);
        // 设置创建BCC的密码
        createInstanceRequest.setAdminPass(adminPass);
        // 设置创建BCC的核数
        createInstanceRequest.setCpuCount(newCpuCount);
        // 设置创建BCC的内存大小GB
        createInstanceRequest.setMemoryCapacityInGB(newMemoryInGb);
        // 设置创建BCC使用的网络带宽大小
        createInstanceRequest.setNetworkCapacityInMbps(networkCapacityInMbps);
        // 设置创建BCC的名称
        createInstanceRequest.setName(newName);
        // 设置创建BCC所在的zone
        createInstanceRequest.setZoneName(zoneName);
    
        // 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,
        // 同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
        // 设置创建BCC使用的子网
        createInstanceRequest.setSubnetId(subnetId);
        // 设置创建BCC使用的安全组
        createInstanceRequest.setSecurityGroupId(securityGroupId);
    
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withCdsSizeInGB(cdsSizeInGb).withStorageType("hp1"));
        // 根据CDS数据盘快照snapshotId中创建CDS数据盘,默认使用快照大小创建CDS磁盘
        createCdsModelList.add(new CreateCdsModel().withSnapshotId(snapshotId));
        // 创建需要创建的CDS磁盘列表
        createInstanceRequest.setCreateCdsList(createCdsModelList);
    
        // 可以创建以下几种BCC机型
        
        // 设置需要创建的BCC实例类型为普通型BCCⅠ 型
        createInstanceRequest.setInstanceType(InstanceType.N1.name());
        // 设置需要创建的BCC实例类型为普通型BCCⅢ 型
        createInstanceRequest.setInstanceType(InstanceType.N3.name());
        // 执行创建BCC请求
        CreateInstanceResponse createInstanceResponse = bccClient.createBidInstance(createInstanceRequest);
        for (String instanceId : createInstanceResponse.getInstanceIds()) {
            System.out.println(instanceId);
        }
    }
     
     
    1. 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的竞价实例id信息了解BCC虚机的创建进度。
    2. 本接口用于创建一个或多个同配虚拟机竞价实例。
    3. 创建竞价实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
    4. 创建计费方式为后付费的竞价实例需要账户现金余额+通用代金券大于100;预付费方式的竞价实例则需要账户现金余额大于等于竞价实例费用。
    5. 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
    6. 缺省情形下,一个实例最多只能挂载5个云磁盘。
    7. 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
    8. 普通实例的临时数据盘最大不能超过500G。
    9. 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
    10. 指定公网IP带宽创建,计费方式为按照带宽计费。
    11. 创建接口为异步创建,可通过查询实例详情接口查询实例状态 )

    查询竞价实例套餐

    以下代码可以查询BCC虚机竞价套餐

    public static void listBidFlavor(BccClient bccClient) {
        // 执行查询竞价实例套餐操作
        ListBccBidFlavorResponse listBccBidFlavorResponse = bccClient.listBidFlavor();
    
        for(ZoneResource zoneResource: listBccBidFlavorResponse.getZoneResources()) {
            System.out.println(zoneResource.getZoneName());    
        }
    }

    查询竞价实例市场价

    以下代码可以查询竞价实例市场价

    public static void getBidInstancePrice(BccClient bccClient) {
        GetBidInstancePriceRequest getBidInstancePriceRequest = new GetBidInstancePriceRequest();
        // 设置待查询的竞价实例类型为普通型BCC Ⅰ型
        getBidInstancePriceRequest.setInstanceType(InstanceType.N1.name());
        // 设置待查询的竞价实例类型为普通型BCC Ⅲ型
        getBidInstancePriceRequest.setInstanceType(InstanceType.N3.name());
        // 设置待查询的竞价实例的CPU核数
        getBidInstancePriceRequest.setCpuCount(cpuCount);
        // 设置待查询的竞价实例的内存大小GB
        getBidInstancePriceRequest.setMemoryCapacityInGB(memoryCapacityInGB);
        // 设置待查询的竞价实例的系统盘大小
        getBidInstancePriceRequest.setRootDiskSizeInGb(rootDiskSizeInGb);
        // 设置待查询的竞价实例的系统盘介质
        getBidInstancePriceRequest.setRootDiskStorageType(rootDiskStorageType);
        
        List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
        // 新建空白的CDS数据盘,类型为高性能型
        createCdsModelList.add(new CreateCdsModel().withStorageType(StorageType.hp1).withCdsSizeInGB(5));
        // 设置待查询的竞价实例的CDS磁盘列表
        getBidInstancePriceRequest.setCreateCdsList(createCdsList);
        // 设置待查询的竞价实例的购买个数
        getBidInstancePriceRequest.setPurchaseCount(purchaseCount);
    
        // 执行查询竞价实例市场价的操作
        GetBidInstancePriceResponse getBidInstancePriceResponse = bccClient.getBidInstancePrice(getBidInstancePriceRequest);
        
        // 获取待查询的竞价实例总价
        System.out.println(getBidInstancePriceResponse.getMoney());
        // 获取待查询的竞价实例购买个数
        System.out.println(getBidInstancePriceResponse.getCount());
        // 获取待查询的竞价实例的单个价格
        System.out.println(getBidInstancePriceResponse.getPerMoney());
    }

    取消竞价实例订单

    以下代码可以取消竞价实例订单

    public static void cancelBidOrder(BccClient bccClient) {
        CancelBidOrderRequest cancelBidOrderRequest = new CancelBidOrderRequest();
        // 设置待取消的竞价实例订单ID
        cancelBidOrderRequest.setOrderId();
        // 执行取消竞价实例订单操作
        CancelBidOrderResponse cancelBidOrderResponse = client.cancelBidOrder(cancelBidOrderRequest);
        cancelBidOrderResponse.getOrderId();
    }

    查询实例列表

    以下代码可以查询BCC虚机实例列表,支持通过内网ip、专属服务器id、可用区名称进行筛选:

    public static void listInstance(BccClient bccClient) {
        ListInstancesRequest listInstancesRequest = new ListInstancesRequest();
        // 设置分页标志
        listInstancesRequest.setMarker(instanceId);
        // 设置分页返回数据大小
        listInstancesRequest.setMaxKeys(maxKey);
        // 通过internalIp过滤虚机BCC列表
        listInstancesRequest.setInternalIp(internalIp);
        // 通过专属服务器dccId过滤BCC列表
        listInstancesRequest.setDedicatedHostId(dedicatedHostId);
        // 通过zoneName过滤BCC虚机列表
        listInstancesRequest.setZoneName(zoneName);
        // 执行查询虚机列表操作
        ListInstancesResponse listInstancesResponse = bccClient.listInstances(listInstancesRequest);
    
        for (InstanceModel instanceModel : listInstancesResponse.getInstances()) {
            System.out.println(instanceModel.getId());
        }
    }

    查询可关机不计费的实例列表

    使用以下代码可以查询可关机不计费的实例列表,支持通过内网ip、密钥对id、可用区名称进行筛选:

    public static void getInstanceNoChargeList(BccClient bccClient) {
        ListGetInstanceNoChargeRequest listGetInstanceNoChargeRequest = listGetInstanceNoChargeRequest();
        // 设置分页标志
        listGetInstanceNoChargeRequest.setMarker(instanceId);
        // 设置分页返回数据大小,默认为1000,最大数量不超过1000
        listGetInstanceNoChargeRequest.setMaxKeys(maxKeys);
        // 通过internalIp进行查询
        listGetInstanceNoChargeRequest.setInternalIp(internalIp);
        // 通过keypairId进行查询
        listGetInstanceNoChargeRequest.setKeypairId(keypairId);
        // 通过可用区名称进行查询
        listGetInstanceNoChargeRequest.setZoneName(zoneName);
        // 执行查询可关机不计费的实例列表的接口
        ListInstancesResponse response = bccClient.getInstanceNoChargeList(listGetInstanceNoChargeRequest);
    
        for(InstanceModel instanceModel: response.getInstances()){
            System.out.println(instanceModel.getId());
        }
    }

    查询实例详情

    使用以下代码可以查询指定BCC虚机的详细信息:

    public static void getInstanceDetail(BccClient bccClient) {
        // 查询指定BCC虚机的详细信息
        InstanceModel instanceModel = bccClient.getInstance(instanceId).getInstance();
        System.out.println(instanceModel.getName());
    }

    启动实例

    使用以下代码可以启动指定BCC虚机实例:

    public static void startInstance(BccClient bccClient) {
        bccClient.startInstance(instanceId);
    }

    接口调用成功后实例进入 Starting 状态。 实例状态必须为 Stopped,调用此接口才可以成功返回,否则提示409错误。

    停止实例

    使用以下代码可以停止指定BCC虚机实例:

    public static void stopInstance(BccClient bccClient) {
        StopInstanceRequest stopInstanceRequest = new StopInstanceRequest();
        // 设置BCC虚机id
        stopInstanceRequest.setInstanceId(instanceId);
        // 设置是否强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据
        stopInstanceRequest.setForceStop(Boolean.TRUE);
       // 设置是否关机不计费,TRUE为关机不计费,FALSE为关机计费。注意:只有白名单用户才可以实行关机不计费
        stopInstanceRequest.setStopWithNoCharge(Boolean.TRUE);
        // 执行BCC虚机停止操作
        bccClient.stopInstance(stopInstanceRequest);
    }
    • 系统后台会在实例实际 Stop 成功后进入“已停止”状态。
    • 只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误。
    • 实例支持强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据。

    重启实例

    使用以下代码可以重启指定BCC虚机实例:

    public static void rebootInstance(BccClient bccClient) {
        RebootInstanceRequest rebootInstanceRequest = new RebootInstanceRequest();
        // 设置BCC虚机id
        rebootInstanceRequest.setInstanceId(instanceId);
        // 设置是否强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据
        rebootInstanceRequest.setForceStop(Boolean.TRUE);
        // 执行BCC虚机重启操作
        bccClient.rebootInstance(rebootInstanceRequest);
    }
    • 只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误。
    • 接口调用成功后实例进入 Starting 状态。
    • 支持强制重启,强制重启等同于传统服务器的断电重启,可能丢失实例操作系统中未写入磁盘的数据。

    修改实例密码

    使用以下代码可以修改指定虚机的管理员密码:

    public static void modifyInstancePassword(BccClient bccClient) {
        ModifyInstancePasswordRequest modifyInstancePasswordRequest = new ModifyInstancePasswordRequest();
        // 设置BCC虚机id
        modifyInstancePasswordRequest.setInstanceId(instanceId);
        // 设置BCC虚机新密码
        modifyInstancePasswordRequest.setAdminPass(adminPass);
        // 执行修改BCC实例密码操作
        bccClient.modifyInstancePassword(modifyInstancePasswordRequest);
    }

    只有 Running 和 Stopped 状态的实例才可以用调用接口,否则提示 409 错误。

    修改实例属性

    修改实例名称

    使用以下代码可以修改指定虚机的命名,目前只支持修改BCC虚机的名称属性:

    public static void modifyAttributeInstance(BccClient bccClient) {
         ModifyInstanceAttributesRequest modifyInstanceAttributesRequest = new ModifyInstanceAttributesRequest();
         // 设置BCC虚机id 
         modifyInstanceAttributesRequest.setInstanceId(instanceId);
         // 设置BCC虚机新名称 
         modifyInstanceAttributesRequest.setName(newName);
         // 执行修改BCC实例属性操作 
         bccClient.modifyInstanceAttributes(modifyInstanceAttributesRequest);
     }

    修改实例描述

    使用以下代码可以修改特定实例描述信息:

    public static void modifyDescInstance(BccClient bccClient) {
    
        ModifyInstanceDescRequest modifyInstanceDescRequest = new ModifyInstanceDescRequest();
    
        // 设置BCC虚机id
    
        modifyInstanceDescRequest.setInstanceId(instanceId);
    
        // 设置该虚机的描述
    
        modifyInstanceDescRequest.setDesc(newDesc);
    
        // 执行修改BCC操作
    
        bccClient.modifyInstanceDesc(modifyInstanceDescRequest);
    
    }

    只有 Running 和 Stopped 状态的实例才可以调用该接口,否则提示 409 错误。

    重装实例

    使用以下代码可以使用镜像重建指定BCC虚机实例:

    public static void rebuildInstance(BccClient bccClient) {
        RebuildInstanceRequest rebuildInstanceRequest = new RebuildInstanceRequest();
        // 设置BCC虚机id
        rebuildInstanceRequest.setInstanceId(instanceId);
        // 设置重装BCC虚机需要的镜像id
        rebuildInstanceRequest.setImageId(imageId);
        // 设置BCC虚机新密码
        rebuildInstanceRequest.setAdminPass(adminPass);
        // 设置BCC虚机重装所要绑定的密钥对ID
        rebuildInstanceRequest.setKeypairId(keypairId);
        // 执行重装BCC虚机操作
        bccClient.rebuildInstance(rebuildInstanceRequest);
    }

    实例重装后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。

    重装实例(批量重装)

    使用以下代码可以使用镜像批量重建指定BCC虚机实例:

    public static void rebuildBatchInstance(BccClient bccClient) {
        RebuildBatchInstanceRequest rebuildBatchInstanceRequest = new RebuildBatchInstanceRequest();
        // 设置BCC虚机ids
        rebuildBatchInstanceRequest.setInstanceIds(instanceIds);
        // 设置重装BCC虚机需要的镜像id
        rebuildBatchInstanceRequest.setImageId(imageId);
        // 设置BCC虚机新密码
        rebuildBatchInstanceRequest.setAdminPass(adminPass);
        // 设置BCC虚机重装所要绑定的密钥对ID
        rebuildBatchInstanceRequest.setKeypairId(keypairId);
        // 执行批量重装BCC虚机操作
        bccClient.rebuildBatchInstance(rebuildBatchInstanceRequest);
    }

    实例重装后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。

    计费变更-转预付费

    以下代码用于将实例计费模式由后付费转预付费

    public static void changeToPrepaid(BccClient bccClient) {
        ChangeToPrepaidRequest changeToPrepaidRequest = new ChangeToPrepaidRequest();
        // 设置将要变更为预付费的实例ID
        changeToPrepaidRequest.setInstanceId(instanceId);
        // 设置将要变更预付费的时长,单位为月
        changeToPrepaidRequest.setDuration(duration);
        // 设置是否变更关联的数据盘,TRUE表示变更,FLASE表示不变更
        changeToPrepaidRequest.setRelationCds(Boolean.TRUE);
        // 执行计费变更-转预付费操作
        ChangeToPrepaidResponse changeToPrepaidResponse = bccClient.changeToPrepaid(changeToPrepaidRequest);
        changeToPrepaidResponse.getOrderId();
    }

    释放实例

    对于后付费Postpaid以及预付费Prepaid过期的BCC虚机实例,可以使用以下代码将其释放:

    public static void releaseInstance(BccClient bccClient) {
        bccClient.releaseInstance(instanceId);
    }
    • 释放单个云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
    • 只有付费类型为Postpaid或者付费类型为Prepaid且已过期的实例才可以释放。
    • 实例释放后,已挂载的CDS磁盘自动卸载,,基于此CDS磁盘的快照会保留。
    • 实例释放后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。

    释放实例(POST请求的释放)

    • 释放单个云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
    • 释放的时候默认只释放实例和系统盘,用户可以选择是否关联释放当前时刻,实例挂载的eip+数据盘(只能统一释放完或者不释放。而不是挂载的数据盘释放一个或者多个)是否一起释放。
    public static void releaseInstanceByPost(BccClient bccClient) {
        ReleaseInstanceByPostRequest releaseInstanceByPostRequest = new ReleaseInstanceByPostRequest();
        // 设置待释放的实例ID
        releaseInstanceByPostRequest.setInstanceId(instanceId);
        // 设置释放的时候是否关联释放当前时刻,实例挂载的eip+数据盘 false代表否 true代表是
        // (只有该字段为true时 deleteCdsSnapshotFlag字段才会有效,若该字段为false,deleteCdsSnapshotFlag字段的值无效)
        releaseInstanceByPostRequest.setRelatedReleaseFlag(Boolean.TRUE);
        // 设置是否释放云磁盘快照 false代表否 true代表是
        releaseInstanceByPostRequest.setDeleteCdsSnapshotFlag(Boolean.TRUE);
        //执行释放实例(POST请求的释放)操作
        bccClient.releaseInstanceByPost(releaseInstanceByPostRequest);
    }

    实例扩缩容

    支持对BCC虚机的CPU以及内存进行扩缩容操作,具体可参考以下代码:

    public static void resizeInstance(BccClient bccClient) {
        ResizeInstanceRequest resizeInstanceRequest = new ResizeInstanceRequest();
        // 设置BCC虚机id
        resizeInstanceRequest.setInstanceId(instanceId);
        // 设置新的CPU个数
        resizeInstanceRequest.setCpuCount(newCpuCount);
        // 设置新的BCC虚机内存,单位GB
        resizeInstanceRequest.setMemoryCapacityInGB(newMemoryInGb);
        // 执行BCC实例扩缩容
        bccClient.resizeInstance(resizeInstanceRequest);
    }
    • 实例计费方式为预付费时,不能进行缩容操作
    • 实例计费方式为后付费时,可弹性扩缩容
    • 只有实例Running或Stopped状态时可以进行扩缩容操作
    • 实例扩缩容之后会重启一次
    • 异步接口,可通过查询实例详情接口查看扩缩容状态是否完成
    • 专属实例可以通过指定的cpu、内存以及临时盘大小,专属实例临时盘大小只支持扩容而不支持缩容,具体请参考API文档 实例扩缩容

    实例扩缩容(通过指定实例套餐规格)

    为指定虚机扩缩容,目前支持通过更新实例套餐规格对虚机的CPU以及内存进行扩缩容操作。

    public static void resizeInstanceByPost(BccClient bccClient) {
        ResizeInstanceRequest resizeInstanceRequest = new ResizeInstanceRequest();
        // 设置BCC虚机id
        resizeInstanceRequest.setInstanceId(instanceId);
        // 设置新的套餐规格
        resizeInstanceRequest.setSpec(spec);
        // 执行BCC实例扩缩容
        bccClient.resizeInstanceByPost(resizeInstanceRequest);
    }
    • 只有实例Running或Stopped状态时可以进行扩缩容操作
    • 实例扩缩容之后会重启一次
    • 异步接口,可通过查询实例详情接口查看扩缩容状态是否完成

    将实例加入安全组

    以下代码可以将指定BCC虚机实例加入到指定安全组内:

    public static void bindInstanceToSecurityGroup(BccClient bccClient) {
        BindSecurityGroupRequest bindSecurityGroupRequest = new BindSecurityGroupRequest();
        // 设置安全组id
        bindSecurityGroupRequest.setSecurityGroupId(securityGroupId);
        // 设置BCC虚机实例id
        bindSecurityGroupRequest.setInstanceId(instanceId);
        // 执行将实例加入安全组操作
        bccClient.bindInstanceToSecurityGroup(bindSecurityGroupRequest);
    }

    每个实例最多关联10个安全组。

    将实例移出安全组

    以下代码可以将指定实例移出指定安全组中:

    public static void unbindInstanceFromSecurityGroup(BccClient bccClient) {
        UnbindSecurityGroupRequest unbindSecurityGroupRequest = new UnbindSecurityGroupRequest();
        // 设置安全组id
        unbindSecurityGroupRequest.setSecurityGroupId(securityGroupId);
        // 设置BCC虚机实例id
        unbindSecurityGroupRequest.setInstanceId(instanceId);
        // 执行将实例移出安全组操作
        bccClient.unbindInstanceFromSecurityGroup(unbindSecurityGroupRequest);
    }
    • 每个实例至少关联一个安全组,默认关联默认安全组。
    • 如果实例仅属于一个安全组,尝试移出时,请求会报 403 错。

    查询实例VNC地址

    使用以下代码可以查询指定BCC虚机实例的VNC URL:

    public static void getInstanceVnc(BccClient bccClient) {
        System.out.println(bccClient.getInstanceVnc(instanceId).getVncUrl());
    }
    • VNC地址一次使用后即失效
    • URL地址有效期为10分钟

    实例续费

    对BCC虚机的续费操作,可以延长过期时长,以下代码可以对磁盘进行续费:

    public static void purchaseReservedInstance(BccClient bccClient) {
        PurchaseReservedInstanceRequeset purchaseReservedInstanceRequeset = new PurchaseReservedInstanceRequeset();
        // 设置BCC虚机id
        purchaseReservedInstanceRequeset.setInstanceId(instanceId);
        // 设置billing信息
        Billing billing = new Billing();
        // 设置续费时长,单位目前只支持'月'为单位
        billing.setReservation(new Reservation().withReservationLength(reservationLength));
        // 设置billing信息
        purchaseReservedInstanceRequeset.setBilling(billing);
        // 执行BCC虚机续费
        bccClient.purchaseReservedInstance(purchaseReservedInstanceRequeset);
    }
    • BCC虚机实例扩缩容期间不能进行续费操作。
    • 续费时若实例已欠费停机,续费成功后有个BCC虚机实例启动的过程。
    • 该接口是一个异步接口。
    • 专属实例不支持续费。

    实例绑定标签

    以下代码用于实例绑定标签

    public static void bindInstanceToTags(BccClient bccClient) {
        List<TagModel> changeTags = new ArrayList<TagModel>();
        // 设置想要绑定的标签
        TagModel tagModel = new TagModel().withTagKey("test007").withTagValue("test007");
        changeTags.add(tagModel);
        BindTagsRequest bindTagsRequest = new BindTagsRequest();
        // 设置对应的实例ID
        bindTagsRequest.setInstanceId(instanceId);
        // 设置绑定标签
        bindTagsRequest.setChangeTags(changeTags);
        // 执行实例绑定标签操作
        bccClient.bindInstanceToTags(bindTagsRequest);
    }
    • 给实例绑定标签,用于分类和查找。

    实例解绑标签

    以下代码用于实例解绑标签

    public static void unbindInstanceToTags(BccClient bccClient) {
        List<TagModel> changeTags = new ArrayList<TagModel>();
        // 设置想要解绑的标签
        TagModel tagModel = new TagModel().withTagKey("test007").withTagValue("test007");
        changeTags.add(tagModel);
        UnbindTagsRequest unbindTagsRequest = new UnbindTagsRequest();
        // 设置对应的实例ID
        unbindTagsRequest.setInstanceId(instanceId);
        // 设置解绑的标签
        unbindTagsRequest.setChangeTags(changeTags);
        // 执行实例解绑标签操作
        bccClient.unbindInstanceToTags(unbindTagsRequest);
    }
    • 解绑实例上定义的标签。
    • 可以同时解绑多个标签。

    实例变更子网

    public static void updateInstanceSubnet(BccClient bccClient) {
        ChangeInstanceSubnetRequest changeInstanceSubnetRequest = new ChangeInstanceSubnetRequest();
        // 设置要变更子网的实例ID
        changeInstanceSubnetRequest.setInstanceId(instanceId);
        // 设置实例将要变更的子网ID
        changeInstanceSubnetRequest.setSubnetId(subnetId);
        // 设置是否自动重启 false为否, true为是
        changeInstanceSubnetRequest.setReboot(Boolean.TRUE);
        // 执行实例变更子网操作
        client.updateInstanceSubnet(changeInstanceSubnetRequest);
    }
    • 变更实例所属的子网。 变更子网后默认自动重启,用户选择是否执行该操作。 变更子网的范围目前仅支持在同AZ下变更子网,不支持跨AZ或跨VPC变更子网,如果从普通子网变更至NAT专属子网请先手动解绑EIP

    查询实例套餐规格

    查询实例资源套餐规格列表信息。创建虚机时建议使用参数(spec)指定需要的机型以及配置:

    public static void listFlavorSpec(BccClient bccClient) {
        ListFlavorSpecRequest listFlavorSpecRequest = new ListFlavorSpecRequest();
        // 设置可用区
        listFlavorSpecRequest.setZoneName(zoneName);
        // 查询指定可用区下的实例套餐规格
        bccClient.listFlavorSpec(listFlavorSpecRequest);
    }
    • 默认获取当前地域下所有可用区的实例套餐规格,可通过设置可用区获取指定可用区下的实例套餐规格。

    查询实例套餐价格

    查询实例资源套餐规格对应的价格。:

    public static void getPriceBySpec(BccClient bccClient) {
        BccPriceRequest bccPriceRequest = new BccPriceRequest();
        // 设置实例规格族
        bccPriceRequest.setSpecId(specId);
        // 设置实例套餐规格
        bccPriceRequest.setSpec(spec);
        // 设置可用区
        bccPriceRequest.setZoneName(zoneName);
        // 设置计费方式
        bccPriceRequest.setPaymentTiming(paymentTiming);
        // 设置购买时长(单位:月)
        bccPriceRequest.setPurchaseLength(purchaseLength);
        // 设置购买数量
        bccPriceRequest.setPurchaseCount(purchaseCount);
        // 查询指定可用区下的实例套餐规格
        bccClient.getPriceBySpec(bccPriceRequest);
    }
    • 设置实例规格族会获取当前规格族下所有套餐的价格
    • 设置实例套餐规格获取当前套餐的价格
    • 付费方式,后付费:Postpaid,预付费:Prepaid
    上一篇
    BccClient
    下一篇
    磁盘