实例
更新时间:2024-08-09
BBC实例是百度云上的物理服务器操作实例,也是计费、权限控制等高级功能的管理实体。
创建实例
使用以下代码可以创建一个物理机实例:
Go
1createInstanceArgs := &CreateInstanceArgs{
2 // 输入你选择的flavor(套餐)ID,通过SDK获取可用flavor id的方法详见套餐章节
3 FlavorId: "your-choose-flavor-id",
4 // 输入你要创建instance使用的镜像ID,通过SDK获取可用镜像ID的方法详见镜像章节
5 ImageId: "your-choose-image-id",
6 // 输入你要创建instance使用的raid ID,通过SDK获取可用raid id的方法详见套餐章节
7 RaidId: "your-choose-raid-id",
8 // 输入待创建物理磁盘的大小,单位为GB,缺省为20
9 RootDiskSizeInGb: 20,
10 // 批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
11 PurchaseCount: 1,
12 // 可用区,格式为:国家-区域-可用区,如'中国-北京-可用区A'就是'cn-bj-a'
13 ZoneName: "cn-bj-a",
14 // 指定子网 ID,必填参数
15 SubnetId: "your-choose-subnet-id",
16 // 指定安全组id,可选参数
17 SecurityGroupId: "your-choose-security-group-id"
18 // 使用 uuid 生成一个长度不超过64位的ASCII字符串
19 ClientToken: "random-uuid",
20 // 选择付费方式
21 Billing: Billing{
22 PaymentTiming: PaymentTimingPostPaid,
23 Reservation: Reservation{
24 Length: 1,
25 TimeUnit: "Month",
26 },
27 },
28 // 创建需要绑定标签
29 Tags: []model.TagModel{
30 {
31 TagKey: "tag1",
32 TagValue: "var1",
33 },
34 },
35 // 指定使用的部署集id,可选参数,通过SDK获取可用部署集id的方法详见部署集章节
36 DeploySetId: "your-choose-raid-id",
37 // 设置实例管理员密码(8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*())
38 AdminPass: "your-admin-pass",
39 // 实例名称
40 Name: "your-choose-instance-name",
41}
42if res, err := bbcClient.CreateInstance(createInstanceArgs); err != nil {
43 fmt.Println("create instance failed: ", err)
44} else {
45 fmt.Println("create instance success, instanceId: ", res.InstanceIds[0])
46}
注意:
付费方式(PaymentTiming)可选:
- 后付费: PaymentTimingPostPaid
- 预付费: PaymentTimingPrePaid
查询实例列表
使用以下代码查询所有BBC实例的列表及详情信息:
Go
1listArgs := &ListInstancesArgs{
2 // 批量获取列表的查询起始位置,是一个由系统产生的字符串
3 Marker: "your-marker",
4 // 设置返回数据大小,缺省为1000
5 MaxKeys: 100,
6 // 通过internal Ip过滤BBC列表
7 InternalIp: "your-choose-internal-ip",
8}
9if res, err := bbcClient.ListInstances(listArgs); err != nil {
10 fmt.Println("list instances failed: ", err)
11} else {
12 fmt.Println("list instances success, result: ", res)
13}
查询实例详情
使用以下代码可以查询指定BBC实例的详细信息:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3if res, err := bbcClient.GetInstanceDetail(instanceId); err != nil {
4 fmt.Println("get instance detail failed: ", err)
5} else {
6 fmt.Println("get instance detail success, result: ", res)
7}
启动实例
使用以下代码可以启动指定BBC实例,实例状态必须为 Stopped,调用此接口才可以成功返回,否则提示409错误:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3if err := bbcClient.StartInstance(instanceId); err != nil {
4 fmt.Println("start instance failed: ", err)
5} else {
6 fmt.Println("start instance success.")
7}
停止实例
使用以下代码可以停止指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3// 是否强制停止实例,为True代表强制停止
4forceStop := true
5if err := bbcClient.StopInstance(instanceId, forceStop); err != nil {
6 fmt.Println("stop instance failed: ", err)
7} else {
8 fmt.Println("stop instance success.")
9}
重启实例
使用以下代码可以重启指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3// 是否强制停止实例,为True代表强制停止
4forceStop := true
5if err := bbcClient.RebootInstance(instanceId, forceStop); err != nil {
6 fmt.Println("reboot instance failed: ", err)
7} else {
8 fmt.Println("reboot instance success.")
9}
修改实例名称
使用以下代码可以修改指定BBC实例的名称:
Go
1modifyInstanceNameArgs := &ModifyInstanceNameArgs{
2 Name: "new_bbc_name",
3}
4// 设置你要操作的instanceId
5instanceId := "your-choose-instance-id"
6if err := bbcClient.ModifyInstanceName(instanceId, modifyInstanceNameArgs); err != nil {
7 fmt.Println("modify instance name failed: ", err)
8} else {
9 fmt.Println("modify instance name success.")
10}
修改实例描述
使用以下代码可以修改指定BBC实例的描述:
Go
1modifyInstanceDescArgs := &ModifyInstanceDescArgs{
2 Description: "new_bbc_description",
3}
4// 设置你要操作的instanceId
5instanceId := "your-choose-instance-id"
6if err := bbcClient.ModifyInstanceDesc(instanceId, modifyInstanceDescArgs); err != nil {
7 fmt.Println("modify instance desc failed: ", err)
8} else {
9 fmt.Println("modify instance desc success.")
10}
重装实例
使用以下代码可以使用镜像重建指定BBC实例:
Go
1rebuildArgs := &RebuildInstanceArgs{
2 // 设置使用的镜像id
3 ImageId: "your-choose-image-id",
4 // 设置管理员密码
5 AdminPass: "your-new-admin-pass",
6 // 是否保留数据。当该值为true时,raidId和sysRootSize字段不生效
7 IsPreserveData: false,
8 // 此参数在isPreserveData为false时为必填,在isPreserveData为true时不生效
9 RaidId: "your_raid_id",
10 // 系统盘根分区大小,默认为20G,取值范围为20-100。此参数在isPreserveData为true时不生效
11 SysRootSize: 20,
12}
13// 设置你要操作的instanceId
14instanceId := "your-choose-instance-id"
15// 设置是否保留数据
16isPreserveData = false
17if err := bbcClient.RebuildInstance(instanceId, isPreserveData, rebuildArgs); err != nil {
18 fmt.Println("rebuild instance failed: ", err)
19} else {
20 fmt.Println("rebuild instance success.")
21}
注意:
IsPreserveData表示是否保留数据:
- 当IsPreserveData设置为 false 时,RaidId 和 SysRootSize 是必填参数
- 当IsPreserveData设置为 true 时,RaidId 和 SysRootSize 参数不生效
释放实例
对于后付费Postpaid以及预付费Prepaid过期的BBC实例,可以使用以下代码将其释放:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3if err := bbcClient.ReleaseInstance(instanceId); err != nil {
4 fmt.Println("release instance failed: ", err)
5} else {
6 fmt.Println("release instance success.")
7}
修改实例密码
使用以下代码可以修改指定BBC实例的管理员密码:
Go
1modifyInstancePasswordArgs := &ModifyInstancePasswordArgs{
2 AdminPass: "your_new_password",
3}
4// 设置你要操作的instanceId
5instanceId := "your-choose-instance-id"
6if err := bbcClient.ModifyInstancePassword(instanceId, modifyInstancePasswordArgs); err != nil {
7 fmt.Println("modify instance password failed: ", err)
8} else {
9 fmt.Println("modify instance password success.")
10}
注意:
BBC 实例密码要求:
- 8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*()
查询实例VPC/Subnet信息
使用以下代码可以通过BBC实例id查询VPC/Subnet信息:
Go
1// 设置你要操作的instanceId
2instanceId := "your-choose-instance-id"
3getVpcSubnetArgs := &GetVpcSubnetArgs{
4 BbcIds: []string{instanceId},
5}
6if res, err := bbcClient.GetVpcSubnet(getVpcSubnetArgs); err != nil {
7 fmt.Println("get vpc subnet failed: ", err)
8} else {
9 fmt.Println("get vpc subnet success. res: ", res)
10}