CDK - Constructs
AWS Construct Library
AWS CDK 는 AWS Construct LIbrary를 포함합니다.
AWS Construct LIbrary 는 AWS의 이용가능한 리소스의 구성을 포함합니다.
- Low-level construct
- cloudformation의 리소스를 표현합니다.
- Cfn prefix 로 이름이 명시되며, 해당 리소스를 사용할때에는 리소스의 모든 properties를 정확히 설정해야 합니다.
- example : s3.CfnBucket
- High-level construct
- CFN construct 와 동일한 기능을 제공하지만, details, boilerplate 그리고 glue logic 을 처리합니다.
- 즉, 편리한 기본값을 제공하고, AWS 리소스에 대한 모든 세부 정보를 알아야 할 필요성을 줄입니다.
- 이를 통해 리소스를 보다 쉽게 사용할 수 있는 편리한 방법을 제공하는 것입니다.
- example : s3.Bucket 으로 사용하며, 추가적인 속성이나 메서드를 bucket.addLifeCycleRule() 과 같이 제공해줍니다.
- pattern construct
- 여러 리소스를 포함하는 일반적인 작업을 생성할 수 있습니다.
- example : aws-ecs-patterns.ApplicationLoadBalancedFargateService
- example : aws-apigateway.LambdaRestApi
Composition
AWS CDK 에서 구성 트리의 루트 구조는 CDK App입니다.
이 App 안에 하나 또는 여러개의 stacks 로 구성되며, stacks 은 배포의 단위 입니다.
stack 안에 resources 들을 정의하거나 resource를 포함한 다른 constructs으로 구성합니다.
resource를 포함한 다른 constructs이란 재사용성 가능한 콤포넌트를 만들수 있음을 의미 합니다.
Initialization
Constructs 는 Constructs 베이스 클라스를 확장하여 구현됩니다.
모든 constructs 는 초기화 할때 세가지 매개변수를 사용합니다.
- scope : 이 constructs를 정의한 constructs 를 나타내며, 필수 항목입니다.
- id : scope 내에서 고유한 식별자가 되어야 합니다. 이 식별자는 scope의 하위 트리 내에서 리소스 네임과 cloudformation logical IDs 할당하는데 사용됩니다.
- props : 초기 구성을 정의하는 속성 입니다. 대부분의 경우 적절한 기본값을 제공하며 모든 props 요소가 선택적인 경우 props 매개변수를 생략할 수도 있습니다.
Interacting with Constructs
Constructs 들은 Construct 베이스 클래스를 확장한 클래스들 입니다.
인스탄스화 한후에 시스템의 다른 부분에 대한 참조로 전달할 수 있는 메소드 및 프로퍼티를 노출 합니다.
예를 들어 거의 모든 aws constructs 들은 해당 주체에 iam 권한을 할당하는 grant 메소드를 가지고 있습니다.
아래 예제와 같이 read 권한을 iam 그룹에 제공할수도 있습니다.
다른 패턴으로는 다른 곳에서 제공한 ARN, name 또는 url 과 같은 리소스 속성 중 하나를 설정하는 것입니다.
아래는 예제입니다.

댓글
댓글 쓰기