You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CloudFormation中通过SSM Parameter Store生成动态AllowedValues下拉列表

问题原因

首先明确CloudFormation的两个核心规则限制了你的原有写法生效:

  1. AllowedValues属于模板静态校验规则,在模板提交到CloudFormation、控制台渲染参数表单时就会读取,这个阶段CloudFormation不会调用SSM接口解析动态值,也不支持在AllowedValues中使用{{resolve:ssm}}动态引用。
  2. AWS::SSM::Parameter::Value<List<String>>类型的参数作用是:你在创建堆栈时输入SSM参数路径,CloudFormation会在资源部署阶段自动拉取该路径对应的StringList值返回,该类型参数的AllowedValues只能限制允许输入的SSM路径,无法将路径对应的值填充为下拉选项。
解决方案

方案1:仅需动态获取值,不需要控制台下拉框

直接使用正确的SSM参数类型定义即可,不需要在AllowedValues中写动态引用:

Parameters:
  # S3存储桶场景
  myS3Buckets:
    Type: AWS::SSM::Parameter::Value<List<String>>
    Default: /s3/lists
    # 可选:限制允许传入的SSM路径
    AllowedValues:
      - /s3/lists
      - /s3/other-bucket-lists

  # EC2实例类型场景
  InstanceTypesDynamic:
    Type: AWS::SSM::Parameter::Value<String>
    Default: /ec2/lists/default-type
    AllowedValues:
      - /ec2/lists/default-type
      - /ec2/lists/test-type

如果需要取StringList中的单个值,用!Select内置函数即可,比如取第一个存储桶:!Select [0, !Ref myS3Buckets]

方案2:需要控制台展示下拉选择框

因为CloudFormation控制台不会主动拉取SSM值渲染表单,所以需要在部署模板前做预处理,动态把SSM中的值填充到模板的AllowedValues中,示例流程如下:

  1. 编写预处理脚本(以bash为例,依赖aws cli):
# 拉取SSM中存储的实例类型列表,转换为YAML列表格式
INSTANCE_TYPE_ALLOWED=$(aws ssm get-parameter --name /ec2/lists --query Parameter.Value --output text | tr ',' '\n' | sed 's/^/      - /')
# 拉取S3存储桶列表
S3_BUCKET_ALLOWED=$(aws ssm get-parameter --name /s3/lists --query Parameter.Value --output text | tr ',' '\n' | sed 's/^/      - /')

# 渲染生成最终的CloudFormation模板
cat > final-cfn-template.yaml << EOF
Parameters:
  InstanceTypesDynamic:
    Type: String
    AllowedValues:
${INSTANCE_TYPE_ALLOWED}
  myS3Buckets:
    Type: String
    AllowedValues:
${S3_BUCKET_ALLOWED}
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      AvailabilityZone: us-east-1a
      ImageId: ami-0742b4e673072066f
      InstanceType: !Ref InstanceTypesDynamic
EOF
  1. 执行脚本生成模板后,再用生成的模板创建堆栈,控制台就会正常展示带可选值的下拉框。每次SSM中的可选值更新后,重新执行一次脚本即可,不需要手动修改模板内容。

内容的提问来源于stack exchange,提问作者GeoCom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:57:02