v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원을 종료했습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Cloud Development Kit (AWS CDK) 배포는 인프라를 프로비저닝하는 프로세스입니다 AWS.
AWS CDK 배포 작동 방식
는 AWS CloudFormation 서비스를 AWS CDK 활용하여 배포를 수행합니다. 배포하기 전에 CDK 스택을 합성합니다. 이렇게 하면 앱의 각 CDK 스택에 대한 CloudFormation 템플릿 및 배포 아티팩트가 생성됩니다. 배포는 로컬 개발 시스템 또는 지속적 통합 및 지속적 전송(CI/CD) 환경에서 시작됩니다. 배포 중에 자산이 부트스트랩된 리소스에 업로드되고 CloudFormation 템플릿을 CloudFormation 에 제출하여 AWS 리소스를 프로비저닝합니다.
배포가 성공하려면 다음이 필요합니다.
-
AWS CDK 명령줄 인터페이스(AWS CDK CLI)에는 유효한 권한이 제공되어야 합니다.
-
AWS 환경을 부트스트랩해야 합니다.
-
는 자산을 업로드할 부트스트랩된 리소스를 알아야 AWS CDK 합니다.
CDK 배포를 위한 사전 조건
AWS CDK 애플리케이션을 배포하려면 먼저 다음을 완료해야 합니다.
-
에 대한 보안 자격 증명 구성 CDK CLI.
-
AWS 환경을 부트스트랩합니다.
-
각 CDK 스택에 대한 AWS 환경을 구성합니다.
-
CDK 앱을 개발합니다.
보안 자격 증명 구성
CDK를 사용하려면,CLI 와 상호 작용하려면 로컬 시스템에서 보안 자격 증명을 구성 AWS해야 합니다. 지침은 AWS CDKCLI에 대한 보안 자격 증명 구성 단원을 참조하십시오.
AWS 환경 부트스트랩
배포는 항상 하나 이상의 AWS 환경과 연결됩니다. 배포하려면 먼저 환경을 부트스트래핑해야 합니다. 부트스트래핑은가 배포를 수행하고 관리하는 데 CDK 사용하는 리소스를 환경에 프로비저닝합니다. 이러한 리소스에는 자산을 저장하고 관리하기 위한 Amazon Simple Storage Service(Amazon S3) 버킷과 Amazon Elastic Container Registry(AmazonECR) 리포지토리가 포함됩니다. 이러한 리소스에는 개발 및 배포 중에 권한을 제공하는 데 사용되는 AWS Identity and Access Management (IAM) 역할도 포함됩니다.
AWS CDK 명령줄 인터페이스(AWS CDK CLI) cdk bootstrap
명령을 사용하여 환경을 부트스트랩합니다. 필요한 경우 부트스트래핑을 사용자 지정하거나 환경에서 이러한 리소스를 수동으로 생성할 수 있습니다. 지침은 와 함께 사용할 환경 부트스트랩 AWS CDK 단원을 참조하십시오.
AWS 환경 구성
CDK 스택이 배포되는 위치를 확인하려면 각 스택을 환경과 연결해야 합니다. 지침은 AWS CDK와 함께 사용할 환경 구성 단원을 참조하십시오.
CDK 앱 개발
CDK 프로젝트 내에서 CDK 앱을 생성하고 개발합니다. 앱 내에서 스택CDK을 하나 이상 생성합니다. 스택 내에서 AWS Construct Library에서 구문을 가져오고 사용하여 인프라를 정의합니다. 앱을 배포하려면 CDK 먼저 앱에 스택이 하나 이상 포함되어야 합니다.
CDK 앱 합성
합성을 수행하려면 CDK CLI cdk synth
명령. 또한 cdk
deploy
명령은 배포를 시작하기 전에 합성을 수행합니다. 그러나를 사용하면 배포를 시작하기 전에 CDK 앱을 검증하고 오류를 포착cdk synth
할 수 있습니다.
합성 동작은 스택에 대해 구성한 스택 신디사이저에 의해 결정됩니다. CDK 신디사이저를 구성하지 않으면 DefaultStackSynthesizer
가 사용됩니다. 필요에 맞게 합성을 구성하고 사용자 지정할 수도 있습니다. 지침은 CDK 스택 합성 구성 및 수행 단원을 참조하십시오.
합성된 CloudFormation 템플릿이 환경에 성공적으로 배포되려면 환경 부트스트랩 방식과 호환되어야 합니다. 예를 들어 CloudFormation 템플릿은 자산을 배포할 올바른 Amazon S3 버킷을 지정해야 합니다. 환경을 부트스트래핑하는 기본 방법을 사용하는 경우 기본 스택 신디사이저가 작동합니다. 부트스트래핑 또는 합성 사용자 지정과 같은 CDK 동작을 사용자 지정하는 경우 CDK 배포 동작이 다를 수 있습니다.
앱 수명 주기
합성을 수행하면 CDK 앱 수명 주기라고 하는 다음 단계를 통해 앱이 실행됩니다.
- 구성 또는 초기화
-
코드는 정의된 모든 구문을 인스턴스화한 다음 서로 연결합니다. 이 스테이지에서는 모든 구문(앱, 스택 및 자식 구문)이 인스턴스화되고 생성자 체인이 실행됩니다. 대부분의 앱 코드가 이 스테이지에서 실행됩니다.
- 준비
-
prepare
메서드를 구현한 모든 구문이 최종 수정 라운드에 참여하여 최종 상태를 설정합니다. 준비 단계는 자동으로 수행됩니다. 사용자는 이 단계의 피드백을 볼 수 없습니다. ‘준비’ 후크를 사용해야 하는 경우는 드물며 일반적으로 권장되지 않습니다. 작업 순서가 동작에 영향을 미칠 수 있으므로 이 단계에서 구문 트리를 변형할 때는 매우 주의해야 합니다.이 단계에서는 구문 트리가 빌드되면 구성한 모든 측면도 적용됩니다.
- 검증
-
validate
메서드를 구현한 모든 구문은 올바르게 배포될 수 있는 상태인지 확인하기 위해 자체적으로 검증할 수 있습니다. 이 단계에서 검증에 실패하면 알림을 받게 됩니다. 일반적으로 가능한 한 빨리(보통 입력을 받는 즉시) 검증을 수행하고 최대한 빨리 예외를 발생시키는 것이 좋습니다. 조기에 검증을 수행하면 스택 트레이스가 더 정확해지고 코드가 계속 안전하게 실행될 수 있으므로 신뢰성이 향상됩니다. - 합성
-
앱 실행의 마지막 단계입니다CDK. 이는
app.synth()
에 대한 직접 호출로 트리거되며 구문 트리를 통과하고 모든 구문에 대해synthesize
메서드를 간접적으로 호출합니다.synthesize
를 구현하는 구문은 합성에 참여하고 결과 클라우드 어셈블리에 배포 아티팩트를 생성할 수 있습니다. 이러한 아티팩트에는 CloudFormation 템플릿, AWS Lambda 애플리케이션 번들, 파일 및 Docker 이미지 자산 및 기타 배포 아티팩트. 대부분의 경우synthesize
메서드를 구현할 필요가 없습니다.
앱 실행
CDK은 CLI 는 CDK 앱을 실행하는 방법을 알아야 합니다. cdk init
명령을 사용하여 템플릿에서 프로젝트를 생성한 경우 앱의 cdk.json
파일에 app
키가 포함됩니다. 이 키는 앱이 작성된 언어에 필요한 명령을 지정합니다. 언어에 컴파일이 필요한 경우 명령줄은 앱을 자동으로 실행하기 전에 이 단계를 수행합니다.
{
"app": "npx ts-node --prefer-ts-exts bin/my-app.ts"
}
를 사용하여 프로젝트를 생성하지 않은 경우 CDK CLI또는에 지정된 명령줄을 재정의하려면 cdk
명령을 실행할 때 --app
옵션을 제공할 cdk.json
수 있습니다.
$
cdk --app 'executable
'cdk-command
...
명령의 executable
부분은 CDK 애플리케이션을 실행하기 위해 실행해야 하는 명령을 나타냅니다. 이러한 명령에는 공백이 포함되어 있으므로 표시된 대로 따옴표를 사용합니다. cdk-command
는 synth
또는와 같은 하위 명령deploy
으로 CDK CLI 앱으로 수행할 작업입니다. 해당 하위 명령에 필요한 옵션을 뒤에 추가합니다.
CDK은 CLI 는 이미 합성된 클라우드 어셈블리와 직접 상호 작용할 수도 있습니다. 이를 위해 --app
에 클라우드 어셈블리가 저장되는 디렉터리를 전달합니다. 다음 예에서는 ./my-cloud-assembly
아래에 저장된 클라우드 어셈블리에 정의된 스택을 나열합니다.
$
cdk --app./my-cloud-assembly
ls
클라우드 어셈블리
에 대한 호출app.synth()
은 앱에서 클라우드 어셈블리를 합성 AWS CDK 하도록에 지시합니다. 일반적으로 클라우드 어셈블리와 직접 상호 작용하지 않습니다. 클라우드 어셈블은 클라우드 환경에 앱을 배포하는 데 필요한 모든 것이 포함된 파일입니다. 예를 들어 앱의 각 스택에 대한 AWS CloudFormation 템플릿이 포함됩니다. 또한 파일 자산 또는 Docker 앱에서 참조하는 이미지입니다.
클라우드 어셈블리 형식 지정 방법에 대한 자세한 내용은 클라우드 어셈블리 사양
AWS CDK 앱이 생성하는 클라우드 어셈블리와 상호 작용하려면 일반적으로 AWS CDK CLI. 그러나 클라우드 어셈블리 형식을 읽을 수 있는 모든 도구를 사용하여 앱을 배포할 수 있습니다.
애플리케이션 배포
애플리케이션을 배포하려면 CDK CLI cdk deploy
배포를 시작하거나 자동 배포를 구성하는 명령입니다.
cdk deploy
를 실행하면 CDK CLI 는 cdk synth
를 시작하여 배포를 준비합니다. 다음 다이어그램은 배포의 맥락에서 앱 수명 주기를 보여줍니다.

배포 중에 CDK CLI 는 합성으로 생성된 클라우드 어셈블리를 환경에 AWS 배포합니다. 자산은 Amazon S3 및 Amazon에 업로드ECR되고 배포를 AWS CloudFormation 위해 CloudFormation 템플릿이에 제출됩니다.
AWS CloudFormation 배포 단계가 시작될 때까지 CDK 앱이 이미 실행을 완료하고 종료되었습니다. 이는 다음과 같은 의미를 가집니다.
-
CDK 앱은 리소스 생성 또는 전체 배포 완료와 같이 배포 중에 발생하는 이벤트에 응답할 수 없습니다. 배포 단계에서 코드를 실행하려면 사용자 지정 리소스로 AWS CloudFormation 템플릿에 코드를 주입해야 합니다. 앱에 사용자 지정 리소스를 추가하는 방법에 대한 자세한 내용은 AWS CloudFormation 모듈 또는 사용자 지정 리소스
예를 참조하세요. 배포 중 코드를 실행하도록 트리거 모듈을 구성할 수도 있습니다. -
CDK 앱은 실행 시 알 수 없는 값으로 작동해야 할 수 있습니다. 예를 들어 AWS CDK 앱이 자동으로 생성된 이름으로 Amazon S3 버킷을 정의하고
bucket.bucketName
(Python:bucket_name
) 속성을 검색하는 경우 해당 값은 배포된 버킷의 이름이 아닙니다. 대신Token
값을 가져옵니다. 특정 값을 사용할 수 있는지 확인하려면cdk.isUnresolved(value)
(Python:is_unresolved
)를 직접적으로 호출합니다. 세부 정보는 토큰 및 AWS CDK를 참조하세요.
배포 권한
배포를 수행하려면 먼저 권한을 설정해야 합니다. 다음 다이어그램은 기본 부트스트래핑 프로세스와 스택 신디사이저를 사용할 때 기본 배포 중 사용되는 권한을 보여줍니다.

- 액터가 배포 시작
-
배포는를 사용하여 액터에 의해 시작됩니다. CDK CLI. 액터는 사람 또는와 같은 서비스일 수 있습니다 AWS CodePipeline.
필요한 경우 CDK CLI 를 실행
cdk synth
하면가 실행됩니다cdk deploy
. 합성 중에 AWS 자격 증명은 환경에서 컨텍스트 조회를 수행하기LookupRole
위해를 AWS 수임합니다. - 권한이 설정됨
-
먼저, 액터의 보안 자격 증명은 프로세스의 첫 번째 IAM 자격 증명을 인증 AWS 하고 획득하는 데 사용됩니다. 인적 액터의 경우 보안 자격 증명이 구성되고 획득되는 방법은 사용자나 조직이 사용자를 관리하는 방식에 따라 달라집니다. 자세한 내용은 AWS CDKCLI에 대한 보안 자격 증명 구성 단원을 참조하십시오. 와 같은 서비스 액터 CodePipeline의 경우 IAM 실행 역할이 수임되고 사용됩니다.
다음으로, 부트스트래핑 중에 AWS 사용자 환경에서 생성된 IAM 역할은 배포에 필요한 작업을 수행할 수 있는 권한을 설정하는 데 사용됩니다. 이러한 역할과 해당 역할이 권한을 부여하는 대상에 대한 자세한 내용은 IAM 부트스트래핑 중에 생성된 역할 섹션을 참조하세요. 이 프로세스에는 다음이 포함됩니다.
-
자격 AWS 증명은
DeploymentActionRole
역할을 수임하고CloudFormationExecutionRole
역할을에 전달하여 CloudFormation가 AWS 환경에서 작업을 수행할 때 역할을 수 CloudFormation 임하도록 합니다.는 환경에 배포를 수행할 수 있는 권한을DeploymentActionRole
부여하고 수행할 CloudFormation 수 있는 작업을CloudFormationExecutionRole
결정합니다. -
AWS 자격 증명은 부트스트래핑 중에 생성된 Amazon S3 버킷에서 수행할 수 있는 작업을
FilePublishingRole
결정하는를 가정합니다. -
AWS 자격 증명은 부트스트래핑 중에 생성된 Amazon ECR리포지토리에서 수행할 수 있는 작업을
ImagePublishingRole
결정하는를 가정합니다. -
필요한 경우 자격 AWS 증명은 AWS 환경에서 컨텍스트 조회를 수행하기
LookupRole
위해를 수임합니다. 이 작업은 템플릿 합성 중에도 수행될 수 있습니다.
-
- 배포가 수행됨
-
배포 중에 CDK CLI 는 부트스트랩 버전 파라미터를 읽어 부트스트랩 버전 번호를 확인합니다.는 AWS CloudFormation 배포 시이 파라미터를 읽어 확인합니다. 배포 워크플로 전반의 권한이 유효한 경우 배포가 수행됩니다. 자산은 부트스트랩된 리소스에 업로드되고 합성 시 생성된 CloudFormation 템플릿은 CloudFormation 서비스를 CloudFormation 스택으로 사용하여 배포되어 리소스를 프로비저닝합니다.