【问题标题】:How to get AWS EC2 AMI image-id of a given operating system using Java sdk describe instances api如何使用 Java sdk describe instances api 获取给定操作系统的 AWS EC2 AMI 映像 ID
【发布时间】:2020-07-19 11:26:16
【问题描述】:

如何使用describe instance Java 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 Server 等。 我试过this documentation,但看不懂。

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

请给我一个示例代码 sn-p 以获取此免费层级合格图像的ubuntu 18.04 LTS ami-id 如上图所示,即ami-02d55cb47e83a99a0。并建议我如何更改它以获取其他图像(如 Suse、debian 或 redhat 等)的 AMI id。

附注

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

编辑 1

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

【问题讨论】:

  • 如果您不知道该值,那么我认为您需要 query 而不是 filter ,这里是 aws-cli 命令相应地转换它aws ec2 describe-instances --query "Reservations[].Instances[].ImageId"
  • @Adiii 您好,您提供的命令似乎提供了我帐户中实例的 AMI ID。假设没有实例存在,我想在启动实例之前知道 AMI id。假设我想获得一个 ubuntu 图像的免费 ami id?如果可能的话,如何使用描述图像 api 或任何其他方式获取它。
  • @AWS PS 你能解释一下吗?
  • 我明白了,那么你需要describe image API。这是您可以过滤的最官方的 ubuntu 发行版。 aws ec2 describe-images --filters "Name=owner-id,Values=099720109477" 或获取所有图片aws ec2 describe-images
  • 好的,现在我看到了一些有用的东西。你能告诉我这个099720109477 owner-id 对应什么吗?它是 AWS 的官方所有者并提供免费层级 AMI ID?

标签: amazon-web-services amazon-ec2 amazon-ami aws-java-sdk aws-java-sdk-2.x


【解决方案1】:

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

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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-24
    • 2023-03-03
    • 2019-06-14
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多