故障診斷 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 參數 Jinja 語法:

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

如需詳細資訊,請參閱 Jinja 逸出