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

如何在CloudFormation中引用Secrets Manager SecretString字段内的参数

问题根因

你将SecretString字段的值定义为了纯字符串字面量,CloudFormation 内置函数(如!Ref)只会在模板语法层级做解析,不会识别字符串内部的函数声明,因此你写在JSON字符串内的!Ref会被直接作为普通文本存入密钥,不会完成参数引用替换。

解决方案

共有两种常用实现方式,均可以实现参数自动注入到SecretString的JSON结构中:

方式1:使用!Sub函数插值(兼容性最好)

通过内置的!Sub函数完成参数值的替换,直接构造合法的JSON字符串,修正后的完整模板如下:

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  Name:
    Type: String
  myuserparameter:
    Type: String
  mypasswordparameter:
    Type: String

Resources:  
  SecretsManager:
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: !Ref Name
      # 单行简化写法,直接引用模板参数名即可完成替换
      SecretString: !Sub '{"username":"${myuserparameter}","password":"${mypasswordparameter}"}'

如果需要做自定义变量映射,也可以使用!Sub的双参数写法:

SecretString: !Sub
  - '{"username":"${customUser}","password":"${customPass}"}'
  - customUser: !Ref myuserparameter
    customPass: !Ref mypasswordparameter

方式2:使用!ToJsonString函数(更易维护)

如果你的SecretString结构比较复杂,担心手动写JSON出现格式错误,可以使用CloudFormation新版本支持的!ToJsonString函数,直接将YAML对象转换为JSON字符串:

SecretString: !ToJsonString
  username: !Ref myuserparameter
  password: !Ref mypasswordparameter

这种写法不需要手动处理JSON引号、逗号等语法,结构更清晰,出错概率更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:04