镜像
更新时间:2024-07-02
创建自定义镜像
支持通过实例创建和通过快照创建两种方式。参考以下代码可以创建一个自定义镜像:
Java
1// 通过实例创建自定义镜像
2import com.baidubce.BceClientConfiguration;
3import com.baidubce.Protocol;
4import com.baidubce.auth.DefaultBceCredentials;
5import com.baidubce.services.bcc.BccClient;
6import com.baidubce.services.bcc.BccClientConfiguration;
7import com.baidubce.services.bcc.model.image.CreateImageRequest;
8import com.baidubce.services.bcc.model.volume.AttachVolumeRequest;
9
10public class CreateImageFromInstance {
11 public static void main(String[] args) {
12 // 设置您的ak、sk和要访问的endpoint
13 String endpoint = "http://bcc.bj.baidubce.com";
14 String ak = "ak";
15 String sk = "sk";
16 // 设置默认配置
17 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
18 .withProtocol(Protocol.HTTP)
19 .withCredentials(new DefaultBceCredentials(ak, sk))
20 .withEndpoint(endpoint);
21 // 创建bcc client
22 BccClient client = new BccClient(bccClientConfiguration);
23
24 CreateImageRequest createImageRequest = new CreateImageRequest();
25 // 设置自定义镜像名称
26 createImageRequest.setImageName("image04");
27 // 当从快照创建镜像时,此参数是指用于创建镜像的快照ID。可选参数,与 snapshotId 不同时存在,同时存在时只取instanceId
28 createImageRequest.setSnapshotId("m-***");
29 // 当从实例创建镜像时,此参数是指用于创建镜像的实例ID。可选参数,与 snapshotId 不同时存在,同时存在时只取instanceId
30 createImageRequest.setInstanceId("i-***");
31 // 设置自定义镜像是否关联实例CDS磁盘,relateCds默认为false,为true时表示关联
32 createImageRequest.setRelateCds(true);
33 System.out.println(client.createImage(createImageRequest).getImageId());
34 }
35}
注意,创建自定义镜像,默认配额20个每账号。
查询镜像列表
如下代码可以查询有权限的镜像列表:
Java
1package com.baidu.bce.image;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.BccClient;
7import com.baidubce.services.bcc.BccClientConfiguration;
8import com.baidubce.services.bcc.model.image.ListImagesRequest;
9import com.baidubce.services.bcc.model.image.ListImagesResponse;
10
11public class ListImages {
12
13 public static void main(String[] args) {
14 // 设置您的ak、sk和要访问的endpoint
15 String endpoint = "http://bcc.bj.baidubce.com";
16 String ak = "ak";
17 String sk = "sk";
18 // 设置默认配置
19 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
20 .withProtocol(Protocol.HTTP)
21 .withCredentials(new DefaultBceCredentials(ak, sk))
22 .withEndpoint(endpoint);
23 // 创建bcc client
24 BccClient client = new BccClient(bccClientConfiguration);
25
26 ListImagesRequest request = new ListImagesRequest();
27 // 镜像类型
28 request.withImageType("ALL");
29 ListImagesResponse response = client.listImages(request);
30 System.out.println(response);
31 }
32}
具体的镜像类型可详细参考BCC API文档查询镜像列表
查询镜像详情
如下代码可以查询镜像详细信息:
Java
1package com.baidu.bce.image;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.BccClient;
7import com.baidubce.services.bcc.BccClientConfiguration;
8import com.baidubce.services.bcc.model.image.GetImageRequest;
9import com.baidubce.services.bcc.model.image.GetImageResponse;
10
11public class GetImage {
12 public static void main(String[] args) {
13 // 设置您的ak、sk和要访问的endpoint
14 String endpoint = "http://bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // 设置默认配置
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
19 .withProtocol(Protocol.HTTP)
20 .withCredentials(new DefaultBceCredentials(ak, sk))
21 .withEndpoint(endpoint);
22 // 创建bcc client
23 BccClient client = new BccClient(bccClientConfiguration);
24
25 // 镜像ID
26 String imageId = "m-***";
27 GetImageRequest request = new GetImageRequest();
28 request.setImageId(imageId);
29
30 GetImageResponse response = client.getImage(request);
31 System.out.println(response);
32 }
33}
删除自定义镜像
如下代码可以删除一个自定义镜像:
Java
1package com.baidu.bce.image;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.BccClient;
7import com.baidubce.services.bcc.BccClientConfiguration;
8import com.baidubce.services.bcc.model.image.DeleteImageRequest;
9
10public class DeleteImage {
11
12 public static void main(String[] args) {
13 // 设置您的ak、sk和要访问的endpoint
14 String endpoint = "http://bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // 设置默认配置
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
19 .withProtocol(Protocol.HTTP)
20 .withCredentials(new DefaultBceCredentials(ak, sk))
21 .withEndpoint(endpoint);
22 // 创建bcc client
23 BccClient client = new BccClient(bccClientConfiguration);
24
25 // 镜像ID
26 String imageId = "m-***";
27 DeleteImageRequest request = new DeleteImageRequest();
28 request.setImageId(imageId);
29
30 client.deleteImage(request);
31 }
32}
跨地域复制自定义镜像
如下代码用于用户跨地域复制自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能复制
regions如北京"bj",广州"gz",苏州"su",可多选:
Java
1package com.baidu.bce.image;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.BccClient;
7import com.baidubce.services.bcc.BccClientConfiguration;
8import com.baidubce.services.bcc.model.image.RemoteCopyImageRequest;
9
10import java.util.Arrays;
11import java.util.List;
12
13public class RemoteCopyImage {
14 public static void main(String[] args) {
15 // 设置您的ak、sk和要访问的endpoint
16 String endpoint = "http://bcc.bj.baidubce.com";
17 String ak = "ak";
18 String sk = "sk";
19 // 设置默认配置
20 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
21 .withProtocol(Protocol.HTTP)
22 .withCredentials(new DefaultBceCredentials(ak, sk))
23 .withEndpoint(endpoint);
24 // 创建bcc client
25 BccClient client = new BccClient(bccClientConfiguration);
26
27 // 镜像ID
28 String imageId = "m-***";
29
30 // 镜像名称
31 String name = "copied-image";
32
33 // 目的region
34 List<String> destinations = Arrays.asList("hkg");
35 RemoteCopyImageRequest request = new RemoteCopyImageRequest();
36 request.setImageId(imageId);
37 request.setDestRegion(destinations);
38 request.setName(name);
39
40 client.remoteCopyImage(request);
41 }
42}
取消跨地域复制自定义镜像
用于取消跨地域复制自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能复制:
Java
1package com.baidu.bce.image;
2
3import com.baidubce.BceClientConfiguration;
4import com.baidubce.Protocol;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.services.bcc.BccClient;
7import com.baidubce.services.bcc.BccClientConfiguration;
8import com.baidubce.services.bcc.model.image.CancelRemoteCopyImageRequest;
9
10public class CancelRemoteCopyImage {
11
12 public static void main(String[] args) {
13 // 设置您的ak、sk和要访问的endpoint
14 String endpoint = "http://bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // 设置默认配置
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
19 .withProtocol(Protocol.HTTP)
20 .withCredentials(new DefaultBceCredentials(ak, sk))
21 .withEndpoint(endpoint);
22 // 创建bcc client
23 BccClient client = new BccClient(bccClientConfiguration);
24
25 // 镜像ID
26 String imageId = "m-***";
27
28 CancelRemoteCopyImageRequest request = new CancelRemoteCopyImageRequest();
29 request.setImageId(imageId);
30
31 client.cancelRemoteCopyImage(request);
32 }
33}
共享自定义镜像
如下代码可以共享用户自己的指定的自定义镜像,仅限自定义镜像,公共镜像和服务集成镜像不能共享:
Java
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.image.ShareImageRequest;
7
8
9import java.util.ArrayList;
10import java.util.List;
11
12
13public class Main {
14 public static void main(String[] args) {
15 // 设置您的ak、sk和要访问的endpoint
16 String endpoint = "bcc.bj.baidubce.com";
17 String ak = "ak";
18 String sk = "sk";
19 // 设置默认配置
20 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
21 .withProtocol(Protocol.HTTP)
22 .withCredentials(new DefaultBceCredentials(ak, sk))
23 .withEndpoint(endpoint);
24 // 创建bcc client
25 BccClient client = new BccClient(bccClientConfiguration);
26
27 // 请求将镜像共享给其他账号id
28 ShareImageRequest shareRequest = new ShareImageRequest();
29 // 共享账号ID
30 shareRequest.setAccountId("***");
31 // 镜像ID
32 shareRequest.setImageId("m-***");
33
34 client.shareImage(shareRequest);
35 }
36}
取消共享自定义镜像
如下代码可以取消共享用户自己的指定的自定义镜像:
Java
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.image.UnShareImageRequest;
7
8
9import java.util.ArrayList;
10import java.util.List;
11
12
13public class Main {
14 public static void main(String[] args) {
15 // 设置您的ak、sk和要访问的endpoint
16 String endpoint = "bcc.bj.baidubce.com";
17 String ak = "ak";
18 String sk = "sk";
19 // 设置默认配置
20 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
21 .withProtocol(Protocol.HTTP)
22 .withCredentials(new DefaultBceCredentials(ak, sk))
23 .withEndpoint(endpoint);
24 // 创建bcc client
25 BccClient client = new BccClient(bccClientConfiguration);
26
27 // 取消将镜像共享给某个账户id
28 UnShareImageRequest unShareRequest = new UnShareImageRequest();
29 // 账号ID
30 unShareRequest.setAccountId("***");
31 // 镜像ID
32 unShareRequest.setImageId("m-***");
33
34 client.unShareImage(unShareRequest);
35 }
36}
查询镜像已共享用户列表
如下代码可以查询镜像已共享的用户列表:
Java
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.image.CreateImageRequest;
7import com.baidubce.services.bcc.model.image.ListSharedUserResponse;
8
9public class ListSharedUser {
10 public static void main(String[] args) {
11 // 设置您的ak、sk和要访问的endpoint
12 String endpoint = "http://bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // 设置默认配置
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // 创建bcc client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // 镜像id
23 String imageId = "m-***";
24 ListSharedUserResponse listSharedUserResponse = client.listSharedUser(imageId);
25 System.out.println(listSharedUserResponse.getUsers());
26 }
27}
根据实例短ID批量查询OS信息(新增)
如下代码可以根据实例ID批量查询OS信息:
Java
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bcc.BccClient;
5import com.baidubce.services.bcc.BccClientConfiguration;
6import com.baidubce.services.bcc.model.image.ListOsRequest;
7import com.baidubce.services.bcc.model.image.ListOsResponse;
8import com.baidubce.services.bcc.model.image.ListSharedUserResponse;
9
10import java.util.ArrayList;
11import java.util.List;
12
13public class listOs {
14 public static void main(String[] args) {
15 // 设置您的ak、sk和要访问的endpoint
16 String endpoint = "http://bcc.bj.baidubce.com";
17 String ak = "ak";
18 String sk = "sk";
19 // 设置默认配置
20 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
21 .withProtocol(Protocol.HTTP)
22 .withCredentials(new DefaultBceCredentials(ak, sk))
23 .withEndpoint(endpoint);
24 // 创建bcc client
25 BccClient client = new BccClient(bccClientConfiguration);
26
27 ListOsRequest listOsRequest = new ListOsRequest();
28
29 List<String> ids = new ArrayList<String>();
30
31 // 设置需要查询的实例ID
32 ids.add("i-***");
33 // 设置需要查询的实例ID
34 ids.add("i-***");
35
36 listOsRequest.setInstanceIds(ids);
37 ListOsResponse listOsResponse = client.listOs(listOsRequest);
38 System.out.println(listOsResponse.getOsInfo());
39 }
40}
根据实例规格查询可用公共镜像
如下代码可以根据实例规格查询可用公共镜像:
Java
1public static void getAvailableImagesBySpec(BccClient bccClient) {
2 GetAvailableImagesBySpecRequest request = new GetAvailableImagesBySpecRequest();
3 request.setSpec("bcc.g4.c1m1");
4 bccClient.getAvailableImagesBySpec(request);
5}