Résolution des problèmes AWS Proton - AWS Proton

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes AWS Proton

Apprenez à résoudre les problèmes liés à AWS Proton.

Erreurs de déploiement faisant référence à des paramètres AWS CloudFormation dynamiques

Si des erreurs de déploiement font référence à vos variables CloudFormation dynamiques, vérifiez qu'elles ont échappé à Jinja. Ces erreurs peuvent être causées par une mauvaise interprétation de vos variables dynamiques par Jinja. La syntaxe des paramètres CloudFormation dynamiques est très similaire à la syntaxe Jinja que vous utilisez avec vos AWS Proton paramètres.

Exemple de syntaxe de variable CloudFormation dynamique :

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

Exemple de AWS Proton syntaxe Jinja pour les paramètres :

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

Pour éviter ces erreurs d'interprétation, Jinja échappe à vos paramètres CloudFormation dynamiques, comme indiqué dans les exemples suivants.

Cet exemple est tiré du guide de AWS CloudFormation l'utilisateur. Les segments AWS Secrets Manager secret-name et json-key peuvent être utilisés pour récupérer les informations de connexion stockées dans le 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}}'

Pour échapper aux paramètres CloudFormation dynamiques, vous pouvez utiliser deux méthodes différentes :

  • Placez un bloc entre {% 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 %}'
  • Placez un paramètre entre "{{ }}" :

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

Pour plus d'informations, voir Jinja escaping.