镜像
更新时间:2024-07-02
通过实例创建自定义镜像
- 用于创建自定义镜像,默认每个账号配额20个,创建后的镜像可用于创建实例。
-
只有 Running 或 Stopped 状态的实例才可以执行成功。
- 仅限通过系统盘快照创建自定义镜像。
Plain Text
1import uuid
2
3from baidubce.auth.bce_credentials import BceCredentials
4from baidubce.bce_client_configuration import BceClientConfiguration
5from baidubce.services.bcc import bcc_client, bcc_model
6
7if __name__ == '__main__':
8 # 设置您的ak、sk和要访问的地域
9 HOST = 'http://bcc.bj.baidubce.com'
10 AK = 'ak'
11 SK = 'sk'
12 # 设置默认配置
13 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
14 endpoint=HOST)
15 # 创建bcc client
16 client = bcc_client.BccClient(config)
17
18 client_token = str(uuid.uuid4())
19 image_name = 'instanceImage1' + client_token # 创建的镜像名称
20 instance_id = 'i-***' # 创建的实例id
21 snapshot_id = 'm-***' # 快照id
22
23 resp = client.create_image_from_snapshot_id(image_name,
24 snapshot_id=snapshot_id,
25 client_token=client_token)
26 print(resp)
通过快照创建自定义镜像
通过快照创建时,只有 Available 状态的快照才可以执行成功:
Plain Text
1import uuid
2from baidubce.auth.bce_credentials import BceCredentials
3from baidubce.bce_client_configuration import BceClientConfiguration
4from baidubce.services.bcc import bcc_client, bcc_model
5
6if __name__ == '__main__':
7 # 设置您的ak、sk和要访问的地域
8 HOST = 'http://bcc.bj.baidubce.com'
9 AK = 'ak'
10 SK = 'sk'
11 # 设置默认配置
12 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
13 endpoint=HOST)
14 # 创建bcc client
15 client = bcc_client.BccClient(config)
16
17 client_token = str(uuid.uuid4())
18 image_name = 'instanceImage1' + client_token # 创建的镜像名称
19 instance_id = 'i-***' # 创建的实例id
20 snapshot_id = 'm-***' # 快照id
21
22 resp = client.create_image_from_snapshot_id(image_name,
23 snapshot_id=snapshot_id,
24 client_token=client_token)
25 print(resp)
查询镜像列表
使用以下接口查询用户所有的镜像信息:
- 查询的镜像信息中包括公共镜像、自定义镜像和服务集成镜像。
- 支持按 imageType 来过滤查询,此参数非必需,未设置时默认为 All,即查询所有类型的镜像。
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = b'http://bcc.bj.baidubce.com'
8 AK = b'ak'
9 SK = b'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15 response = client.list_images()
16
17 print(response)
查询镜像详情
使用以下接口根据指定镜像ID查询单个镜像的详细信息:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = b'http://bcc.bj.baidubce.com'
8 AK = b'ak'
9 SK = b'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15 imageId = "m-***"
16 response = client.get_image(imageId)
17
18 print(response)
删除自定义镜像
使用以下接口删除用户自己的指定的自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能删除
- 镜像删除后无法恢复,不能再用于创建、重置实例:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = b'http://bcc.bj.baidubce.com'
8 AK = b'ak'
9 SK = b'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15 imageId = "m-***"
16 response = client.delete_image(imageId)
17
18 print(response)
跨地域复制镜像(新)
使用以下接口跨地域复制自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能复制:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = b'http://bcc.bj.baidubce.com'
8 AK = b'ak'
9 SK = b'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15 imageId = "m-***"
16 destinationImageName = "new-image"
17 destinations = ["hkg"]
18
19 response = client.remote_copy_image(imageId, destinationImageName, destinations)
20
21 print(response)
取消跨地域复制镜像(新)
用于取消跨地域复制自定义镜像:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = b'http://bcc.bj.baidubce.com'
8 AK = b'ak'
9 SK = b'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建 client
14 client = bcc_client.BccClient(config)
15 imageId = "m-***"
16
17 response = client.cancle_remote_copy_image(imageId)
18
19 print(response)
共享自定义镜像(新)
使用以下接口可以共享用户自己的指定的自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能共享:
Python
1# !/usr/bin/env python
2# coding=utf-8
3
4from baidubce.services.bcc import bcc_client
5from baidubce.auth.bce_credentials import BceCredentials
6from baidubce.bce_client_configuration import BceClientConfiguration
7
8
9if __name__ == '__main__':
10 # 设置您的ak、sk和要访问的地域
11 HOST = b'http://bcc.bj.baidubce.com'
12 AK = b'ak'
13 SK = b'sk'
14 # 设置默认配置
15 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
16 endpoint=HOST)
17 # 创建bcc client
18 client = bcc_client.BccClient(config)
19
20 share_image_id = "m-***"
21 share_account_id = "***"
22 # 请求将镜像共享给指定账号
23 response = client.share_image(image_id=share_image_id, # 镜像ID
24 account_id=share_account_id) # 共享账号ID
25
26 print(response)
取消共享自定义镜像(新)
使用以下接口可以取消共享用户指定的自定义镜像:
Python
1# !/usr/bin/env python
2# coding=utf-8
3
4from baidubce.services.bcc import bcc_client
5from baidubce.auth.bce_credentials import BceCredentials
6from baidubce.bce_client_configuration import BceClientConfiguration
7
8
9if __name__ == '__main__':
10 # 设置您的ak、sk和要访问的地域
11 HOST = b'http://bcc.bj.baidubce.com'
12 AK = b'ak'
13 SK = b'sk'
14 # 设置默认配置
15 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
16 endpoint=HOST)
17 # 创建bcc client
18 client = bcc_client.BccClient(config)
19
20 unshare_image_id = "m-***"
21 unshare_account_id = "***"
22 # 请求取消将镜像共享给指定账号
23 response = client.unshare_image(image_id=share_image_id, # 镜像ID
24 account_id=share_account_id) # 共享账号ID
25
26 print(response)
查询已共享用户列表(新)
使用以下接口查询镜像已共享的用户列表:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client, bcc_model
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = 'http://bcc.bj.baidubce.com'
8 AK = 'ak'
9 SK = 'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15
16 image_id = 'm-***' # 镜像id
17
18 print(client.list_shared_user(image_id=image_id).users)
根据实例短id批量查询os信息(新)
使用以下接口可以根据实例id批量查询OS信息:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client, bcc_model
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = 'http://bcc.bj.baidubce.com'
8 AK = 'ak'
9 SK = 'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15
16 # 待查询实例id
17 instance_id1 = 'i-***' # 查询实例Id
18 instance_id2 = 'i-***' # 查询实例Id
19 instance_ids = []
20 instance_ids.append(instance_id1)
21 instance_ids.append(instance_id2)
22 resp = client.list_os(instance_ids=instance_ids)
23 print(resp.os_info)
镜像绑定标签
使用以下代码可以给指定镜像绑定标签:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client, bcc_model
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = 'http://bcc.bj.baidubce.com'
8 AK = 'ak'
9 SK = 'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15
16 tag1 = bcc_model.TagModel(tagKey='key1', # 标签key value
17 tagValue='value1')
18 tag2 = bcc_model.TagModel(tagKey='key2', # 标签key value
19 tagValue='value2')
20 tag_list = []
21 tag_list.append(tag1)
22 tag_list.append(tag2)
23 resp = client.bind_image_to_tags(image_id='m-***', tags=tag_list)
24 print(resp)
镜像解绑标签
使用以下代码可以给指定镜像绑定标签:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client, bcc_model
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = 'http://bcc.bj.baidubce.com'
8 AK = 'ak'
9 SK = 'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15
16 tag1 = bcc_model.TagModel(tagKey='key1', # 标签key value
17 tagValue='value1')
18 tag2 = bcc_model.TagModel(tagKey='key2', # 标签key value
19 tagValue='value2')
20 tag_list = []
21 tag_list.append(tag1)
22 tag_list.append(tag2)
23 resp = client.unbind_image_to_tags(image_id='m-***', tags=tag_list)
24 print(resp)
导入镜像
使用以下代码可以导入一个镜像:
Plain Text
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bcc import bcc_client, bcc_model
4
5if __name__ == '__main__':
6 # 设置您的ak、sk和要访问的地域
7 HOST = 'http://bcc.bj.baidubce.com'
8 AK = 'ak'
9 SK = 'sk'
10 # 设置默认配置
11 config = BceClientConfiguration(credentials=BceCredentials(AK, SK),
12 endpoint=HOST)
13 # 创建bcc client
14 client = bcc_client.BccClient(config)
15
16 resp = client.import_custom_image(
17 os_name='Centos', # 操作系统名称
18 os_arch='64', # 操作系统位数
19 os_type='linux', # 操作系统类型
20 os_version='7.2', # 操作系统版本
21 name='image-01', # 镜像名称,支持大小写字母、数字、中文以及-_ /.特殊字符,必须以字母开头,长度1-65。
22 bos_url='https://bcc-bos.bj.bcebos.com/image_test/CentOS-6-x86_64-GenericCloud.qcow2') # bos镜像地址
23
24 print(resp)
根据实例规格查询可用公共镜像
使用以下代码可以根据实例规格查询可用公共镜像:
Plain Text
1 def test_get_available_images_by_spec(self):
2 """
3 test case for get_available_images_by_spec
4 """
5 resp = self.client.get_available_images_by_spec(spec='bcc.ic4.c1m1', os_name='Centos')
6 self.assertEqual(
7 type(resp),
8 baidubce.bce_response.BceResponse)
9 if resp is not None and resp.content is not None:
10 print(json.loads(resp.content.decode('utf-8')))
11 else:
12 print(resp)