amazon-web-services - 具有 Cloudformation 动态引用的 AWS Proton 模板

标签 amazon-web-services jinja2 aws-cloudformation

在 AWS Proton 模板中,我们使用 Jinja 的双大括号语法 "{{}}" 定义一个变量。 Cloudformation 似乎对 dynamic references 使用相同的语法。 .

例如,使用 Cloudformation 定义一个 RDS 实例,其密码存储在 Secrets Manager 中,如下所示:

MyDBInstance2:
    Type: AWS::RDS::DBInstance
    Properties:
    AllocatedStorage: 20
    DBInstanceClass: db.t2.micro
    DBName: !Ref RDSDBName
    Engine: mysql
    MasterUsername:
      Fn::Join:
        - ""
        - - "{{resolve:secretsmanager:"
          - Ref: DBCredentialsSecret
          - ":SecretString:username::}}"
    MasterUserPassword:
      Fn::Join:
        - ""
        - - "{{resolve:secretsmanager:"
          - Ref: DBCredentialsSecret
          - ":SecretString:password::}}"
    MultiAZ: False
    PubliclyAccessible: False      
    StorageType: gp2
    DBSubnetGroupName: !Ref myDBSubnetGroup
    VPCSecurityGroups:
    - !Ref RDSSecurityGroup
    BackupRetentionPeriod: 0
    DBInstanceIdentifier: 'rotation-instance'

是否可以在 Proton 模板中包含动态引用?我如何知道我的模板出了什么问题?

最佳答案

我最终找到了解决方案:

Jinja 支持使用“{% raw %}{% endraw %}”语法进行转义 ( documentation )

使用它,我能够构建以下有效模板:

MyDBInstance2:
    Type: AWS::RDS::DBInstance
    Properties:
    AllocatedStorage: 20
    DBInstanceClass: db.t2.micro
    DBName: !Ref RDSDBName
    Engine: mysql
      MasterUsername:
        Fn::Join:
          - ""
          - - "{% raw %}{{resolve:secretsmanager:{%endraw%}"
            - Ref: DBCredentialsSecretAFB45EA2
            - "{% raw %}:SecretString:username::}}{%endraw%}"
      MasterUserPassword:
        Fn::Join:
          - ""
          - - "{% raw %}{{resolve:secretsmanager:{%endraw%}"
            - Ref: DBCredentialsSecretAFB45EA2
            - "{% raw %}:SecretString:password::}}{%endraw%}"
    MultiAZ: False
    PubliclyAccessible: False      
    StorageType: gp2
    DBSubnetGroupName: !Ref myDBSubnetGroup
    VPCSecurityGroups:
    - !Ref RDSSecurityGroup
    BackupRetentionPeriod: 0
    DBInstanceIdentifier: 'rotation-instance'

关于amazon-web-services - 具有 Cloudformation 动态引用的 AWS Proton 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69048925/

相关文章:

windows - AWS Elastic Beanstalk - 使用 eb 将 git repo 附加到现有的 EB 环境

node.js - 从 AWS Lambda 进行 API 调用结果不一致

python - 在 Jinja2 中使用变量名称作为 block 名称?

python - ansible/jinja2 获取独特的子元素

amazon-web-services - AWS : Getting 502 from Application LoadBalancer to EC2 instance

amazon-web-services - AWS - 回滚/重新创建 DELETE_COMPLETE 云形成堆栈

amazon-web-services - 访问 index.html Amazon S3 静态网站被拒绝

amazon-web-services - 请求中包含的安全 token 已过期

python - 为什么 Flask 中的 admin 模板会覆盖 main 模板?

amazon-web-services - 当前有 9 条规则的监听器当前正在使用标识符优先级为 10 的错误 ListenerRule