翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 }}'
.
こういった誤解釈エラーを回避するには、以下の例に示すように、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