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

こういった誤解釈エラーを回避するには、以下の例に示すように、CloudFormation 動的パラメータをエスケープします。

この例は、AWS CloudFormation ユーザーガイドから抜粋したものです。AWS Secrets Manager secret-name と json-key セグメントは、secret に格納されているサインイン認証情報の取得に使用できます。

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 の動的パラメータをエスケープする方法には 2 とおりがあります。

  • ブロックを {% 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」(Jinja エスケープ処理) を参照してください。