实例
所有文档

          弹性裸金属服务器

          实例

          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)
          }
          上一篇
          初始化
          下一篇
          镜像