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

CloudFormation配置Lambda VpcConfig报类型校验错误如何解决

问题根因

报错核心是VpcConfig配置段的两个字段类型不符合要求,同时存在CloudFormation内置函数的语法错误:

  • SecurityGroupIds和SubnetIds字段强制要求传入*字符串数组(JSONArray)*格式,哪怕只绑定1个安全组/子网,也必须用列表结构传值,当前写法直接传入了单个字符串值,触发类型校验失败
  • 现有配置存在多处语法问题:
    • YAML键值对缺空格:Type:String不符合YAML语法,键和值之间必须加空格
    • 内置函数名拼写错误:!importValue首字母未大写,正确短函数名为!ImportValue
    • Fn::Sub、!ImportValue的传参格式错误:!ImportValue直接接收要导入的导出值名称作为参数,不能写成'fn::sub': xxx的键值对对象格式,多个子网ID也不能直接堆在!ImportValue层级下
修正方案

1. 修正Parameters段配置

补全YAML必要的空格,调整参数语义明确为「对应资源的CloudFormation导出值名称」:

Parameters:
  SecurityGroupIdExportName:
    Description: VPC安全组ID对应的跨栈导出值名称
    Type: String
    Default: 'sg-importkey'
  SubnetId1ExportName:
    Description: 第一个可用区子网ID对应的跨栈导出值名称
    Type: String
    Default: 'sb1-importkey'
  SubnetId2ExportName:
    Description: 第二个可用区子网ID对应的跨栈导出值名称
    Type: String
    Default: 'sb2-importkey'

2. 修正VpcConfig配置段

将安全组、子网ID都改为列表格式传入,每个资源值单独用!ImportValue导入后作为列表项:

VpcConfig:
  SecurityGroupIds:
    - !ImportValue !Ref SecurityGroupIdExportName
  SubnetIds:
    - !ImportValue !Ref SubnetId1ExportName
    - !ImportValue !Ref SubnetId2ExportName
额外注意事项
  • 如果跨栈导出名称是固定值不需要动态传入,可以省略Parameters定义,直接在!ImportValue后写死导出名称即可,例如- !ImportValue sg-importkey
  • 后续如果需要绑定更多安全组、子网,只需要在对应列表下新增列表项,单独导入对应资源ID即可
  • 配置Lambda VPC访问公网时,记得确保绑定的子网有指向NAT网关的默认路由,否则Lambda依然无法访问公网

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:40:36