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

AWS CloudFormation YAML格式错误求助:标签字段解析失败

AWS CloudFormation YAML模板问题解决方案

1. 修复Subnet2 Tags字段的YAML格式错误

错误提示"expected , but found '?'"的核心原因是YAML结构缩进错误或误用了显式键语法,和Value的写法无关。按以下步骤修正:

  • 确保Tags是数组结构:每个标签项以-开头,且缩进与Properties下的其他属性(比如CidrBlock)对齐
  • 标签对象的Key和Value必须是标准键值对,禁止使用YAML的?显式键语法(比如? Name: ...这种写法完全不符合CloudFormation要求)
  • 正确示例:
Subnet2:
  Type: AWS::EC2::Subnet
  Properties:
    VpcId: !Ref VpcId
    CidrBlock: 10.0.1.0/24
    AvailabilityZone: !Select [1, !GetAZs '']
    Tags:
      - Key: Name
        Value: Public Subnet 2
      - Key: Environment
        Value: Production

2. 清理混写的Terraform语法

CloudFormation与Terraform语法不兼容,需全面替换为CloudFormation标准写法:

  • 移除Terraform风格的resource "aws_xxx" "xxx" { ... }块,改用CloudFormation的Resources节下的资源条目
  • 替换Terraform变量引用(如var.vpc_id)为CloudFormation的参数引用(!Ref VpcId)或参数存储引用(!Sub '{{resolve:ssm:/myapp/vpc-id}}')
  • 替换Terraform的AZ获取逻辑(如aws_availability_zones.available.names[1])为CloudFormation内置函数:!Select [1, !GetAZs '']

3. 解决EC2TgtGrp资源重复定义问题

CloudFormation要求Resources节下的资源名称全局唯一,重复定义会直接导致部署失败:

  • 删除所有重复的EC2TgtGrp资源条目,仅保留一个符合需求的定义
  • 若需多个目标组,为每个目标组设置唯一的资源名称(如EC2TgtGrp-Web、EC2TgtGrp-API),并分别配置对应的端口、协议、VPC等属性

内容的提问来源于stack exchange,提问作者Data Science Analytics Manager

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:46:09