Solução de problemas do AWS Proton - AWS Proton

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas do AWS Proton

Saiba como solucionar problemas com o AWS Proton.

Erros de implantação que fazem referência a parâmetros dinâmicos do AWS CloudFormation

Se você ver erros de implantação que fazem referência às variáveis dinâmicas do CloudFormation, verifique se elas são de escape do Jinja. Esses erros podem ser causados pela interpretação incorreta do Jinja de suas variáveis dinâmicas. A sintaxe do parâmetro dinâmico do CloudFormation é muito semelhante à sintaxe do Jinja que você usa com seus parâmetros do AWS Proton.

Exemplo de sintaxe de variável dinâmica do CloudFormation:

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

Exemplo de sintaxe do parâmetro Jinja do AWS Proton:

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

Para evitar esses erros de interpretação errônea, o Jinja escapa dos parâmetros dinâmicos do CloudFormation, conforme mostrado nos exemplos a seguir.

Este exemplo é do Guia do usuário do AWS CloudFormation. Os segmentos secret-name e json-key do AWS Secrets Manager podem ser usados para recuperar as credenciais de login armazenadas no segredo.

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

Para escapar dos parâmetros dinâmicos do CloudFormation, você pode usar dois métodos diferentes:

  • Coloque um bloco 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 %}'
  • Coloque um parâmetro 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}}' }}"

Para obter informações, consulte Escape do Jinja.