物理服务器BBC

    实例

    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",
            },
        },
        // 指定使用的部署集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)
    }
    上一篇
    初始化
    下一篇
    镜像