故障排除 AWS Proton - AWS Proton

终止支持通知:2026 年 10 月 7 日, AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后,您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础架构将保持不变。有关更多信息,请参阅《AWS Proton 服务弃用和迁移指南》

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

故障排除 AWS Proton

学习如何使用解决问题 AWS Proton。

引用 CloudFormation 动态参数的部署错误

如果您看到引用CloudFormation 动态变量的部署错误,请验证它们是否已被 Jinja 逃脱。这些错误可能是由 Jinja 错误地解释动态变量引起的。 CloudFormation 动态参数语法与你在 AWS Proton 参数中使用的 Jinja 语法非常相似。

CloudFormation 动态变量语法示例:

'{{resolve:secretsmanager:MySecret:SecretString:password:EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE}}'.

Jinja 语法 AWS Proton 参数示例:

'{{ service_instance.environment.outputs.env-outputs }}'.

为了避免这些误解错误,Jinja 逃避了您的 CloudFormation 动态参数,如以下示例所示。

此示例来自《 CloudFormation 用户指南》。 AWS Secrets Manager 密钥名称和 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