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

CloudFormation YAML模板ServiceRole配置YAML格式错误如何修复?

修复CloudFormation模板中YAML格式错误的方法

你遇到的这个YAML格式错误,主要是因为模板里的!Sub语法没有正确使用引号,再加上一处空格缺失,导致CloudFormation的YAML解析器无法正确识别内容边界。

先看你原来的代码问题:

ServiceRole:!Join ["/", [!Sub arn:aws:iam::${AWS::AccountId}:role/service-role, !Ref BatchServiceRole]]

这里有两个关键问题:

  1. !Join前面缺少空格,YAML要求键值对的冒号后面必须跟空格,否则解析器会把ServiceRole:!Join当成一个整体,无法识别是键值对;
  2. !Sub后面的字符串没有加引号,里面的${AWS::AccountId}变量占位符会让解析器混淆,无法正确识别这是一个需要变量替换的字符串。

给你两种修复方案,都能解决这个问题:

方案一:修正原写法的格式问题

补上!Join前的空格,同时给!Sub的字符串加上双引号:

ServiceRole: !Join ["/", [!Sub "arn:aws:iam::${AWS::AccountId}:role/service-role", !Ref BatchServiceRole]]

方案二:用更简洁的!Sub直接拼接

其实完全可以不用!Join,直接在!Sub的字符串里引用参数,写法更直观,也减少了格式出错的概率:

ServiceRole: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/${BatchServiceRole}"

本质上,YAML对字符串的边界非常敏感,当字符串里包含变量、特殊符号或者复杂结构时,一定要用引号把它括起来,这样解析器才能准确识别它的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:35