CDK - Apps & Stacks
Apps
App Lifecycle
다음 그림은 cdk deploy를 호출할 때 aws CDK가 거치는 단계를 보여줍니다.
이 명령은 앱이 정의한 리소스를 배포합니다.
AWS CDK app은 다음의 단계들을 진행합니다.
- Construction ( or Initialization )
- 모든 구문을 인스탄스화 한다음 서로 연결합니다. 대부분의 앱 코드는 이 단계에서 실행됩니다.
- Preparation
- prepare 메소드를 구현한 모든 구성은 최종 상태를 설정하기 위해 이단계가 자동으로 동작합니다.
- prepare 후크를 사용하는 경우는 매우 드물며, 권장되지 않습니다.
- 작업 순서가 동작에 영향을 줄수 있으므로 매우 주의해야 합니다.
- Validation
- validate 메소드를 구현한 모든 구성은 올바르게 deploy될 상태에 있는지 확인하기 위해 검증할 수 있습니다.
- 이 단계에서 발생하는 유효성 검사 실패에 대한 알림을 받습니다.
- 일반적으로 가능한 빨리 ( 입력을 받는 즉시 ) 유효성 검사를 수행하고 가능한 빨리 예외를 throw하는 것이 좋습니다.
- 유효성 검사를 일찍 수행하면 진단 기능이 향상되고 스택 추적이 정확해져 코드를 계속 안전하게 실행할 수 있습니다.
- Synthesis
- aws CDK App 실행의 마지막 단계입니다.
- app.synth() 에 대한 호출에 의해 트리거 되며, 모든 구성에 대해 synthesis 메소드를 호출합니다.
- synthesis 메소드를 구현한 구성은 synthesis에 참여하고 그 결과물인 클라우드 어셈블리에 deployment artifacts를 생성할 수 있습니다.
- 이러한 구성들에는 aws cloudformation template, aws lambda application bundles, file 과 docker image assets 와 deployment artifacts 가 포함됩니다.
- 클라우드 어셈블리는 이 단계의 결과를 설명합니다.
- 대부분의 경우 synthsis 메소드를 구현할 필요가 없습니다.
- Deployment
- AWS CDK CLI는 synthesis 단계에서 생성된 deployment artifacts cloud assembly 를 가져와 aws 환경에 배포 합니다.
deployment 단계를 시작전에 AWS CDK app 은 이미 종료된 상태입니다.
이것은 다음과 같은 의미를 갖습니다.
AWS CDK app 은 실행될 때 알수 없는 값으로 작동해야 할 수도 있습니다.
예를 들어 AWS CDK 앱이 자동으로 이름을 생성하는 S3 버킷을 정의하고, bucket.buckName 속성으로 검색하는 경우 배포된 버킷의 이름이 아닙니다.
대신에 토큰 값을 얻습니다. 특정 값을 사용할 수 있는지 확인하려면 cdk.isTokeon(value) 를 호출해야 합니다.
The App Construct
아례는 사용 예제들 입니다.
Cloud Assemblies
app.synth() 를 호출시에 CDK 는 app에서 클라우드 어셈블리를 만들도록 합니다.
클라우드 환경에 앱을 배포하는데 필요한 모든것을 포함하는 파일입니다.
예를 들어, aws cloudformation template, app 에서 참조하는 file assets 또는 docker 이미지의 사본이 포함됩니다.
AWS CDK app 으로 만든 cloud Assembly와 상호 작용하려면 일반적으로 AWS CDK CLI 를 사용해야 합니다.
그러나 클라우드 어셈블리 형식을 읽을수 있는 도구를 사용해야 앱을 배포할 수도 있습니다.
CDK CLI와 함께 사용하려면 AWS CDK app 이 어떻게 실행해야하는지 알려주어야 합니다.
cdk.json 파일을 만들어 정보를 추가하면 cdk cdk-command 만 실행시키면 됩니다.
예를 들어 javascript 응용 프로그램인 경우 cdk.json 파일은 다음과 같을 수 있습니다.
여기서 bin/my-app.js는 node.js 프로그래밍을 실행합니다.
cdk init 명령을 사용하여 지정된 프로그래밍 언어에 대한 올바른 구성을 포함하는 cdk.json파일과 함께 언어별 프로젝트를 작성하세요.
CLI는 이미 synthesized cloud assembly 와 직접 상호 작용할수도 있습니다.
이를 위해서는 cloud assembly가 저장되어 있는 디렉토리를 --app에 전달하면 됩니다.
다음예는 ./my-cloud-assembly에 저장된 클라우드 어셈블리에 정의된 스택을 나열합니다.
Stacks
Stack
배포 단위를 stack 이라고 합니다.
cdk 의 stack 은 cloudformation 의 stack을 통해 구현되므로 동일한 제한 사항이 있습니다.
여러개의 stack 을 cdk app 내에서 정의할 수 있습니다.
다음 예제는 cdk app 에 2개의 stack 이 있는 예제입니다.
cdk ls 명령어를 통해 아래와 같이 stack list를 확인할 수 있습니다.
cdk synth 명령을 수행하면 클라우드 어셈블리에 각 스택의 별도의 template 이 포함됩니다.
각각의 스택을 지정하여 template 을 만들수도 있습니다.
Stack group
stack 도 그룹으로 구성할 수가 있습니다.
다음 예제는 세가지 스택으로 구성된 서비스의 예를 보여줍니다.
서비스 구조는 배타환경과 프로덕션 환경에 대해 두번 정의됩니다.
이 aws cdk app 은 각 환경당 3개의 stack 으로 구성됩니다.
기본적으로 스택 이름은 stack 생성자 id 에서 파생되지만 다음과 같이 stackName prop 를 사용하여 명시적인 이름을 지정할 수 있습니다.
Stack API
API 문서 링크 : https://docs.aws.amazon.com/cdk/api/latest/typescript/api/core/stack.html
댓글
댓글 쓰기