AWS Proton 疑難排解 - AWS Proton

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Proton 疑難排解

了解如何對AWS Proton.

參考AWS CloudFormation動態參數的部署錯誤

如果您看到參考CloudFormation 動態變數的部署錯誤,請確認它們是否已逸出 Jinja。這些錯誤可能是由於 Jinja 對動態變量的誤解造成的。動 CloudFormation 態參數語法與您搭配AWS Proton參數使用的 Jinja 語法非常相似。

CloudFormation 動態變數語法範例:

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

示例AWS Proton參數神社語法:

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

為了避免這些誤解錯誤,Jinja 逸出您的 CloudFormation 動態參數,如下列範例所示。

此範例來自《AWS CloudFormation使用者指南》。AWS Secrets Manager秘密名稱和 JSON 鍵段可用於檢索存儲在密鑰中的登錄憑據。

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}}' }}"

有關信息,請參見金剛逃脫