如何获取适配区域的Amazon Linux 2正确AMI ID(CloudFormation场景)
在CloudFormation中按区域获取正确的Amazon Linux 2 AMI ID
方法一:使用AWS Systems Manager参数存储(推荐)
AWS官方维护了一组公共SSM参数,会自动按区域更新最新的Amazon Linux 2 AMI ID,无需手动维护。在CloudFormation中可直接引用这些参数:
Parameters: AmazonLinux2AMI: Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> # x86_64架构的默认参数路径 Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 # ARM64架构请替换为:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !Ref AmazonLinux2AMI InstanceType: t2.micro
该方法的核心优势是参数随AWS官方更新自动同步,彻底避免手动维护AMI ID的繁琐。
方法二:使用区域映射表
若需指定特定版本的AMI或自定义筛选规则,可手动创建区域映射表,通过Fn::FindInMap按当前区域匹配:
Mappings: AmazonLinux2AMIMapping: us-east-1: AMIID: ami-0cff7528ff583bf9a us-west-2: AMIID: ami-0194c3e07668a7e36 eu-west-1: AMIID: ami-0d527b8c289b4af7f # 按需添加其他区域的有效AMI ID Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [AmazonLinux2AMIMapping, !Ref 'AWS::Region', AMIID] InstanceType: t2.micro
注意:此方法需定期手动更新映射表中的AMI ID,确保镜像处于可用状态。
补充:修复aws ec2 describe-images命令的问题
你之前使用官方命令未找到正确AMI,大概率是缺少精确过滤条件。正确的命令应为:
aws ec2 describe-images --owners amazon \ --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" "Name=state,Values=available" \ --query "Images[0].ImageId" --output text
通过指定镜像名称前缀和可用状态,即可筛选出当前区域最新的Amazon Linux 2 HVM镜像。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

