1

如何使用describe instanceJava SDK api 为给定的操作系统获取 AWS Ec2 映像 ID,该操作系统也是给定区域的免费套餐?我尝试使用,describe Instance api但我不知道如何使用Filters.

AmazonEC2ClientBuilder.defaultClient().describeImages(new DescribeImagesRequest().withFilters(Arrays.asList(
        new Filter().withName("is-public").withValues("true"),
        new Filter().withName("some name i dont know").withValues("some values i dont know")
)))

我正在努力获取图像 ID,它仅使用is-public过滤器返回大量图像。我只想获得符合条件的免费层级核心操作系统实例,没有安装额外的软件,如 SQL 服务器等。我尝试了这个文档,但不太了解。

确切地说,我想在启动标记为符合条件的免费套餐的实例时获取在 AWS 控制台上提供的图像的 AMI id,如下图所示

aws控制台中的ec2 amis

请给我一个示例代码片段,用于获取ubuntu 18.04 LTS上图中显示的此免费套餐合格图像的 ami-id,即ami-02d55cb47e83a99a0。并建议我如何更改它以获取其他图像(如 Suse、debian 或 redhat 等)的 AMI id。

PS

我想即使对于相同的操作系统,每个区域的这些 AMI id 也是不同的,我认为解决方案应该包括region在该区域中获取图像 id 之类的东西。在解决方案中,请包括解决方案,ap-south-1因为此屏幕截图适用于该地区。

编辑 1

我知道这与过滤namedescription. 我可以在 中使用通配符withValue(),就像我想搜索 AMI 一样new Filter().withName("description").withValue("*ubuntu-18.04*")*通配符在哪里。但它会返回ubuntu-18.04描述中包含的所有 AMI,包括所有已安装现有软件的付费 AMI 。如何过滤以仅获取符合免费层级条件的基本默认 ubuntu 映像。

4

1 回答 1

1

符合免费套餐条件更多的是与实例类型有关,而不是与 AMI 本身有关。按照这种逻辑,如果您可以找到所有适用于免费套餐合格实例类型(如 )的 AMI,t2.micro那么它应该可以满足您的目的。幸运的是,AWS Marketplace 搜索有一个Instance Type过滤器。以下 Marketplace URL 找到 AWS 提供的免费 AMI,ap-south-1兼容t2.micro

https://aws.amazon.com/marketplace/search?page=1&filters=VendorId%2CPricingPlan%2CFulfillmentOptionType%2CRegion%2CAmi::InstanceType&VendorId=e6a5002c-6dd0-4d1e-8196-0a1d1857229b&PricingPlan=Free&FulfillmentOptionType=Ami&Region=ap-south-1&Ami ::InstanceType=t2.micro

使用 AWS Java SDK 以编程方式获取 AMI。

于 2020-07-19T14:40:34.773 回答