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

AWS CloudFormation模板YAML验证错误:Bash脚本被误判

解决CloudFormation YAML模板中UserData脚本的YAML验证错误

问题根源

YAML解析器误将Bash脚本内的内容识别为YAML语法元素,比如yum update -y里的-y被当作列表项标记,进而触发缩进对齐类的验证错误。

解决方法

1. 使用YAML Literal Block Scalar(推荐)

通过|符号声明多行纯文本块,让YAML解析器直接将内容视为原始文本,不解析其中的Bash语法。需保证脚本内容的缩进与Fn::Sub下一行的缩进完全一致:

UserData:
  Fn::Sub: |
    #!/bin/bash
    yum update -y
    # 后续Bash命令示例
    yum install -y httpd
    systemctl start httpd

|会完整保留脚本的换行和格式,同时不影响Fn::Sub对CloudFormation变量的替换(比如脚本内的${AWS::Region}可正常生效)。

2. 引号包裹脚本(适合短脚本)

若脚本内容较短,可将整个脚本用双引号或单引号包裹为单行字符串,换行用\n替代。注意脚本中的$符号需转义为$$,避免被Fn::Sub误解析:

UserData:
  Fn::Sub: "#!/bin/bash\nyum update -y\nyum install -y httpd"

3. 严格统一缩进

确保脚本每一行的缩进完全一致,禁止混合使用空格和制表符,且缩进层级需匹配Fn::Sub的子元素要求。YAML对缩进的精度要求极高,哪怕一个空格的偏差都可能触发验证错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:00:01