首页 > 解决方案 > 如何查询不是 EC2 的最新 AMI 映像 ID?

问题描述

AWS CloudFormation 模板允许使用这样的构造为 EC2 实例选择 AMI 映像 ID

ECSAMI:
    Description: AMI ID
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2

但我找不到指向特定版本的 AMI Image 的参数路径。例如 ECS 的 AMI ID 可以通过此路径查询,指向特定版本:

/aws/service/ecs/optimized-ami/amazon-linux-2/amzn2-ami-ecs-hvm-2.0.20181112-x86_64-ebs/image_id

如何查询不是 EC2 的最新 AMI 映像 ID?或者我可以在哪里完整的“树”或公开可用参数的路径列表?我想要这样的东西

/aws/service/<ec2>/<amazon-linux-2>/<image-version>

标签: amazon-web-servicesamazon-ec2

解决方案


您在问题中显示的特殊 SSM 方法由 AWS 提供,以便用户轻松访问特定 AMI 的最新版本。信息将发布到 Parameter Store。

另一种方法是在定义 EC2 实例的模板部分中硬编码所需 AMI 的值。您经常会看到使用映射为每个区域提供不同 AMI 值的示例模板。

除了提供实际的 AMI ID 之外,无法请求特定的 AMI。

为什么是这样?这是因为添加了 SSM 方法作为引用“最新”或“推荐”AMI 的便捷方式。一些后台进程将适当的 AMI ID 发布到 SSM。它并非旨在作为对所有AMI 进行编目的方法。

如果您确实需要按名称搜索,您可以使用 AWS Lambda 创建 CloudFormation 自定义资源,按名称查询可用的 AMI,然后返回适当的 AMI ID。


推荐阅读