如何使用 aws-java-sdk 获取亚马逊网络服务中某个区域的所有可用图像列表?

how to get list of all available images for a region in amazon web services using aws-java-sdk?

如何使用 aws-java-sdk 获取一个区域的所有可用图像列表,我刚刚尝试了以下代码,它会持续执行很长时间。

AmazonEC2  ec2Client = new AmazonEC2Client(awsCredetials);
ec2Client.setRegion(RegionUtils.getRegion("us-west-2"));
DescribeImagesRequest request = new DescribeImagesRequest().withFilters(new LinkedList<Filter>());
DescribeImagesResult describeImagesResult= ec2Client.describeImages(request);

您正在列出 us-west-2 中的所有 public 个 AMI,有超过 50,000 个,添加一些过滤器。

例如查找所有 64 位 Ubuntu AMI:

request.getFilters().add(new Filter().withName("architecture").withValues("x86_64"));
request.getFilters().add(new Filter().withName("platform").withValues("Ubuntu"));

查看过滤器的完整列表 here

当我尝试使用过滤器时

request.getFilters().add(new Filter().withName("architecture").withValues("x86_64"));
request.getFilters().add(new Filter().withName("platform").withValues("Ubuntu"));

我的结果为零,我发现的原因是 platform 除了 windows 之外总是 null

我试过使用通配符

request.getFilters().add(new Filter().withName("architecture").withValues("x86_64"));
request.getFilters().add(new Filter().withName("description").withValues("*Linux*"));

这很好用,因为我们在这里不关心 plarform。但几乎我不知道为什么 DescribeImagesResult returns platformnull 对于 OS 除了 windows