以云服务器ECS Java SDK查询可用镜像资源的方法DescribeImages为例,介绍编写ECS Java SDK的通用流程。
前提条件
背景信息
- 本文示例中,IClientProfile和IAcsClient两个类包含在aliyun-java-sdk-core中,其他的类均包含在aliyun-java-sdk-ecs中。
- 本文示例目的是查询云服务器ECS公共镜像,您可以参见镜像相关文档了解什么是公共镜像。更多详情,请参见公共镜像概述。
- 下表列举了旧版SDK与新版SDK的方法、类以及对象之间的区别。若您使用的是旧版SDK,建议您切换为新版SDK,获取最新功能。
对比项 新版SDK 旧版SDK 提交请求 getAcsResponse() execute() 存放AccessKey的类 IClientProfile AliyunClient 存放身份凭据对象 DefaultProfile.getProfile(RegionId, AccessKey, AccessKeySecret) new DefaultAliyunClient(APIUrl, AccessKey, AccessKeySecret) 包名前缀 com.aliyuncs com.aliyun.api - 更多代码示例请参见阿里云代码示例库(CodeSample)。
操作步骤
执行结果
- 全部返回信息如下所示:
{ "PageNumber": 1, "TotalCount": 43, "PageSize": 1, "RegionId": "cn-hangzhou", "RequestId": "C93F3D9F-CF25-47DF-9C0F-614395E5DCAC", "Images": { "Image": [ { "ImageId": "freebsd_11_02_64_30G_alibase_20190722.vhd", "Description": "", "OSNameEn": "FreeBSD 11.2 64 bit", "ProductCode": "", "ResourceGroupId": "", "OSType": "linux", "Architecture": "x86_64", "OSName": "FreeBSD 11.2 64位", "DiskDeviceMappings": { "DiskDeviceMapping": [] }, "ImageOwnerAlias": "system", "Progress": "100%", "IsSupportCloudinit": false, "Usage": "instance", "CreationTime": "2019-07-23T05:41:06Z", "Tags": { "Tag": [] }, "ImageVersion": "", "Status": "Available", "ImageName": "freebsd_11_02_64_30G_alibase_20190722.vhd", "IsSupportIoOptimized": true, "IsSelfShared": "", "IsCopied": false, "IsSubscribed": false, "Platform": "Freebsd", "Size": 30 } ] } }
- 获取具体返回参数的查询结果,例如ImageId和ImageName:
freebsd_11_02_64_30G_alibase_20190722.vhd freebsd_11_02_64_30G_alibase_20190722.vhd
完整代码示例
以下为本文示例的完整Java SDK代码。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.alibaba.fastjson.JSON;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class DescribeImages {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAjVUwKznS*****", "BNPO1zoNSi484oizGM9fzzwJJ*****");
IAcsClient client = new DefaultAcsClient(profile);
DescribeImagesRequest request = new DescribeImagesRequest();
request.setRegionId("cn-hangzhou");
request.setImageOwnerAlias("system");
request.setPageNumber(1);
request.setPageSize(1);
try {
DescribeImagesResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSONString(response));
for(DescribeImagesResponse.Image image:response.getImages())
{
System.out.println(image.getImageId());
System.out.println(image.getImageName());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}