Image
Create a custom image
There are two ways to create custom images: from an instance or from a snapshot. You can create a custom image using the following code:
1// Create a custom image from an instance
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;
9public class CreateImageFromInstance {
10 public static void main(String[] args) {
11 // Set your AK, SK and the endpoint to be accessed
12 String endpoint = "http://bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // Set default configuration
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // Create a BCC client
21 BccClient client = new BccClient(bccClientConfiguration);
22 CreateImageRequest createImageRequest = new CreateImageRequest();
23 // Set custom image name
24 createImageRequest.setImageName("image04");
25 // When creating an image from a snapshot, this parameter refers to the ID of the snapshot used to create the image. Optional; it cannot coexist with snapshotId. If both exist, only instanceId will be used
26 createImageRequest.setSnapshotId("m-***");
27 // When creating an image from an instance, this parameter refers to the ID of the instance used to create the image. Optional; it cannot coexist with snapshotId. If both exist, only instanceId will be used
28 createImageRequest.setInstanceId("i-***");
29 // Set whether the custom image is associated with the instance's CDS disk; relateCds defaults to false, indicating no association when true
30 createImageRequest.setRelateCds(true);
31 System.out.println(client.createImage(createImageRequest).getImageId());
32 }
33}
Remember that the default limit for creating custom images is 20 per account.
Query the image list
You can query the list of images that you have permission to access with the following code:
1package com.baidu.bce.image;
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.ListImagesRequest;
8import com.baidubce.services.bcc.model.image.ListImagesResponse;
9public class ListImages {
10 public static void main(String[] args) {
11 // Set your AK, SK and the endpoint to be accessed
12 String endpoint = "http://bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // Set default configuration
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // Create a BCC client
21 BccClient client = new BccClient(bccClientConfiguration);
22 ListImagesRequest request = new ListImagesRequest();
23 // Image type
24 request.withImageType("ALL");
25 ListImagesResponse response = client.listImages(request);
26 System.out.println(response);
27 }
28}
For specific image types, refer to the BCC API documentation [Query the Image List](BCC/API Reference/Image Related Interfaces/Query the image list.md)
Query image details
You can query image details with the following code:
1package com.baidu.bce.image;
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.GetImageRequest;
8import com.baidubce.services.bcc.model.image.GetImageResponse;
9public class GetImage {
10 public static void main(String[] args) {
11 // Set your AK, SK and the endpoint to be accessed
12 String endpoint = "http://bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // Set default configuration
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // Create a BCC client
21 BccClient client = new BccClient(bccClientConfiguration);
22 // Image ID
23 String imageId = "m-***";
24 GetImageRequest request = new GetImageRequest();
25 request.setImageId(imageId);
26 GetImageResponse response = client.getImage(request);
27 System.out.println(response);
28 }
29}
Delete a custom image
You can delete a custom image with the following code:
1package com.baidu.bce.image;
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.DeleteImageRequest;
8public class DeleteImage {
9 public static void main(String[] args) {
10 // Set your AK, SK and the endpoint to be accessed
11 String endpoint = "http://bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // Set default configuration
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // Create a BCC client
20 BccClient client = new BccClient(bccClientConfiguration);
21 // Image ID
22 String imageId = "m-***";
23 DeleteImageRequest request = new DeleteImageRequest();
24 request.setImageId(imageId);
25 client.deleteImage(request);
26 }
27}
Replicate a custom image across regions
The following code is used for users to replicate custom images across regions; only custom images can be replicated, while public images and service integration images cannot be replicated
Regions such as Beijing "bj", Guangzhou "gz", Suzhou "su"; multiple selections are allowed:
1package com.baidu.bce.image;
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.RemoteCopyImageRequest;
8import java.util.Arrays;
9import java.util.List;
10public class RemoteCopyImage {
11 public static void main(String[] args) {
12 // Set your AK, SK and the endpoint to be accessed
13 String endpoint = "http://bcc.bj.baidubce.com";
14 String ak = "ak";
15 String sk = "sk";
16 // Set default configuration
17 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
18 .withProtocol(Protocol.HTTP)
19 .withCredentials(new DefaultBceCredentials(ak, sk))
20 .withEndpoint(endpoint);
21 // Create a BCC client
22 BccClient client = new BccClient(bccClientConfiguration);
23 // Image ID
24 String imageId = "m-***";
25 // Image name
26 String name = "copied-image";
27 // Destination region
28 List<String> destinations = Arrays.asList("hkg");
29 RemoteCopyImageRequest request = new RemoteCopyImageRequest();
30 request.setImageId(imageId);
31 request.setDestRegion(destinations);
32 request.setName(name);
33 client.remoteCopyImage(request);
34 }
35}
Cancel cross-region replication of custom images
This is used to cancel cross-region replication of custom images; only custom images can be replicated, while public images and service integration images cannot be replicated:
1package com.baidu.bce.image;
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.CancelRemoteCopyImageRequest;
8public class CancelRemoteCopyImage {
9 public static void main(String[] args) {
10 // Set your AK, SK and the endpoint to be accessed
11 String endpoint = "http://bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // Set default configuration
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // Create a BCC client
20 BccClient client = new BccClient(bccClientConfiguration);
21 // Image ID
22 String imageId = "m-***";
23 CancelRemoteCopyImageRequest request = new CancelRemoteCopyImageRequest();
24 request.setImageId(imageId);
25 client.cancelRemoteCopyImage(request);
26 }
27}
Share a custom image
The following code is used for users to share their specified custom images. Only custom images can be shared; public images and service integration images cannot be shared:
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;
7import java.util.ArrayList;
8import java.util.List;
9public class Main {
10 public static void main(String[] args) {
11 // Set your AK, SK and the endpoint to be accessed
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // Set default configuration
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // Create a BCC client
21 BccClient client = new BccClient(bccClientConfiguration);
22
23 // Request to share the image with another account ID
24 ShareImageRequest shareRequest = new ShareImageRequest();
25 // Shared account ID
26 shareRequest.setAccountId("***");
27 // Image ID
28 shareRequest.setImageId("m-***");
29 client.shareImage(shareRequest);
30 }
31}
Unshare a custom image
The following code can be used to unshare a user's specified custom image:
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;
7import java.util.ArrayList;
8import java.util.List;
9public class Main {
10 public static void main(String[] args) {
11 // Set your AK, SK and the endpoint to be accessed
12 String endpoint = "bcc.bj.baidubce.com";
13 String ak = "ak";
14 String sk = "sk";
15 // Set default configuration
16 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
17 .withProtocol(Protocol.HTTP)
18 .withCredentials(new DefaultBceCredentials(ak, sk))
19 .withEndpoint(endpoint);
20 // Create a BCC client
21 BccClient client = new BccClient(bccClientConfiguration);
22
23 // Ubshare an image with a specific account ID
24 UnShareImageRequest unShareRequest = new UnShareImageRequest();
25 // Account ID
26 unShareRequest.setAccountId("***");
27 // Image ID
28 unShareRequest.setImageId("m-***");
29
30 client.unShareImage(unShareRequest);
31 }
32}
Query the list of users with whom the image has been shared
You can query the list of users with whom the image has been shared with the following code:
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;
8public class ListSharedUser {
9 public static void main(String[] args) {
10 // Set your AK, SK and the endpoint to be accessed
11 String endpoint = "http://bcc.bj.baidubce.com";
12 String ak = "ak";
13 String sk = "sk";
14 // Set default configuration
15 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
16 .withProtocol(Protocol.HTTP)
17 .withCredentials(new DefaultBceCredentials(ak, sk))
18 .withEndpoint(endpoint);
19 // Create a BCC client
20 BccClient client = new BccClient(bccClientConfiguration);
21 // Image ID
22 String imageId = "m-***";
23 ListSharedUserResponse listSharedUserResponse = client.listSharedUser(imageId);
24 System.out.println(listSharedUserResponse.getUsers());
25 }
26}
Query OS information based on instance short IDs in batch (new)
You can query OS information based on instance IDs in batch with the following code:
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;
9import java.util.ArrayList;
10import java.util.List;
11public class listOs {
12 public static void main(String[] args) {
13 // Set your AK, SK and the endpoint to be accessed
14 String endpoint = "http://bcc.bj.baidubce.com";
15 String ak = "ak";
16 String sk = "sk";
17 // Set default configuration
18 BceClientConfiguration bccClientConfiguration = new BccClientConfiguration()
19 .withProtocol(Protocol.HTTP)
20 .withCredentials(new DefaultBceCredentials(ak, sk))
21 .withEndpoint(endpoint);
22 // Create a BCC client
23 BccClient client = new BccClient(bccClientConfiguration);
24 ListOsRequest listOsRequest = new ListOsRequest();
25 List<String> ids = new ArrayList<String>();
26 // Set instance ID to be queried
27 ids.add("i-***");
28 // Set instance ID to be queried
29 ids.add("i-***");
30 listOsRequest.setInstanceIds(ids);
31 ListOsResponse listOsResponse = client.listOs(listOsRequest);
32 System.out.println(listOsResponse.getOsInfo());
33 }
34}
Query available public image based on instance specifications
You can query available public images based on instance specifications with the following code:
1public static void getAvailableImagesBySpec(BccClient bccClient) {
2 GetAvailableImagesBySpecRequest request = new GetAvailableImagesBySpecRequest();
3 request.setSpec("bcc.g4.c1m1");
4 bccClient.getAvailableImagesBySpec(request);
5}
