모범 사례
L1 구문
-
항상 L1 구문의 직접 사용을 피할 수는 없지만 가능하면 사용하지 않아야 합니다. 특정 L2 구문이 엣지 사례를 지원하지 않는 경우 L1 구문을 직접 사용하는 대신이 다음과 같은 두 옵션을 탐색할 수 있습니다.
-
defaultChild에 액세스: 필요한 CloudFormation 속성을 L2 구문에서 사용할 수 없는 경우L2Construct.node.defaultChild를 사용하여 기본 L1 구문에 액세스할 수 있습니다. L1 구문을 직접 생성하는 대신 이 속성을 통해 액세스하여 L1 구문의 퍼블릭 속성을 업데이트할 수 있습니다. -
속성 재정의 사용: 업데이트하려는 속성이 퍼블릭이 아니면 어떻게 해야 하나요? AWS CDK에서 CloudFormation 템플릿에서 가능한 모든 작업을 수행할 수 있는 최종 이스케이프 해치는 모든 L1 구문에서 사용할 수 있는 메서드인 addPropertyOverride를 사용하는 것입니다. CloudFormation 속성 이름과 값을 이 메서드에 직접 전달하여 CloudFormation 템플릿 수준에서 스택을 조작할 수 있습니다.
-
L2 구문
-
L2 구문이 자주 제공하는 헬퍼 메서드를 활용해야 합니다. 계층 2에서 인스턴스화할 때 모든 속성을 전달할 필요가 없습니다. L2 헬퍼 메서드를 사용하면 특히 조건부 로직이 필요한 경우 리소스를 굉장히 편리하게 프로비저할 수 있습니다. 가장 편리한 헬퍼 메서드 중 하나는 Grant 클래스에서 파생됩니다. 이 클래스는 직접 사용되지 않지만 많은 L2 구문이 이를 사용하여 권한을 훨씬 더 쉽게 구현할 수 있는 헬퍼 메서드를 제공합니다. 예를 들어 L2 Lambda 함수에 L2 S3 버킷에 액세스할 권한을 부여하려면 새 역할 및 정책을 생성하는 대신
s3Bucket.grantReadWrite(lambdaFunction)를 직접 호출할 수 있습니다.
L3 구문
-
L3 구문은 스택의 재사용 및 사용자 지정 기능을 더 강화하려는 경우에 매우 편리할 수 있지만 신중하게 사용하는 것이 좋습니다. 어떤 유형의 L3 구문이 필요한지 또는 L3 구문이 필요한지를 고려합니다.
-
AWS 리소스와 직접 상호 작용하지 않는 경우
Construct클래스를 확장하는 대신 헬퍼 클래스를 만드는 것이 더 적절한 경우가 많습니다.Construct클래스가 기본적으로 AWS 리소스와 직접 상호 작용하는 경우에만 필요한 많은 작업을 수행하기 때문입니다. 따라서 이러한 작업을 수행할 필요가 없는 경우 이러한 작업을 피하는 것이 더 효율적입니다. -
새 L3 구문을 생성하는 것이 적합하다고 판단되면 대부분의 경우
Construct클래스를 직접 확장하려고 합니다. 구문의 기본 속성을 업데이트하려는 경우에만 다른 L2 구문을 확장합니다. 다른 L2 구문 또는 사용자 지정 로직이 관련된 경우Construct를 직접 확장하고 생성자 내의모든 리소스를 인스턴스화합니다.
-