문제 해결 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 secret-name 및 json-key 세그먼트를 사용하여 보안 암호에 저장된 로그인 자격 증명을 검색할 수 있습니다.

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 이스케이프 참조하세요.