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

AWS CloudFormation模板Fn::Sub结合Bash参数替换失效问题

问题根因

你写的CFNREPO相关两行代码所在的模板块没有被!Sub内置函数处理,CloudFormation不会自动解析替换块内的${URL}参数占位符,导致这部分内容原样输出到UserData中,而bash执行时没有定义URL变量,无法完成预期的字符串替换。

解决方案

方案1:合并为单个!Sub块(更简洁,推荐)

直接把所有UserData逻辑放在同一个!Sub块内,无需用!Join拼接多段,注意bash的变量占位符需要用反斜杠转义$,避免被CloudFormation误解析:

UserData:
  Fn::Base64: !Sub |
    #!/bin/bash
    set -o xtrace
    .
    .
    git clone ${URL}
    # 将CloudFormation参数值赋值给bash变量
    URL="${URL}"
    # 转义$符,让bash执行字符串替换
    CFNREPO=\${URL/aws.*/aws-cfn.git}
    git clone \${CFNREPO}
    GITHUBURL: ${githubURL}
    .
    .

方案2:保留原有!Join结构修改

给第二段代码块也加上!Sub修饰,同时转义bash变量的$符:

UserData:
  Fn::Base64: !Join
    - ''
    - - !Sub |
          #!/bin/bash
          set -o xtrace
          .
          .
          git clone ${URL}
      - !Sub |
          URL="${URL}"
          CFNREPO=\${URL/aws.*/aws-cfn.git}
          git clone \${CFNREPO}
      - !Sub |
          GITHUBURL: ${githubURL}
          .
          .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:24:01