BCC实例
BCC实例是百度智能云上的云服务器操作实例,也是计费、权限控制等高级功能的管理实体。
创建实例(通过指定实例套餐规格)
使用以下代码可以创建BCC实例,包括普通型BCC、存储优化型BCC、计算优化型BCC、大数据机型BCC、GPU机型BCC、FPGA机型BCC:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.Billing;
7import com.baidubce.services.bcc.model.CreateCdsModel;
8import com.baidubce.services.bcc.model.Reservation;
9import com.baidubce.services.bcc.model.StorageType;
10import com.baidubce.services.bcc.model.instance.CreateInstanceRequest;
11import com.baidubce.services.bcc.model.instance.CreateInstanceResponse;
12
13import java.util.ArrayList;
14import java.util.List;
15
16import static com.baidubce.services.bcc.model.instance.FpgaCardType.KU115;
17import static com.baidubce.services.bcc.model.instance.GpuCardType.P4;
18
19public class Main {
20 public static void main(String[] args) {
21 String endpoint = "bcc.bj.baidubce.com";
22 String ak = "ak";
23 String sk = "sk";
24
25 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
26 .withProtocol(Protocol.HTTP)
27 .withCredentials(new DefaultBceCredentials(ak, sk))
28 .withEndpoint(endpoint);
29
30 BccClient client = new BccClient(bccClientConfiguration);
31
32 CreateInstanceRequest instanceRequest = new CreateInstanceRequest();
33 // 镜像ID
34 instanceRequest.setImageId("m-***");
35 // 待创建虚拟机实例的类型
36 instanceRequest.setSpec("bcc.g5.c1m4");
37 // 待创建虚拟机实例的系统盘大小,单位GB,默认是40GB,范围为[40, 2048]GB,超过40GB按照云磁盘价格收费。注意指定的系统盘大小需要满足所使用镜像最小磁盘空间限制。
38 instanceRequest.setRootDiskSizeInGb(20);
39 // 待创建虚拟机实例系统盘介质,默认使用SSD型云磁盘
40 instanceRequest.setRootDiskStorageType("enhanced_ssd_pl1");
41 // 指定zone信息,默认为空,由系统自动选择,可通过调用查询可用区列表接口查询可用区列表。zoneName命名规范是“国家-region-可用区序列",小写,例如北京可用区A为"cn-bj-a"。
42 instanceRequest.setZoneName("cn-bj-a");
43 // 虚拟机名字。默认都不指定name。如果指定name:批量时name作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
44 instanceRequest.setName("instance-***");
45 List<CreateCdsModel> createCdsList = new ArrayList<CreateCdsModel>();
46 createCdsList.add(new CreateCdsModel()
47 .withCdsSizeInGB(50)
48 .withStorageType("enhanced_ssd_pl1"));
49 // 待创建的CDS磁盘列表
50 instanceRequest.setCreateCdsList(createCdsList);
51 // 公网带宽,单位为Mbps。必须为0~200之间的整数,为0表示不分配公网IP,默认为0Mbps
52 instanceRequest.setNetworkCapacityInMbps(10);
53 // 批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
54 instanceRequest.setPurchaseCount(1);
55 // 虚拟机主机名。默认都不指定hostname。如果指定hostname:批量时hostname作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
56 instanceRequest.setHostname("hostn***");
57 // 是否自动生成name和hostname有序后缀(可选参数) 是:true 否:false
58 instanceRequest.setAutoSeqSuffix(true);
59 // 待创建的实例管理员密码,8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()。
60 instanceRequest.setAdminPass("***");
61 // 订单、计费相关参数
62 instanceRequest.setBilling(new Billing()
63 .withPaymentTiming("Postpaid"));
64 // 指定subnet信息,为空时将使用默认子网
65 instanceRequest.setSubnetId("sbn-***");
66 // 指定securityGroup信息,为空时将使用默认安全组
67 instanceRequest.setSecurityGroupId("g-***");
68 // 待创建实例指定的标签是否需要和已有标签键进行关联,默认为false。注意值为true时要保证该标签键已存在
69 instanceRequest.setRelationTag(true);
70 // 自动快照策略ID
71 instanceRequest.setAspId("asp-***");
72 // 指定实例所在的部署集id
73 instanceRequest.setDeployId("dset-***");
74
75 CreateInstanceResponse instance = client.createInstance(instanceRequest);
76 System.out.println(instance.getInstanceIds());
77 }
78}
79
- 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的实例id信息了解BCC虚机的创建进度。
- 本接口用于创建一个或多个同配虚拟机实例。
- 创建实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
- 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于100;预付费方式的实例则需要账户现金余额大于等于实例费用。
- 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
- 缺省情形下,一个实例最多只能挂载5个云磁盘。
- 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
- 创建实例支持创建和添加临时数据盘,但不支持单独创建或添加临时数据盘。
- 临时数据盘不支持挂载、卸载、删除。
- 普通实例的临时数据盘最大不能超过500G。
- 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
- 指定公网IP带宽创建,计费方式为按照带宽计费。
- 创建接口为异步创建,可通过查询实例详情接口查询实例状态
- 每个实例最多只能购买一块临时数据盘。
- 实例的临时数据盘默认只有hp1类型。
- 创建存储优化型实例必须购买临时数据盘,通过ephemeralDisks指定临时盘数据盘大小,默认nvme类型数据盘,无需指定。
- 创建请求详细使用请参考BCC API 文档创建实例(通过指定实例套餐规格) )
创建实例
使用以下代码可以创建BCC实例,包括专属实例、普通型Ⅰ 型实例、普通型Ⅱ型实例、存储优化型BCC、计算优化型BCC:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.Billing;
7import com.baidubce.services.bcc.model.CreateCdsModel;
8import com.baidubce.services.bcc.model.Reservation;
9import com.baidubce.services.bcc.model.StorageType;
10import com.baidubce.services.bcc.model.instance.CreateInstanceRequest;
11import com.baidubce.services.bcc.model.instance.CreateInstanceResponse;
12
13import java.util.ArrayList;
14import java.util.List;
15
16import static com.baidubce.services.bcc.model.instance.FpgaCardType.KU115;
17import static com.baidubce.services.bcc.model.instance.GpuCardType.P4;
18
19public class Main {
20 public static void main(String[] args) {
21 String endpoint = "bcc.bj.baidubce.com";
22 String ak = "ak";
23 String sk = "sk";
24
25 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
26 .withProtocol(Protocol.HTTP)
27 .withCredentials(new DefaultBceCredentials(ak, sk))
28 .withEndpoint(endpoint);
29
30 BccClient client = new BccClient(bccClientConfiguration);
31
32 CreateInstanceRequest instanceRequest = new CreateInstanceRequest();
33 // 镜像ID
34 instanceRequest.setImageId("m-***");
35 // 待创建虚拟机实例的类型
36 instanceRequest.setInstanceType("N6");
37 // 待创建虚拟机实例的CPU核数
38 instanceRequest.setCpuCount(1);
39 // 待创建虚拟机实例的内存容量,单位GB
40 instanceRequest.setMemoryCapacityInGB(4);
41 // 待创建虚拟机实例的系统盘大小,单位GB,默认是40GB,范围为[40, 2048]GB,超过40GB按照云磁盘价格收费。注意指定的系统盘大小需要满足所使用镜像最小磁盘空间限制。
42 instanceRequest.setRootDiskSizeInGb(20);
43 // 待创建虚拟机实例系统盘介质,默认使用SSD型云磁盘
44 instanceRequest.setRootDiskStorageType("enhanced_ssd_pl1");
45 // 指定zone信息,默认为空,由系统自动选择,可通过调用查询可用区列表接口查询可用区列表。zoneName命名规范是“国家-region-可用区序列",小写,例如北京可用区A为"cn-bj-a"。
46 instanceRequest.setZoneName("cn-bj-a");
47 // 虚拟机名字。默认都不指定name。如果指定name:批量时name作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
48 instanceRequest.setName("instance-***");
49 List<CreateCdsModel> createCdsList = new ArrayList<CreateCdsModel>();
50 createCdsList.add(new CreateCdsModel()
51 .withCdsSizeInGB(50)
52 .withStorageType("enhanced_ssd_pl1"));
53 // 待创建的CDS磁盘列表
54 instanceRequest.setCreateCdsList(createCdsList);
55 // 公网带宽,单位为Mbps。必须为0~200之间的整数,为0表示不分配公网IP,默认为0Mbps
56 instanceRequest.setNetworkCapacityInMbps(10);
57 // 批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
58 instanceRequest.setPurchaseCount(1);
59 // 虚拟机主机名。默认都不指定hostname。如果指定hostname:批量时hostname作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
60 instanceRequest.setHostname("hostn***");
61 // 是否自动生成name和hostname有序后缀(可选参数) 是:true 否:false
62 instanceRequest.setAutoSeqSuffix(true);
63 // 待创建的实例管理员密码,8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()。
64 instanceRequest.setAdminPass("***");
65 // 订单、计费相关参数
66 instanceRequest.setBilling(new Billing()
67 .withPaymentTiming("Postpaid"));
68 // 指定subnet信息,为空时将使用默认子网
69 instanceRequest.setSubnetId("sbn-***");
70 // 指定securityGroup信息,为空时将使用默认安全组
71 instanceRequest.setSecurityGroupId("g-***");
72 // 待创建实例指定的标签是否需要和已有标签键进行关联,默认为false。注意值为true时要保证该标签键已存在
73 instanceRequest.setRelationTag(true);
74 // 自动快照策略ID
75 instanceRequest.setAspId("asp-***");
76 // 指定实例所在的部署集id
77 instanceRequest.setDeployId("dset-***");
78
79 CreateInstanceResponse instance = client.createInstance(instanceRequest);
80 System.out.println(instance.getInstanceIds());
81 }
82}
83
- 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的实例id信息了解BCC虚机的创建进度。
- 本接口用于创建一个或多个同配虚拟机实例。
- 创建实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
- 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于100;预付费方式的实例则需要账户现金余额大于等于实例费用。
- 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
- 缺省情形下,一个实例最多只能挂载5个云磁盘。
- 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
- 创建实例支持创建和添加临时数据盘,但不支持单独创建或添加临时数据盘。
- 临时数据盘不支持挂载、卸载、删除。
- 普通实例的临时数据盘最大不能超过500G。
- 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
- 指定公网IP带宽创建,计费方式为按照带宽计费。
- 创建接口为异步创建,可通过查询实例详情接口查询实例状态
- 可通过该接口指定专属服务器创建实例,专属实例不参与计费。专属实例只能通过ephemeralDisks创建临时盘并指定磁盘类型。
- 每个实例最多只能购买一块临时数据盘。
- 实例的临时数据盘默认只有hp1类型。
- 通过instanceType字段指定需要创建的虚机类型,目前API支持创建的虚机类型参见下述InstanceType。参数(instanceType,cpuCount,memoryCapacityInGB)可以确定需要的机型以及配置。
- 创建存储优化型实例必须购买临时数据盘,通过ephemeralDisks指定临时盘数据盘大小,默认nvme类型数据盘,无需指定。
- 创建请求详细使用请参考BCC API 文档创建实例
- 创建FPGA BCC虚机需要使用指定的(CPU、内存、本地数据盘、FPGA卡类型以及专用镜像), 详细请参考BCC API 文档FPGA型BCC可选规格配置
- 创建GPU BCC虚机需要使用指定的(CPU、内存、本地数据盘、GPU卡类型), 详细请参考BCC API 文档GPU型BCC可选规格配置
创建竞价实例
使用以下代码可以创建BCC竞价实例,包括普通型Ⅰ型实例、普通型Ⅲ型实例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.Billing;
7import com.baidubce.services.bcc.model.CreateCdsModel;
8import com.baidubce.services.bcc.model.instance.CreateInstanceRequest;
9import com.baidubce.services.bcc.model.instance.CreateInstanceResponse;
10
11import java.util.ArrayList;
12import java.util.List;
13
14
15public class Main {
16 public static void main(String[] args) {
17 String endpoint = "bcc.bj.baidubce.com";
18 String ak = "ak";
19 String sk = "sk";
20
21 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
22 .withProtocol(Protocol.HTTP)
23 .withCredentials(new DefaultBceCredentials(ak, sk))
24 .withEndpoint(endpoint);
25
26 BccClient client = new BccClient(bccClientConfiguration);
27
28 CreateInstanceRequest instanceRequest = new CreateInstanceRequest();
29 // 镜像ID
30 instanceRequest.setImageId("m-***");
31 // 待创建虚拟机实例的类型
32 instanceRequest.setSpec("bcc.g5.c1m4");
33 // 抢占实例出价模型, 市场价: "market" 自定义:"custom"。
34 instanceRequest.setBidModel("market");
35 // 待创建虚拟机实例的CPU核数
36 instanceRequest.setCpuCount(1);
37 // 待创建虚拟机实例的内存容量,单位GB
38 instanceRequest.setMemoryCapacityInGB(4);
39 // 待创建虚拟机实例的系统盘大小,单位GB,默认是40GB,范围为[40, 2048]GB,超过40GB按照云磁盘价格收费。注意指定的系统盘大小需要满足所使用镜像最小磁盘空间限制。
40 instanceRequest.setRootDiskSizeInGb(20);
41 // 待创建虚拟机实例系统盘介质,默认使用SSD型云磁盘
42 instanceRequest.setRootDiskStorageType("enhanced_ssd_pl1");
43 // 指定zone信息,默认为空,由系统自动选择,可通过调用查询可用区列表接口查询可用区列表。zoneName命名规范是“国家-region-可用区序列",小写,例如北京可用区A为"cn-bj-a"。
44 instanceRequest.setZoneName("cn-bj-a");
45 // 虚拟机名字。默认都不指定name。如果指定name:批量时name作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
46 instanceRequest.setName("instance-***");
47 List<CreateCdsModel> createCdsList = new ArrayList<CreateCdsModel>();
48 createCdsList.add(new CreateCdsModel()
49 .withCdsSizeInGB(50)
50 .withStorageType("enhanced_ssd_pl1"));
51 // 待创建的CDS磁盘列表
52 instanceRequest.setCreateCdsList(createCdsList);
53 // 公网带宽,单位为Mbps。必须为0~200之间的整数,为0表示不分配公网IP,默认为0Mbps
54 instanceRequest.setNetworkCapacityInMbps(10);
55 // 批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
56 instanceRequest.setPurchaseCount(1);
57 // 虚拟机主机名。默认都不指定hostname。如果指定hostname:批量时hostname作为名字的前缀。后端将加上后缀,后缀生成方式:name{ -序号}。
58 instanceRequest.setHostname("host***");
59 // 是否自动生成name和hostname有序后缀(可选参数) 是:true 否:false
60 instanceRequest.setAutoSeqSuffix(true);
61 // 待创建的实例管理员密码,8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()。
62 instanceRequest.setAdminPass("***");
63 // 订单、计费相关参数
64 instanceRequest.setBilling(new Billing()
65 .withPaymentTiming("Postpaid"));
66 // 指定subnet信息,为空时将使用默认子网
67 instanceRequest.setSubnetId("sbn-***");
68 // 指定securityGroup信息,为空时将使用默认安全组
69 instanceRequest.setSecurityGroupId("g-***");
70 // 待创建实例指定的标签是否需要和已有标签键进行关联,默认为false。注意值为true时要保证该标签键已存在
71 instanceRequest.setRelationTag(true);
72 // 自动快照策略ID
73 instanceRequest.setAspId("asp-***");
74 // 指定实例所在的部署集id
75 instanceRequest.setDeployId("dset-***");
76
77 CreateInstanceResponse instance = client.createBidInstance(instanceRequest);
78 System.out.println(instance.getInstanceIds());
79 }
80}
- 创建BCC请求是一个异步请求,返回200表明订单生成,后续可以通过查询返回的竞价实例id信息了解BCC虚机的创建进度。
- 本接口用于创建一个或多个同配虚拟机竞价实例。
- 创建竞价实例需要实名认证,没有通过实名认证的可以前往百度开放云官网控制台中的安全认证下的实名认证中进行认证。
- 创建计费方式为后付费的竞价实例需要账户现金余额+通用代金券大于100;预付费方式的竞价实例则需要账户现金余额大于等于竞价实例费用。
- 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败,如果创建时包含CDS,CDS也会回滚。
- 缺省情形下,一个实例最多只能挂载5个云磁盘。
- 创建CDS磁盘和临时数据盘时,磁盘容量大小限制为5的倍数。
- 普通实例的临时数据盘最大不能超过500G。
- 指定子网和安全组创建,要求子网和安全组必须同时指定或同时不指定,同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。
- 指定公网IP带宽创建,计费方式为按照带宽计费。
- 创建接口为异步创建,可通过查询实例详情接口查询实例状态 )
查询竞价实例套餐
以下代码可以查询BCC虚机竞价套餐
1public static void listBidFlavor(BccClient bccClient) {
2 // 执行查询竞价实例套餐操作
3 ListBccBidFlavorResponse listBccBidFlavorResponse = bccClient.listBidFlavor();
4
5 for(ZoneResource zoneResource: listBccBidFlavorResponse.getZoneResources()) {
6 System.out.println(zoneResource.getZoneName());
7 }
8}
查询竞价实例市场价
以下代码可以查询竞价实例市场价
1public static void getBidInstancePrice(BccClient bccClient) {
2 GetBidInstancePriceRequest getBidInstancePriceRequest = new GetBidInstancePriceRequest();
3 // 设置待查询的竞价实例类型为普通型BCC Ⅰ型
4 getBidInstancePriceRequest.setInstanceType(InstanceType.N1.name());
5 // 设置待查询的竞价实例类型为普通型BCC Ⅲ型
6 getBidInstancePriceRequest.setInstanceType(InstanceType.N3.name());
7 // 设置待查询的竞价实例的CPU核数
8 getBidInstancePriceRequest.setCpuCount(cpuCount);
9 // 设置待查询的竞价实例的内存大小GB
10 getBidInstancePriceRequest.setMemoryCapacityInGB(memoryCapacityInGB);
11 // 设置待查询的竞价实例的系统盘大小
12 getBidInstancePriceRequest.setRootDiskSizeInGb(rootDiskSizeInGb);
13 // 设置待查询的竞价实例的系统盘介质
14 getBidInstancePriceRequest.setRootDiskStorageType(rootDiskStorageType);
15
16 List<CreateCdsModel> createCdsModelList = new ArrayList<CreateCdsModel>();
17 // 新建空白的CDS数据盘,类型为高性能型
18 createCdsModelList.add(new CreateCdsModel().withStorageType(StorageType.hp1).withCdsSizeInGB(5));
19 // 设置待查询的竞价实例的CDS磁盘列表
20 getBidInstancePriceRequest.setCreateCdsList(createCdsList);
21 // 设置待查询的竞价实例的购买个数
22 getBidInstancePriceRequest.setPurchaseCount(purchaseCount);
23
24 // 执行查询竞价实例市场价的操作
25 GetBidInstancePriceResponse getBidInstancePriceResponse = bccClient.getBidInstancePrice(getBidInstancePriceRequest);
26
27 // 获取待查询的竞价实例总价
28 System.out.println(getBidInstancePriceResponse.getMoney());
29 // 获取待查询的竞价实例购买个数
30 System.out.println(getBidInstancePriceResponse.getCount());
31 // 获取待查询的竞价实例的单个价格
32 System.out.println(getBidInstancePriceResponse.getPerMoney());
33}
取消竞价实例订单
以下代码可以取消竞价实例订单
1public static void cancelBidOrder(BccClient bccClient) {
2 CancelBidOrderRequest cancelBidOrderRequest = new CancelBidOrderRequest();
3 // 设置待取消的竞价实例订单ID
4 cancelBidOrderRequest.setOrderId();
5 // 执行取消竞价实例订单操作
6 CancelBidOrderResponse cancelBidOrderResponse = client.cancelBidOrder(cancelBidOrderRequest);
7 cancelBidOrderResponse.getOrderId();
8}
查询实例列表
以下代码可以查询BCC虚机实例列表,支持通过内网ip、专属服务器id、可用区名称进行筛选:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.InstanceModel;
5import com.baidubce.services.bcc.model.instance.ListInstancesRequest;
6import com.baidubce.services.bcc.model.instance.ListInstancesResponse;
7
8public class ListInstances {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
16 // 创建bcc client
17 BccClient client = new BccClient(bccClientConfiguration);
18
19 ListInstancesRequest listInstancesRequest = new ListInstancesRequest();
20 // 批量获取列表的查询的起始位置,是一个由系统生成的字符串
21 listInstancesRequest.setMarker("i-***");
22 // 每页包含的最大数量,最大数量通常不超过1000,缺省值为1000
23 listInstancesRequest.setMaxKeys(1);
24 // 内网IP
25 listInstancesRequest.setInternalIp("192.168.***.***");
26 // 专属服务器ID
27 listInstancesRequest.setDedicatedHostId("d-***");
28 // 可用区信息
29 listInstancesRequest.setZoneName("cn-bj-d");
30 // 多个标签,逗号分割,格式:tagKey:tagValue 或 tagKey
31 listInstancesRequest.setKeypairId("***");
32 ListInstancesResponse listInstancesResponse = client.listInstances(listInstancesRequest);
33
34 for (InstanceModel instanceModel : listInstancesResponse.getInstances()) {
35 System.out.println(instanceModel);
36 }
37 }
38}
查询可关机不计费的实例列表
使用以下代码可以查询可关机不计费的实例列表,支持通过内网ip、密钥对id、可用区名称进行筛选:
1public static void getInstanceNoChargeList(BccClient bccClient) {
2 ListGetInstanceNoChargeRequest listGetInstanceNoChargeRequest = listGetInstanceNoChargeRequest();
3 // 设置分页标志
4 listGetInstanceNoChargeRequest.setMarker(instanceId);
5 // 设置分页返回数据大小,默认为1000,最大数量不超过1000
6 listGetInstanceNoChargeRequest.setMaxKeys(maxKeys);
7 // 通过internalIp进行查询
8 listGetInstanceNoChargeRequest.setInternalIp(internalIp);
9 // 通过keypairId进行查询
10 listGetInstanceNoChargeRequest.setKeypairId(keypairId);
11 // 通过可用区名称进行查询
12 listGetInstanceNoChargeRequest.setZoneName(zoneName);
13 // 执行查询可关机不计费的实例列表的接口
14 ListInstancesResponse response = bccClient.getInstanceNoChargeList(listGetInstanceNoChargeRequest);
15
16 for(InstanceModel instanceModel: response.getInstances()){
17 System.out.println(instanceModel.getId());
18 }
19}
查询实例详情
使用以下代码可以查询指定BCC虚机的详细信息:
1public static void getInstanceDetail(BccClient bccClient) {
2 // 查询指定BCC虚机的详细信息
3 InstanceModel instanceModel = bccClient.getInstance(instanceId).getInstance();
4 System.out.println(instanceModel.getName());
5}
根据实例ID查询实例列表
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListInstanceByIdsRequest;
5import com.baidubce.services.bcc.model.instance.ListInstancesResponse;
6import java.util.Arrays;
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP)
16 .withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
17 // 创建bcc client
18 BccClient client = new BccClient(bccClientConfiguration);
19 // 根据实例ID查询实例列表
20 ListInstanceByIdsRequest request = new ListInstanceByIdsRequest()
21 .withInstanceIds(Arrays.asList("i-sZcdKAZR", "i-CH47zOoW"));
22 ListInstancesResponse response = client.listInstanceByIds(request);
23 System.out.println(response);
24 }
25}
启动实例
使用以下代码可以启动指定BCC虚机实例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4
5public class StartInstance {
6 public static void main(String[] args) {
7 // 设置您的ak、sk和要访问的endpoint
8 String endpoint = "http://bcc.bj.baidubce.com";
9 String ak = "ak";
10 String sk = "sk";
11 // 设置默认配置
12 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
13 .withProtocol(Protocol.HTTP)
14 .withCredentials(new DefaultBceCredentials(ak, sk))
15 .withEndpoint(endpoint);
16 // 创建bcc client
17 BccClient client = new BccClient(bccClientConfiguration);
18
19 // 设置BCC虚机id
20 String instanceId = "i-***";
21 // 执行修改BCC操作
22 client.startInstance(instanceId);
23 }
24}
接口调用成功后实例进入 Starting 状态。 实例状态必须为 Stopped,调用此接口才可以成功返回,否则提示409错误。
停止实例
使用以下代码可以停止指定BCC虚机实例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.StopInstanceRequest;
7
8public class StopInstance {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "http://bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21
22 StopInstanceRequest stopInstanceRequest = new StopInstanceRequest();
23 // 设置BCC虚机id
24 stopInstanceRequest.setInstanceId("i-***");
25 // 设置是否强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据
26 stopInstanceRequest.setForceStop(Boolean.FALSE);
27 // 设置是否关机不计费,TRUE为关机不计费,FALSE为关机计费。注意:只有白名单用户才可以实行关机不计费
28 stopInstanceRequest.setStopWithNoCharge(Boolean.FALSE);
29 // 执行BCC虚机停止操作
30 client.stopInstance(stopInstanceRequest);
31 }
32}
- 系统后台会在实例实际 Stop 成功后进入“已停止”状态。
- 只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误。
- 实例支持强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据。
批量停止实例
使用以下代码可以批量停止指定BCC虚机实例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import java.util.Arrays;
7import com.baidubce.services.bcc.model.instance.BatchStopInstanceRequest;
8
9public class StopInstance {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "http://bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22
23 BatchStopInstanceRequest stopInstanceRequest = new BatchStopInstanceRequest();
24 // 设置BCC虚机ids,列表元素不超过100个
25 stopInstanceRequest.setInstanceIds(Arrays.asList("i-KEmEve**","i-0nPl9W**"));
26 // 设置是否强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据
27 stopInstanceRequest.setForceStop(Boolean.FALSE);
28 // 设置是否关机不计费,TRUE为关机不计费,FALSE为关机计费。注意:只有白名单用户才可以实行关机不计费
29 stopInstanceRequest.setStopWithNoCharge(Boolean.FALSE);
30 // 执行BCC虚机停止操作
31 client.batchStopInstance(stopInstanceRequest);
32 }
33}
- 系统后台会在实例实际 Stop 成功后进入“已停止”状态。
- 只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误。
- 实例支持强制停止,强制停止等同于断电处理,可能丢失实例操作系统中未写入磁盘的数据。
重启实例
使用以下代码可以重启指定BCC虚机实例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.RebootInstanceRequest;
5
6public class RebootInstance {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "http://bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
14 .withProtocol(Protocol.HTTP)
15 .withCredentials(new DefaultBceCredentials(ak, sk))
16 .withEndpoint(endpoint);
17 // 创建bcc client
18 BccClient client = new BccClient(bccClientConfiguration);
19
20 // 设置BCC虚机id
21 String instanceId = "i-***";
22 // 执行修改BCC操作
23 client.rebootInstance(new RebootInstanceRequest().withInstanceId(instanceId));
24 }
25}
- 只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误。
- 接口调用成功后实例进入 Starting 状态。
- 支持强制重启,强制重启等同于传统服务器的断电重启,可能丢失实例操作系统中未写入磁盘的数据。
修改实例密码
使用以下代码可以修改指定虚机的管理员密码:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ModifyInstancePasswordRequest;
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient bccClient = new BccClient(bccClientConfiguration);
21
22 ModifyInstancePasswordRequest modifyInstancePasswordRequest = new ModifyInstancePasswordRequest();
23 // 设置BCC虚机id
24 modifyInstancePasswordRequest.setInstanceId("i-***");
25 // 设置BCC虚机新密码
26 modifyInstancePasswordRequest.setAdminPass("***");
27
28 bccClient.modifyInstancePassword(modifyInstancePasswordRequest);
29 }
30}
只有 Running 和 Stopped 状态的实例才可以用调用接口,否则提示 409 错误。
修改实例属性
修改实例属性
使用以下代码可以修改指定虚机的属性,目前只支持修改BCC虚机的名称属性:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ModifyInstanceAttributesRequest;
5
6public class ModifyAttributeInstance {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "http://bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
14 .withProtocol(Protocol.HTTP)
15 .withCredentials(new DefaultBceCredentials(ak, sk))
16 .withEndpoint(endpoint);
17 // 创建bcc client
18 BccClient client = new BccClient(bccClientConfiguration);
19
20 // 设置BCC虚机id
21 String instanceId = "i-***";
22 // 设置该虚机的描述
23 String newName = "newInstanceName";
24 // 执行修改BCC操作
25 client.modifyInstanceAttributes(
26 new ModifyInstanceAttributesRequest()
27 .withInstanceId(instanceId)
28 .withName(newName)
29 );
30 }
31}
修改实例描述
使用以下代码可以修改特定实例描述信息:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ModifyInstanceDescRequest;
5
6public class ModifyDescInstance {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "http://bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
14 .withProtocol(Protocol.HTTP)
15 .withCredentials(new DefaultBceCredentials(ak, sk))
16 .withEndpoint(endpoint);
17 // 创建bcc client
18 BccClient client = new BccClient(bccClientConfiguration);
19
20 // 设置BCC虚机id
21 String instanceId = "i-***";
22 // 设置该虚机的描述
23 String newDesc = "modify desc";
24 // 执行修改BCC操作
25 client.modifyInstanceDesc(
26 new ModifyInstanceDescRequest()
27 .withInstanceId(instanceId)
28 .withDesc(newDesc)
29 );
30 }
31}
只有 Running 和 Stopped 状态的实例才可以调用该接口,否则提示 409 错误。
重装实例
使用以下代码可以使用镜像重建指定BCC虚机实例:
1package com.baidubce.services.bcc;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.model.instance.RebuildInstanceRequest;
7
8public class RebuildInstance {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
16 // 创建bcc client
17 BccClient client = new BccClient(bccClientConfiguration);
18
19 RebuildInstanceRequest req = new RebuildInstanceRequest();
20 // 指定的实例ID
21 req.setInstanceId("i-***");
22 // 指定的镜像ID
23 req.setImageId("m-***");
24 // 机器密码(8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()),密码需要加密传输
25 req.setAdminPass("***");
26 // 待重装实例所要绑定的密钥对ID,必须传递adminPass、keypairId其中一个参数
27 req.setKeypairId("k-***");
28
29 client.rebuildInstance(req);
30 }
31}
实例重装后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。
重装实例(批量重装)
使用以下代码可以使用镜像批量重建指定BCC虚机实例:
1package com.baidubce.services.bcc;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.model.instance.RebuildBatchInstanceRequest;
7
8import java.util.ArrayList;
9import java.util.List;
10
11public class BatchRebuildInstances {
12 public static void main(String[] args) {
13 // 设置您的ak、sk和要访问的endpoint
14 String endpoint = "bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // 设置默认配置
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21
22 RebuildBatchInstanceRequest req = new RebuildBatchInstanceRequest();
23 List<String> instanceIds = new ArrayList<String>();
24 instanceIds.add("i-***");
25 instanceIds.add("i-***");
26
27 // 指定的实例ID列表,最多100个
28 req.setInstanceIds(instanceIds);
29 // 指定的镜像ID
30 req.setImageId("m-***");
31 // 机器密码(8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()),密码需要加密传输
32 req.setAdminPass("***");
33 // 待重装实例所要绑定的密钥对ID,必须传递adminPass、keypairId其中一个参数
34 req.setKeypairId("k-***");
35
36 client.rebuildBatchInstance(req);
37 }
38}
实例重装后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。
计费变更-转预付费
以下代码用于将实例计费模式由后付费转预付费
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ChangeToPrepaidRequest;
7import com.baidubce.services.bcc.model.instance.ChangeToPrepaidResponse;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22
23 ChangeToPrepaidRequest changeToPrepaidRequest = new ChangeToPrepaidRequest();
24 changeToPrepaidRequest.setInstanceId("i-lC39****"); // 虚机ID
25 changeToPrepaidRequest.setDuration(2); // 预付费时长,单位为月
26 ChangeToPrepaidResponse response = client.changeToPrepaid(changeToPrepaidRequest);
27 System.out.println(response.getOrderId()); // 订单ID
28 }
29}
释放实例
对于后付费Postpaid以及预付费Prepaid过期的BCC虚机实例,可以使用以下代码将其释放:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6
7public class Main {
8 public static void main(String[] args) {
9 // 设置您的ak、sk和要访问的endpoint
10 String endpoint = "bcc.bj.baidubce.com";
11 String ak = "ak";
12 String sk = "sk";
13 // 设置默认配置
14 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
15 .withProtocol(Protocol.HTTP)
16 .withCredentials(new DefaultBceCredentials(ak, sk))
17 .withEndpoint(endpoint);
18 // 创建bcc client
19 BccClient client = new BccClient(bccClientConfiguration);
20
21 client.releaseInstance("i-eRnq****"); // 待释放实例ID
22 }
23}
- 释放单个云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
- 只有付费类型为Postpaid或者付费类型为Prepaid且已过期的实例才可以释放。
- 实例释放后,已挂载的CDS磁盘自动卸载,,基于此CDS磁盘的快照会保留。
- 实例释放后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。
释放实例(POST请求的释放)
- 释放单个云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
- 释放的时候默认只释放实例和系统盘,用户可以选择是否关联释放当前时刻,实例挂载的eip+数据盘(只能统一释放完或者不释放。而不是挂载的数据盘释放一个或者多个)是否一起释放。
1package com.baidubce.services.bcc;
2import com.baidubce.BceClientConfiguration;
3import com.baidubce.Protocol;
4import com.baidubce.auth.DefaultBceCredentials;
5import com.baidubce.services.bcc.model.instance.ReleaseInstanceByPostRequest;
6public class ReleaseInstance {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
14 // 创建bcc client
15 BccClient client = new BccClient(bccClientConfiguration);
16 ReleaseInstanceByPostRequest req = new ReleaseInstanceByPostRequest();
17 // 实例id
18 req.setInstanceId("i-***");
19 // 是否关联释放当前时刻,实例挂载的EIP和数据盘
20 req.setRelatedReleaseFlag(true);
21 // 是否释放云磁盘快照
22 req.setDeleteCdsSnapshotFlag(true);
23 client.releaseInstanceByPost(req);
24 }
25 }
批量释放实例
- 批量释放云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
- 释放的时候默认只释放实例和系统盘,用户可以选择是否关联释放当前时刻,实例挂载的eip+数据盘(只能统一释放完或者不释放。而不是挂载的数据盘释放一个或者多个)是否一起释放。
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ReleaseMultipleInstancesRequest;
7import java.util.ArrayList;
8import java.util.List;
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient bccClient = new BccClient(bccClientConfiguration);
22 ReleaseMultipleInstancesRequest releaseMultipleInstancesRequest = new ReleaseMultipleInstancesRequest();
23 // 设置待释放的实例id列表,列表元素不超过100个
24 List<String> instanceIds = new ArrayList<String>();
25 instanceIds.add("i-***");
26 instanceIds.add("i-***");
27 releaseMultipleInstancesRequest.setInstanceIds(instanceIds);
28 // 是否关联释放当前时刻,实例挂载的EIP和数据盘
29 releaseMultipleInstancesRequest.setRelatedReleaseFlag(true);
30 // 是否释放云磁盘快照
31 releaseMultipleInstancesRequest.setDeleteCdsSnapshotFlag(true);
32 // 实例释放时是否进入回收站
33 releaseMultipleInstancesRequest.setBccRecycleFlag(true);
34 // 实例释放时是否删除关联的ENI
35 releaseMultipleInstancesRequest.setDeleteRelatedEnisFlag(true);
36 bccClient.releaseMultipleInstanceByPost(releaseMultipleInstancesRequest);
37 }
38}
释放预付费实例(POST)
释放预付费云服务器实例,释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
释放的时候默认只释放云服务器实例和系统盘,用户可以选择是否关联释放云服务器实例挂载的EIP和数据盘,关联的EIP和数据盘需全部释放或全部不释放,不支持选择部分释放,部分不释放。
当选择关联释放EIP和数据盘,云磁盘快照可选择一同关联释放,若数据盘不关联释放,云磁盘快照也不支持关联释放。
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ReleasePrepaidInstanceRequest;
7import java.util.ArrayList;
8import java.util.List;
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient bccClient = new BccClient(bccClientConfiguration);
22 ReleasePrepaidInstanceRequest releasePrepaidInstanceRequest = new ReleasePrepaidInstanceRequest();
23 // 设置待释放的实例id列表
24 releasePrepaidInstanceRequest.setInstanceId("i-***");
25 // 是否关联释放当前实例挂载的EIP和数据盘(只有该字段为true时 deleteCdsSnapshotFlag字段才会有效,若该字段为false,deleteCdsSnapshotFlag字段的值无效)
26 releasePrepaidInstanceRequest.setRelatedReleaseFlag(true);
27 // 是否释放云磁盘快照
28 releasePrepaidInstanceRequest.setDeleteCdsSnapshotFlag(true);
29 // 实例释放时是否删除关联的ENI
30 releasePrepaidInstanceRequest.setDeleteRelatedEnisFlag(true);
31 bccClient.releasePrepaidInstanceByPost(releasePrepaidInstanceRequest);
32 }
33}
实例扩缩容
支持对BCC虚机的CPU以及内存进行扩缩容操作,具体可参考以下代码:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ResizeInstanceRequest;
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21
22 ResizeInstanceRequest resizeInstanceRequest = new ResizeInstanceRequest();
23 resizeInstanceRequest.setInstanceId("i-lC39****"); //待变配实例ID
24 resizeInstanceRequest.setCpuCount(4); //CPU核数
25 resizeInstanceRequest.setMemoryCapacityInGB(16); //内存大小,单位GB
26 resizeInstanceRequest.setEnableJumboFrame(false); //设置是否开启Jumbo帧。true表示开启Jumbo帧,false表示关闭Jumbo帧。默认为空,为空表示:变配到不支持Jumbo帧的规格时,不开启Jumbo帧;从不支持变配到支持的规格时,不开启Jumbo帧;从支持到支持得规格是,若实例变配前开启Jumbo帧,变配后也开启Jumbo帧,若变配前不开启,则变配后也不开启。
27 client.resizeInstance(resizeInstanceRequest);
28 }
29}
- 实例计费方式为预付费时,不能进行缩容操作
- 实例计费方式为后付费时,可弹性扩缩容
- 只有实例Running或Stopped状态时可以进行扩缩容操作
- 实例扩缩容之后会重启一次
- 异步接口,可通过查询实例详情接口查看扩缩容状态是否完成
- 专属实例可以通过指定的cpu、内存以及临时盘大小,专属实例临时盘大小只支持扩容而不支持缩容,具体请参考API文档 实例扩缩容
实例扩缩容(通过指定实例套餐规格)
为指定虚机扩缩容,目前支持通过更新实例套餐规格对虚机的CPU以及内存进行扩缩容操作。
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.ResizeInstanceRequest;
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient bccClient = new BccClient(bccClientConfiguration);
21
22 ResizeInstanceRequest resizeInstanceRequest = new ResizeInstanceRequest();
23 // 设置BCC虚机id
24 resizeInstanceRequest.setInstanceId("i-***");
25 // 设置新的套餐规格
26 resizeInstanceRequest.setSpec("bcc.g5.c4m16");
27 // 设置是否开启Jumbo帧。true表示开启Jumbo帧,false表示关闭Jumbo帧。默认为空,为空表示:变配到不支持Jumbo帧的规格时,不开启Jumbo帧;从不支持变配到支持的规格时,不开启Jumbo帧;从支持到支持得规格是,若实例变配前开启Jumbo帧,变配后也开启Jumbo帧,若变配前不开启,则变配后也不开启。
28 resizeInstanceRequest.setEnableJumboFrame(false);
29 bccClient.resizeInstanceBySpec(resizeInstanceRequest);
30 }
31}
- 只有实例Running或Stopped状态时可以进行扩缩容操作
- 实例扩缩容之后会重启一次
- 异步接口,可通过查询实例详情接口查看扩缩容状态是否完成
将实例加入安全组
以下代码可以将指定BCC虚机实例加入到指定安全组内:
1public static void bindInstanceToSecurityGroup(BccClient bccClient) {
2 BindSecurityGroupRequest bindSecurityGroupRequest = new BindSecurityGroupRequest();
3 // 设置安全组id
4 bindSecurityGroupRequest.setSecurityGroupId(securityGroupId);
5 // 设置BCC虚机实例id
6 bindSecurityGroupRequest.setInstanceId(instanceId);
7 // 执行将实例加入安全组操作
8 bccClient.bindInstanceToSecurityGroup(bindSecurityGroupRequest);
9}
每个实例最多关联10个安全组。
将实例移出安全组
以下代码可以将指定实例移出指定安全组中:
1public static void unbindInstanceFromSecurityGroup(BccClient bccClient) {
2 UnbindSecurityGroupRequest unbindSecurityGroupRequest = new UnbindSecurityGroupRequest();
3 // 设置安全组id
4 unbindSecurityGroupRequest.setSecurityGroupId(securityGroupId);
5 // 设置BCC虚机实例id
6 unbindSecurityGroupRequest.setInstanceId(instanceId);
7 // 执行将实例移出安全组操作
8 bccClient.unbindInstanceFromSecurityGroup(unbindSecurityGroupRequest);
9}
- 每个实例至少关联一个安全组,默认关联默认安全组。
- 如果实例仅属于一个安全组,尝试移出时,请求会报 403 错。
查询实例VNC地址
使用以下代码可以查询指定BCC虚机实例的VNC URL:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.GetInstanceVncResponse;
5
6public class GetInstanceVnc {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
14 // 创建bcc client
15 BccClient client = new BccClient(bccClientConfiguration);
16 // i-*** 为虚拟机实例ID
17 GetInstanceVncResponse response = client.getInstanceVnc("i-***");
18 System.out.println(response.getVncUrl());
19 }
20}
- VNC地址一次使用后即失效
- URL地址有效期为10分钟
实例续费
对BCC虚机的续费操作,可以延长过期时长,以下代码可以对磁盘进行续费:
1package com.baidubce.services.bcc;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.model.Billing;
7import com.baidubce.services.bcc.model.Reservation;
8import com.baidubce.services.bcc.model.instance.PurchaseReservedInstanceRequeset;
9import com.baidubce.services.bcc.model.instance.PurchaseReservedInstanceResponse;
10
11public class PurchaseReservedInstance {
12 public static void main(String[] args) {
13 // 设置您的ak、sk和要访问的endpoint
14 String endpoint = "bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // 设置默认配置
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21
22 PurchaseReservedInstanceRequeset req = new PurchaseReservedInstanceRequeset();
23 // 虚拟机实例ID
24 req.setInstanceId("i-***");
25 // 幂等性Token,是一个长度不超过64位的ASCII字符串
26 req.setClientToken("random-uuid");
27 // 订单详情
28 req.setBilling(new Billing()
29 // 续费方式,本接口针对预付费实例进行续费
30 .withPaymentTiming("Prepaid")
31 // 续费时长和单位,续费单位为月
32 .withReservation(new Reservation()
33 // 续费时长
34 .withReservationLength(1))
35 );
36 // 设置实例关联续费标识,默认为空字符串
37 req.setRelatedRenewFlag("CDS");
38
39 PurchaseReservedInstanceResponse res = client.purchaseReservedInstance(req);
40 System.out.println(res);
41 }
42}
- BCC虚机实例扩缩容期间不能进行续费操作。
- 续费时若实例已欠费停机,续费成功后有个BCC虚机实例启动的过程。
- 该接口是一个异步接口。
- 专属实例不支持续费。
实例绑定标签
以下代码用于实例绑定标签
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.TagModel;
7import com.baidubce.services.bcc.model.instance.BindTagsRequest;
8
9import java.util.ArrayList;
10import java.util.List;
11
12public class Main {
13 public static void main(String[] args) {
14 // 设置您的ak、sk和要访问的endpoint
15 String endpoint = "bcc.bj.baidubce.com";
16 String ak = "ak";
17 String sk = "sk";
18 // 设置默认配置
19 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
20 .withProtocol(Protocol.HTTP)
21 .withCredentials(new DefaultBceCredentials(ak, sk))
22 .withEndpoint(endpoint);
23 // 创建bcc client
24 BccClient bccClient = new BccClient(bccClientConfiguration);
25
26 BindTagsRequest bindTagsRequest = new BindTagsRequest();
27 // 设置想要绑定的标签
28 List<TagModel> changeTags = new ArrayList<TagModel>();
29 TagModel tagModel = new TagModel().withTagKey("Key***").withTagValue("Value***");
30 changeTags.add(tagModel);
31 bindTagsRequest.setChangeTags(changeTags);
32 // 设置对应的实例ID
33 bindTagsRequest.setInstanceId("i-***");
34
35 bccClient.bindInstanceToTags(bindTagsRequest);
36 }
37}
- 给实例绑定标签,用于分类和查找。
实例解绑标签
以下代码用于实例解绑标签
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.TagModel;
7import com.baidubce.services.bcc.model.instance.UnbindTagsRequest;
8
9import java.util.ArrayList;
10import java.util.List;
11
12public class Main {
13 public static void main(String[] args) {
14 // 设置您的ak、sk和要访问的endpoint
15 String endpoint = "bcc.bj.baidubce.com";
16 String ak = "ak";
17 String sk = "sk";
18 // 设置默认配置
19 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
20 .withProtocol(Protocol.HTTP)
21 .withCredentials(new DefaultBceCredentials(ak, sk))
22 .withEndpoint(endpoint);
23 // 创建bcc client
24 BccClient bccClient = new BccClient(bccClientConfiguration);
25
26 UnbindTagsRequest unbindTagsRequest = new UnbindTagsRequest();
27 // 设置想要绑定的标签
28 List<TagModel> changeTags = new ArrayList<TagModel>();
29 TagModel tagModel = new TagModel().withTagKey("Key***").withTagValue("Value***");
30 changeTags.add(tagModel);
31 unbindTagsRequest.setChangeTags(changeTags);
32 // 设置对应的实例ID
33 unbindTagsRequest.setInstanceId("i-***");
34
35 bccClient.unbindInstanceFromTags(unbindTagsRequest);
36 }
37}
- 解绑实例上定义的标签。
- 可以同时解绑多个标签。
实例变更子网
1package com.baidubce.services.bcc;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.model.instance.ChangeInstanceSubnetRequest;
7
8public class ChangeSubnet {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration().withProtocol(Protocol.HTTP).withCredentials(new DefaultBceCredentials(ak, sk)).withEndpoint(endpoint);
16 // 创建bcc client
17 BccClient client = new BccClient(bccClientConfiguration);
18
19 ChangeInstanceSubnetRequest req = new ChangeInstanceSubnetRequest();
20 // 虚拟机实例ID
21 req.setInstanceId("i-***");
22 // 变更后的子网ID
23 req.setSubnetId("sbn-***");
24 // 变更后是否重启
25 req.setReboot(true);
26 // 变更普通安全组,仅变更vpc时生效,不支持和EnterpriseSecurityGroupIds同时设置
27 req.setSecurityGroupIds(Collections.singletonList("g-***"));
28 // 变更企业安全组,仅变更vpc时生效,不支持和SecurityGroupIds同时设置
29 req.setEnterpriseSecurityGroupIds(Collections.singletonList("esg-***"));
30 client.updateInstanceSubnet(req);
31 }
32}
- 变更实例所属的子网。 变更子网后默认自动重启,用户选择是否执行该操作。 变更子网的范围目前仅支持在同AZ下变更子网,不支持跨AZ或跨VPC变更子网,如果从普通子网变更至NAT专属子网请先手动解绑EIP
查询实例套餐规格
查询实例资源套餐规格列表信息。创建虚机时建议使用参数(spec)指定需要的机型以及配置:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.flavor.ListFlavorSpecRequest;
7import com.baidubce.services.bcc.model.flavor.ListBccFlavorSpecResponse;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient bccClient = new BccClient(bccClientConfiguration);
22
23 ListFlavorSpecRequest listFlavorSpecRequest = new ListFlavorSpecRequest();
24 // 设置可用区
25 listFlavorSpecRequest.setZoneName("cn-bj-d");
26
27 ListBccFlavorSpecResponse response = bccClient.listFlavorSpec(listFlavorSpecRequest);
28 System.out.println(response);
29 }
30}
- 默认获取当前地域下所有可用区的实例套餐规格,可通过设置可用区获取指定可用区下的实例套餐规格。
查询实例套餐价格
查询实例资源套餐规格对应的价格。:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.instance.BccPriceRequest;
7import com.baidubce.services.bcc.model.instance.BccPriceResponse;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient bccClient = new BccClient(bccClientConfiguration);
22
23 BccPriceRequest bccPriceRequest = new BccPriceRequest();
24 // 设置实例规格族
25 bccPriceRequest.setSpecId("g5");
26 // 设置实例套餐规格
27 bccPriceRequest.setSpec("bcc.g5.c2m8");
28 // 设置可用区
29 bccPriceRequest.setZoneName("cn-bj-d");
30 // 设置计费方式
31 bccPriceRequest.setPaymentTiming("prepay");
32 // 设置购买时长(单位:月)
33 bccPriceRequest.setPurchaseLength(2);
34 // 设置购买数量
35 bccPriceRequest.setPurchaseCount(2);
36
37 BccPriceResponse response = bccClient.getPriceBySpec(bccPriceRequest);
38 System.out.println(response);
39 }
40}
- 设置实例规格族会获取当前规格族下所有套餐的价格
- 设置实例套餐规格获取当前套餐的价格
- 付费方式,后付费:Postpaid,预付费:Prepaid
查询可变配规格
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListAvailableResizeSpecRequest;
5import com.baidubce.services.bcc.model.instance.ListAvailableResizeSpecResponse;
6
7public class Main {
8 public static void main(String[] args) {
9 // 设置您的ak、sk和要访问的endpoint
10 String endpoint = "bcc.bj.baidubce.com";
11 String ak = "ak";
12 String sk = "sk";
13 // 设置默认配置
14 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
15 .withProtocol(Protocol.HTTP)
16 .withCredentials(new DefaultBceCredentials(ak, sk))
17 .withEndpoint(endpoint);
18 // 创建bcc client
19 BccClient client = new BccClient(bccClientConfiguration);
20
21 ListAvailableResizeSpecRequest request = new ListAvailableResizeSpecRequest()
22 .withSpec("bcc.ic4.c1m1").withZone("cn-bj-a");
23 ListAvailableResizeSpecResponse response = client.listAvailableResizeSpec(request);
24 System.out.println(response);
25 }
26}
获取实例网卡信息
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListInstanceEnisRequest;
5
6public class Main {
7 public static void main(String[] args) {
8 // 设置您的ak、sk和要访问的endpoint
9 String endpoint = "bcc.bj.baidubce.com";
10 String ak = "ak";
11 String sk = "sk";
12 // 设置默认配置
13 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
14 .withProtocol(Protocol.HTTP)
15 .withCredentials(new DefaultBceCredentials(ak, sk))
16 .withEndpoint(endpoint);
17 // 创建bcc client
18 BccClient client = new BccClient(bccClientConfiguration);
19 // 设置实例ID
20 ListInstanceEnisRequest request = new ListInstanceEnisRequest().withInstanceId("i-CH47****");
21 System.out.println(client.listRecycleInstance());
22 }
23}
实例变更vpc
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.model.AbstractBceResponse;
5import com.baidubce.services.bcc.model.instance.ChangeVpcRequest;
6import java.util.Arrays;
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21
22 // 变更vpc
23 ChangeVpcRequest request = new ChangeVpcRequest()
24 .withInstanceId("i-sZcd****")
25 .withSubnetId("sbn-3rgdxbbn****")
26 .withSecurityGroupIds(Arrays.asList("g-63vdycz*****"));
27 AbstractBceResponse response = client.changeVpc(request);
28 System.out.println(response.getMetadata().getBceRequestId());
29 }
30}
- 开机状态下实例重启,关机状态下实例不重启
批量转包年包月
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchChangeToPrepaidRequest;
5import com.baidubce.services.bcc.model.instance.BatchChangeToPrepaidResponse;
6import com.baidubce.services.bcc.model.instance.ChangeToPrepaidRequest;
7import java.util.ArrayList;
8import java.util.List;
9
10public class Main {
11 public static void main(String[] args) {
12 // 设置您的ak、sk和要访问的endpoint
13 String endpoint = "bcc.bj.baidubce.com";
14 String ak = "ak";
15 String sk = "sk";
16 // 设置默认配置
17 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
18 .withProtocol(Protocol.HTTP)
19 .withCredentials(new DefaultBceCredentials(ak, sk))
20 .withEndpoint(endpoint);
21 // 创建bcc client
22 BccClient client = new BccClient(bccClientConfiguration);
23
24 // 指定计费变更的虚机ID和包年包月时长(单位:月),虚机个数不超过100个
25 BatchChangeToPrepaidRequest request = new BatchChangeToPrepaidRequest();
26 List<ChangeToPrepaidRequest> configList = new ArrayList<>();
27 configList.add(new ChangeToPrepaidRequest().withInstanceId("i-sZcdKAZR").withDuration(1));
28 configList.add(new ChangeToPrepaidRequest().withInstanceId("i-CH47zOoW").withDuration(1));
29 request.setConfig(configList);
30
31 BatchChangeToPrepaidResponse response = client.batchChangeToPrepaid(request);
32 System.out.println(response);
33 }
34}
查询回收站实例列表
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListInstancesResponse;
5import com.baidubce.services.bcc.model.instance.ListRecycleInstanceRequest;
6import java.util.Calendar;
7import java.util.Date;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 查询指定时间范围内进入回收站的后付费实例
23 Date today = new Date();
24 Calendar calendar = Calendar.getInstance();
25 calendar.setTime(today);
26 calendar.add(Calendar.DATE, -1);
27 Date lastDay = calendar.getTime();
28 ListRecycleInstanceRequest request = new ListRecycleInstanceRequest()
29 .withRecycleBegin(lastDay)
30 .withRecycleEnd(today);
31 .withPaymentTiming(PaymentTiming.Postpaid)
32 ListInstancesResponse response = client.listRecycleInstance(request);
33 System.out.println(response);
34 }
35}
释放回收站实例
使用以下代码可以从回收站释放指定实例
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListInstancesResponse;
5import com.baidubce.services.bcc.model.instance.ListRecycleInstanceRequest;
6import java.util.Calendar;
7import java.util.Date;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 client.deleteRecycledInstance("i-***");
23 }
24}
删除实例与部署集之间的关系
使用以下代码可以删除实例与部署集之间的关系
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.ListInstancesResponse;
5import com.baidubce.services.bcc.model.instance.ListRecycleInstanceRequest;
6import java.util.Calendar;
7import java.util.Date;
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 DeleteInstanceDeploysetRequest deleteInstanceDeploysetRequest = new DeleteInstanceDeploysetRequest();
23 deleteInstanceDeploysetRequest
24 .withDeployId("dset-NXyUzFou")
25 .withInstanceIdList(Collections.singletonList("i-pKq2Bnhf"));
26 client.deleteInstanceDeploySet(deleteInstanceDeploysetRequest);
27 }
28}
添加Ipv6
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.InstanceIpv6Request;
5import com.baidubce.services.bcc.model.instance.InstanceAddIpv6Response;
6
7
8public class Main {
9 public static void main(String[] args) {
10 // 设置您的ak、sk和要访问的endpoint
11 String endpoint = "bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // 设置默认配置
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // 创建bcc client
20 BccClient client = new BccClient(bccClientConfiguration);
21 // 添加ipv6
22 InstanceIpv6Request request = new InstanceIpv6Request();
23 request.setInstanceId("i-0nPl9WFJ");
24 request.setIpv6Address("2400:da00:e003:0:41c:4100:0:5");
25 request.setReboot(false);
26
27 InstanceAddIpv6Response response = client.addIpv6(request);
28 System.out.println(response);
29 }
30}
释放Ipv6
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.InstanceIpv6Request;
5
6
7public class Main {
8 public static void main(String[] args) {
9 // 设置您的ak、sk和要访问的endpoint
10 String endpoint = "bcc.bj.baidubce.com";
11 String ak = "ak";
12 String sk = "sk";
13 // 设置默认配置
14 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
15 .withProtocol(Protocol.HTTP)
16 .withCredentials(new DefaultBceCredentials(ak, sk))
17 .withEndpoint(endpoint);
18 // 创建bcc client
19 BccClient client = new BccClient(bccClientConfiguration);
20 // 释放ipv6
21 InstanceIpv6Request request = new InstanceIpv6Request();
22 request.setInstanceId("i-0nPl9WFJ");
23 request.setIpv6Address("2400:da00:e003:0:41c:4100:0:5");
24 request.setReboot(false);
25 client.delIpv6(request);
26 }
27}
批量添加主网卡辅助IP
使用以下代码可以为BCC批量增加主网卡辅助IP
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchAddIpRequest;
5
6
7public class Main {
8 public static void main(String[] args) {
9 // 设置您的ak、sk和要访问的endpoint
10 String endpoint = "bcc.bj.baidubce.com";
11 String ak = "ak";
12 String sk = "sk";
13 // 设置默认配置
14 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
15 .withProtocol(Protocol.HTTP)
16 .withCredentials(new DefaultBceCredentials(ak, sk))
17 .withEndpoint(endpoint);
18 // 创建bcc client
19 BccClient client = new BccClient(bccClientConfiguration);
20 // 为主网卡分配ipv6,IP个数不超过100个
21 BatchAddIpRequest request = new BatchAddIpRequest();
22 request.setInstanceId("i-udU7HS0a");
23 request.setAllocateMultiIpv6Addr(true);
24 request.setSecondaryPrivateIpAddressCount(2);
25 client.batchAddIp(request);
26 }
27}
批量删除主网卡辅助IP
使用以下代码可以为BCC批量删除主网卡辅助IP
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchDeleteIpRequest;
5
6import java.util.Collections;
7
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 为主网卡释放ipv6,IP个数不超过100个
23 InstanceIpv6Request request = new InstanceIpv6Request();
24 request.setInstanceId("i-0nPl9WFJ");
25 request.setPrivateIps(Collections.singletonList("2400:da00:e003:0:41c:4100:0:5"));
26 client.batchDeleteIp(request);
27 }
28}
创建自动续费规则
使用以下代码可以为BCC创建自动续费规则
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchDeleteIpRequest;
5
6import java.util.Collections;
7
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 创建自动续费规则
23 client.createAutoRenewRule(new BccAutoRenewRequest()
24 .withInstanceId("i-dl2s537H")
25 .withRenewTimeUnit("month")
26 .withRenewTime(1)
27 .withRenewEip(true)
28 .withRenewCds(true));
29 }
30}
删除自动续费规则
使用以下代码可以为BCC删除自动续费规则
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchDeleteIpRequest;
5
6import java.util.Collections;
7
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 删除自动续费规则
23 client.deleteAutoRenewRule(new BccAutoRenewRequest()
24 .withInstanceId("i-dl2s537H")
25 .withRenewEip(true)
26 .withRenewCds(true));
27 }
28}
查询实例自定义数据
使用以下代码可以查询实例自定义数据
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.model.instance.BatchDeleteIpRequest;
5
6import java.util.Collections;
7
8
9public class Main {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 设置请求体以及发送请求
23 GetInstanceUserDataAttrRequest request = new GetInstanceUserDataAttrRequest();
24 request.withInstanceId("i-b34ycow2");
25 GetInstanceUserDataAttrResponse response = client.getInstanceUserDataAttribute(request);
26 toJsonPrettyString("getInstanceUserDataAttribute", response);
27
28 }
29}