本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除 AWS Proton 的故障
了解如何解决 AWS Proton 问题。
引用 AWS CloudFormation 动态参数的部署错误
如果您看到引用 CloudFormation 动态变量的部署错误,请验证它们是否经过 Jinja 转义
示例 CloudFormation 动态变量语法:
'{{resolve:secretsmanager:MySecret:SecretString:password:EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE}}'
.
示例 AWS Proton 参数 Jinja 语法:
'{{ service_instance.environment.outputs.env-outputs }}'
.
为了避免这些解释错误,Jinja 转义了您的 CloudFormation 动态参数,如以下示例中所示。
该示例来自于《AWS CloudFormation 用户指南》。可以使用 AWS Secrets Manager secret-name 和 json-key 分段检索密钥中存储的登录凭证。
MyRDSInstance: Type: AWS::RDS::DBInstance Properties: DBName: 'MyRDSInstance' AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}'
要转义 CloudFormation 动态参数,您可以使用两种不同的方法:
-
将一个块放在
{% raw %} and {% endraw %}
之间:'{% raw %}' MyRDSInstance: Type: AWS::RDS::DBInstance Properties: DBName: 'MyRDSInstance' AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}' '{% endraw %}'
-
将一个参数放在
"{{ }}"
之间:MyRDSInstance: Type: AWS::RDS::DBInstance Properties: DBName: 'MyRDSInstance' AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: "{{ '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' }}" MasterUserPassword: "{{ '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}' }}"
有关信息,请参阅 Jinja escaping