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