实例
更新时间:2024-08-09
BBC实例是百度云上的物理服务器操作实例,也是计费、权限控制等高级功能的管理实体。
创建实例
使用以下代码可以创建一个或多个物理机实例。
Python
1def create_instance(self):
2 #如果用户未指定client_token参数,用uuid4生成一个随机字符串给client_token
3 generate_client_token = str(uuid.uuid4())
4 client_token = generate_client_token()
5 #输入你选择的flavor(套餐)ID,通过SDK获取可用flavor id的方法详见套餐章节
6 flavor_id = 'your-choose-flavor-id'
7 #输入你要创建instance使用的镜像ID,通过SDK获取可用镜像ID的方法详见镜像章节
8 image_id = 'your-choose-image-id'
9 #输入你要创建instance使用的raid ID,通过SDK获取可用flavor id的方法详见套餐章节
10 image_id = 'your-choose-raid-id'
11 #输入待创建物理磁盘的大小,单位为GB,缺省为20
12 root_disk_size_in_gb = 20
13 #批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
14 purchase_count = 1
15 #可用区,格式为:国家-区域-可用区,如'中国-北京-可用区A'就是'cn-bj-a'
16 zone_name = 'cn-bj-a'
17 #指定subnet信息,为空时将使用默认子网。
18 subnet_id = '604cebcd-740d-49d1-a1ac-72a91f5e34aa'
19 #指定security_group信息,可选参数,智能卡才需要
20 security_group_id = 'g-1utufn3mtg1y'
21 #选择付费方式:
22 #付费方式为后付费
23 post_paid_billing = bcc_model.Billing('Postpaid', 1)
24 #付费方式为包年包月计费的预付费
25 pre_paid_billing = bcc_model.Billing('Prepaid', 1)
26 #实例名称
27 instance_name = 'your-choose-instance-name' + client_token
28 #指定使用的部署集id,可选参数
29 deploy_set_id = 'your-choose-deploy-set-id'
30 #设置实例管理员密码(8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*())
31 admin_pass = 'your-admin-pass'
32 #设置自动续费时间单位,可选"month"或者"year"
33 auto_renew_time_unit = "month"
34 #设置自动续费时间,按月是1-9 按年是 1-3
35 auto_renew_time = 1
36 #创建时绑定的标签
37 bind_tags = [{"tagKey" : "test_key", "tagValue" : "test_val"}]
38 self.client.create_instance(client_token = client_token,
39 flavor_id = flavor_id,
40 image_id = image_id,
41 raid_id = raid_id,
42 root_disk_size_in_gb = root_disk_size_in_gb,
43 purchase_count = purchase_count,
44 zone_name = zone_name,
45 subnet_id = subnet_id,
46 security_group_id = security_group_id,
47 billing = post_paid_billing,
48 name = instance_name,
49 deploy_set_id = deploy_set_id,
50 admin_pass = admin_pass,
51 auto_renew_time_unit = auto_renew_time_unit,
52 auto_renew_time = auto_renew_time,
53 tags=bind_tags)
查询实例列表
使用以下代码查询所有BBC实例的列表及详情信息
Python
1def list_instances(self):
2 #批量获取列表的查询起始位置,是一个由系统产生的字符串
3 self.client.list_instances(marker='your-marker')
4 #设置返回数据大小
5 self.client.list_instances(max_keys=100)
6 #通过internal Ip过滤BBC列表
7 self.client.list_instances(internal_ip='your-choose-internal-ip')
8 #执行查询BBC实例列表操作
9 self.client.list_instances()
查询实例详情
使用以下代码可以查询指定BBC实例的详细信息:
Python
1def get_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #设置是否返回创建失败信息,默认为False,为True表示返回创建失败信息
5 contains_failed = True
6 self.client.get_instance(instance_id = instance_id, contains_failed = contains_failed)
启动实例
使用以下代码可以启动指定BBC实例,实例状态必须为 Stopped,调用此接口才可以成功返回,否则提示409错误:
Python
1def start_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 self.client.start_instance(instance_id = instance_id)
停止实例
使用以下代码可以停止指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
Python
1def stop_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #是否强制停止实例,为True代表强制停止。缺省为False
5 force_stop = False
6 self.client.stop_instance(instance_id = instance_id, force_stop = force_stop))
重启实例
使用以下代码可以重启指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
Python
1def reboot_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #是否强制重启实例,为True代表强制重启。缺省为False
5 force_stop = False
6 self.client.reboot_instance(instance_id = instance_id, force_stop = force_stop))
修改实例名称
使用以下代码可以修改指定BBC实例的名称:
Python
1def modify_instance_name(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 name = 'name_modify'
5 self.client.modify_instance_attributes(instance_id = instance_id, name = name)
修改实例描述
使用以下代码可以修改指定BBC实例的描述:
Python
1def modify_instance_desc(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 desc = 'your_desc'
5 self.client.modify_instance_attributes(instance_id = instance_id, desc = desc)),
重装实例
使用以下代码可以使用镜像重建指定BBC实例:
Python
1def rebuild_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #设置使用的镜像id
5 image_id = 'your-choose-image-id'
6 #设置管理员密码
7 admin_pass = 'your-new-admin-pass'
8 #是否保留数据,默认为true。当值为true时,raidId和sysRootSize字段不生效
9 is_preserve_data = False
10 #raid配置Id,可通过调用SDK的get_flavor_raid接口获得。此参数在isPreserveData为false时为必填,在isPreserveData为true时不生效
11 raid_id = 'your_raid_id'
12 #系统盘根分区大小,默认为20G,取值范围为20-100。此参数在isPreserveData为true时不生效
13 sys_root_size = 20
14 self.client.rebuild_instance(instance_id = instance_id,
15 image_id = image_id,
16 admin_pass = admin_pass,
17 is_preserve_data = is_preserve_data,
18 raid_id = raid_id,
19 sys_root_size = sys_root_size)
释放实例
对于后付费Postpaid以及预付费Prepaid过期的BBC实例,可以使用以下代码将其释放:
Python
1def release_instance(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 self.client.release_instance(instance_id = instance_id)
修改实例密码
使用以下代码可以修改指定BBC实例的管理员密码:
Python
1def modify_instance_password(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #设置新的密码
5 admin_pass = 'your-new-admin-pass'
6 self.client.modify_instance_password(instance_id = instance_id, admin_pass = admin_pass)
查询实例VPC/Subnet信息
使用以下代码可以通过BBC实例id查询VPC/Subnet信息:
Python
1def get_vpc_subnet(self):
2 #设置你要操作的instance_id
3 instance_ids = ['your-choose-instance-id']
4 self.client.get_vpc_subnet(bbc_ids = instance_ids)
开通自动续费(包含关联产品)
使用以下代码可以开通自动续费
- 仅限预付费产品生效
Python
1def create_auto_renew_rules(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 #设置自动续费时间单位
5 renew_time_unit = "month"
6 #设置自动续费时间
7 renew_time = 1
8 self.client.create_auto_renew_rules(instance_id, renew_time_unit, renew_time)
取消自动续费(包含关联产品)
使用以下代码可以取消自动续费
- 仅限预付费产品生效
Python
1def delete_auto_renew_rules(self):
2 #设置你要操作的instance_id
3 instance_id = 'your-choose-instance-id'
4 self.client.delete_auto_renew_rules(instance_id)