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

如何在CloudFormation的SecretStringTemplate中递归传入文件内用户名参数

解决方案

问题根因

AWS::SecretsManager::Secret 资源的 SecretStringTemplate 字段仅接受JSON格式的纯字符串输入,不支持直接传入结构化JSON对象,操作失败是因为没有将构造好的凭证结构转为符合要求的字符串格式。

修正后的模板配置

只需要修改 rRDSInstanceRotationSecret 资源下的 GenerateSecretString.SecretStringTemplate 字段,通过PyPlate将构造的用户凭证字典序列化为JSON字符串即可,示例如下:

Resources:
  rRDSInstanceRotationSecret:
    Count: !Ref pDbUserNameCount
    Condition: cDbUserNameCheck%d
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: |
          #!PyPlate
          import ast
          output = {}
          output['Fn::Sub'] = f"{ast.literal_eval(params['pDbUserName'])[%d-1]['pName']}"
      KmsKeyId: "alias/SecretsManager_KMSKey"
      GenerateSecretString:
        SecretStringTemplate: |
          #!PyPlate
          import ast, json
          # 解析传入的用户数组
          db_user_list = ast.literal_eval(params['pDbUserName'])
          # 取当前循环对应的用户配置
          current_user = db_user_list[%d-1]
          # 构造凭证结构后序列化为JSON字符串,自动处理特殊字符转义
          output = json.dumps({
              "username": current_user['pusername'],
              "masterarn": "<替换为你的实际主密钥ARN>"
          })
        GenerateStringKey: "password"
        PasswordLength: 16
        ExcludeCharacters: "\"@/\\"
      Tags: <替换为你的实际标签配置>

注意事项

  • 部署时需要将参数文件中的 aur_dbuser_params.Dbusername 数组序列化为JSON字符串后,传入模板的 pDbUserName 参数
  • Python的json.dumps方法会自动处理双引号等特殊字符的转义,完全符合SecretsManager的字段校验规则,不需要手动做转义处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:21:00