

CDK AWS v2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS CDK 참조
<a name="reference"></a>

이 섹션에는 AWS Cloud Development Kit(AWS CDK)에 대한 참조 정보가 있습니다.

## API 참조
<a name="reference-api"></a>

[API 참조](https://docs.aws.amazon.com/cdk/api/v2)에는 AWS Construct Library와 AWS Cloud Development Kit(AWS CDK)에서 제공하는 기타 API에 대한 정보가 들어 있습니다. 대부분의 AWS Construct Library는 TypeScript 이름으로 불리는 단일 패키지(`aws-cdk-lib`)에 포함되어 있습니다. 실제 패키지 이름은 언어에 따라 다릅니다. 지원되는 각 프로그래밍 언어에 대해 별도 버전의 API 참조가 제공됩니다.

CDK API 참조는 하위 모듈로 구성됩니다. 각 AWS 서비스에는 하나 이상의 하위 모듈이 있습니다.

각 하위 모듈에는 해당 API를 사용하는 방법에 대한 정보가 포함된 개요가 있습니다. 예를 들어 [S3](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3-readme.html) 개요에서는 Amazon Simple Storage Service(Amazon S3) 버킷에서 기본 암호화를 설정하는 방법을 보여줍니다.

# AWS CDK 버전 관리
<a name="versioning"></a>

이 주제에서는 AWS 클라우드 개발 키트(AWS CDK)가 버전 관리를 처리하는 방법에 대한 참조 정보를 제공합니다.

버전 번호는 *major*.*minor*.*patch*의 세 가지 숫자 버전 부분으로 구성되며, [AWS Construct Library 시맨틱 버전 관리 설명](https://docs.aws.amazon.com/cdk/v2/guide/versioning.html#aws-construct-lib-semver)에 설명된 몇 가지 주의 사항과 함께 [시맨틱 버전 관리](https://semver.org) 원칙을 광범위하게 따릅니다. 즉, 안정적이라고 여기는 API에 대한 변경 사항이 주요 릴리스로 제한됩니다.

마이너 및 패치 릴리스는 이전 버전과 호환됩니다. 동일한 메이저 버전의 이전 버전에 작성된 코드는 동일한 메이저 버전 내의 최신 버전으로 업그레이드할 수 있습니다. 계속해서 빌드 및 실행되므로 기능적으로 동등한 결과를 얻을 수 있습니다. 일부 고급 사용 사례의 경우 다음 주제에 설명된 대로 코드를 약간 변경해야 합니다.

## AWS CDK Toolkit 호환성
<a name="cdk-toolkit-versioning"></a>

기본 AWS Construct Library(`aws-cdk-lib`)의 각 버전은 AWS Construct Library 릴리스 당시의 AWS CDK Toolkit CLI(`aws-cdk-cli`) 및 Toolkit Library(`@aws-cdk/toolkit-lib`) 버전과 호환됩니다. 또한 AWS CDK Toolkit의 최신 버전과도 호환됩니다. AWS Construct Library의 각 버전은 라이브러리의 *수명 종료* 날짜까지이 호환성을 유지합니다. 따라서 지원되는 AWS Construct Library 버전을 사용하는 한 AWS CDK Toolkit 버전을 업그레이드하는 것이 항상 안전합니다.

각 버전의 AWS Construct Library는 AWS Construct Library 릴리스 당시 최신 버전보다 오래된 AWS CDK Toolkit 버전에서도 작동할 수 있습니다. 하지만 이는 보장되지 않습니다. 호환성은 AWS Construct Library의 클라우드 어셈블리 스키마 버전에 따라 다릅니다. AWS CDK는 합성 중에 클라우드 어셈블리를 생성하고 AWS CDK Toolkit은 이를 배포에 사용합니다. 클라우드 어셈블리의 형식을 정의하는 스키마는 엄격하게 지정되고 버전이 지정됩니다. 따라서 이전 버전의 AWS CDK Toolkit은 호환되려면 AWS Construct Library의 클라우드 어셈블리 스키마 버전을 지원해야 합니다.

 AWS Construct Library에 필요한 클라우드 어셈블리 버전이 AWS CDK Toolkit에서 지원하는 버전과 호환되지 않는 경우 다음과 같은 오류 메시지가 표시됩니다.

```
Cloud assembly schema version mismatch: Maximum schema version supported is 3.0.0, but found 4.0.0.
    Please upgrade your CLI in order to interact with this app.
```

이 오류를 해결하려면 AWS CDK Toolkit을 필요한 클라우드 어셈블리 버전과 호환되는 버전 또는 사용 가능한 최신 버전으로 업데이트합니다. 대체(앱에서 사용하는 AWS Construct Library 모듈 다운그레이드)는 일반적으로 권장되지 않습니다.

**참고**  
함께 작동하는 정확한 버전 조합에 대한 자세한 내용은 *aws-cdk-cli GitHub 리포지토리*의 [호환성 표](https://github.com/aws/aws-cdk-cli/blob/main/COMPATIBILITY.md)를 참조하세요.

## AWS Construct Library 버전 관리
<a name="aws-construct-lib-stability"></a>

 AWS Construct Library의 모듈은 개념에서 성숙한 API로 개발될 때 다양한 단계를 거칩니다. 단계마다 AWS CDK의 후속 버전에서 다양한 수준의 API 안정성을 제공합니다.

다음 주제에 설명된 주의 사항이 적용되는 시나리오를 제외하고 기본 AWS 구문 라이브러리(`aws-cdk-lib`)의 APIs는 안정적이며 라이브러리는 시맨틱 버전 관리 원칙을 광범위하게 따릅니다. 라이브러리에는 모든 AWS 서비스에 대한 AWS CloudFormation(L1) 구문이 포함되어 있습니다.이 구문은 [CloudFormation 리소스 공급자 스키마](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/resource-type-schemas.html)에서 자동으로 생성되며 때로는 이전 버전과 호환되지 않는 업데이트가 포함될 수 있습니다. 또한 상위 수준(L2 및 L3) 구문과, `App` 및 `Stack`과 같은 핵심 CDK 클래스가 모두 안정적입니다. API는 CDK의 다음 주요 릴리스까지 이 패키지에서 제거되지 않습니다(사용이 중단될 수 있음). 안정적인 API에 중단 변경이 필요한 경우 완전히 새로운 API가 추가됩니다.

`aws-cdk-lib`에 이미 통합된 서비스에 대해 개발 중인 새로운 API는 `Beta<N>` 접미사를 사용하여 식별됩니다. 여기서 `N`은 1에서 시작하여 새로운 API에 대한 각각의 중요한 변경 사항마다 증가합니다. `Beta<N>` API는 제거되지 않고 더 이상 사용되지 않으므로 기존 앱은 최신 버전의 `aws-cdk-lib`에서 계속 작동합니다. API가 안정적인 것으로 간주되면 `Beta<N>` 접미사가 없는 새 API가 추가됩니다.

이전에는 L1 API만 있었던 서비스에 대해 상위 수준(L2 또는 L3) APIs가 개발되기 시작하면 해당 APIs는 처음에 별도의 패키지로 배포됩니다. APIs AWS L1 이러한 패키지의 이름에는 ‘Alpha’ 접미사가 붙고, 해당 버전은 호환되는 `aws-cdk-lib`의 첫 번째 버전과 일치하며 `alpha` 하위 버전이 있습니다. 모듈이 의도한 사용 사례를 지원하면 해당 API가 `aws-cdk-lib`에 추가됩니다.

## AWS Construct Library 의미 체계 버전 관리 설명
<a name="aws-construct-lib-semver"></a>

 AWS Construct Library는 의미 체계 버전 관리 원칙을 광범위하게 따르지만 구현과 관련된 몇 가지 중요한 주의 사항이 있습니다. 일반적으로 AWS Construct Library는 API 소비자의 안정성을 유지하지만 프레임워크의 필요한 발전을 가능하게 하는 작성자를 구성하는 데 추가 부담이 되는 경우가 있습니다.
+  **변경 사항에 영향을 미치는 보안** 

  보안 기준을 충족하기 위해 이전 버전과 호환되지 않는 방식으로 API를 변경하거나 완전히 제거해야 할 수 있습니다. 이렇게 하면 영향을 받는 API는 사용되지 않고 구현이 강제로 업데이트됩니다.
+  **기능은 의도에 따라 설명됩니다** 

  예상치 못한 변경을 최소화하는 것을 목표로 하지만 *구현 안정성보다 의도*를 선호합니다. AWS Construct Library는 구문이 항상 정확히 동일한 CloudFormation 템플릿으로 합성되거나 정확히 동일한 리소스 세트를 사용하는 것을 보장하지 않습니다. 이는 특히 다양한 방식으로 동일한 목표를 달성할 수 있는 상위 수준 구문에 적용됩니다.
+  **인터페이스 및 추상 클래스 구현** 

   AWS Construct Library의 인터페이스 및 추상 클래스는 **소비자에게**는 안정적이지만 **구현자에게**는 안정적이지 않습니다. 즉,와 같은 인터페이스에 안전하게 의존`s3.IBucket`하여 인터페이스 또는 추상 클래스를 사용하기 시작한 시점(AWS Construct Library 버전)과 동일한 기능을 제공할 수 있습니다. 그러나 주기적으로 새(추상화) 멤버가 인터페이스 및 추상 클래스에 추가됩니다. 이를 **구현하는** 모든 사용자에게는 아직 새 멤버를 구현하지 않으므로 업그레이드할 때 고려해야 할 추가 구현 부담이 발생합니다. 구현자의 인터페이스 및 추상 클래스에 대한 추가를 주요 변경 사항으로 엄격하게 처리하면 AWS Construct Library의 진행 가능성이 지나치게 제한됩니다. 대부분의 경우 구현자는 `s3.Bucket`와 같은 구체적인 클래스를 확장하는 것을 선호해야 합니다.
+  **외부로 표시된 L1 구문, 생성된 코드 및 기타 API** 

   AWS Construct Library의 일부는 AWS 서비스에서 직접 오는 데이터 소스에서 생성됩니다. 이러한 API는 현실에 맞게 유지하기 위해 생성된 코드에는 이전 버전과 호환되지 않는 변경 사항이 포함될 수 있습니다. 대부분의 경우 데이터 소스는 현실을 올바르게 반영하고 잘못된 표현을 수정하도록 업데이트됩니다. *IDE의 IntelliSense는 `@stability — external` 주석과 함께 외부 API를 표시합니다.*
+  **의미상 올바른 프로그램만** 

  올바른 프로그램은 최신 버전에서 계속 작동합니다. 공식적으로 올바르지 않지만 구현 세부 정보로 인해 작동하는 프로그램은 다루지 않습니다. 예를 들어 프로그램이 예상치 못한 객체 유형을 전달하기 위해 [TypeScript의 구조적 입력 규칙에](https://www.typescriptlang.org/docs/handbook/type-compatibility.html) 의존하거나 성공적으로 합성되지만 배포에 실패한 CloudFormation 템플릿을 생성하는 경우 변경 사항을 고려하지 않고 이러한 프로그램이 실패할 수 있습니다.
+  **특정 언어 바인딩** 

  언어 바인딩에는 매우 제한된 수의 상황에서 이전 버전과 호환되지 않는 변경 사항이 포함될 수 있습니다. 이는 지원되는 다른 언어에서는 이전 버전과 호환되는 업스트림 유형 변경으로 인해 발생합니다. 다른 방법으로는 라이브러리의 변동성이 심각하게 제한되므로 이러한 유형 변경이 허용됩니다.

  다음 목록은 알려진 모든 인스턴스를 설명합니다.
  +  **Golang - 유형이 지정된 조각에서 임의의 조각으로 변경: ** 단일 유형의 목록이 여러 유형의 목록(TypeScript의 통합 유형)으로 변경됩니다. `Go`에서는 임의(`*[]any`)의 조각으로 유형이 지정됩니다. Go의 유형 지정 할당 규칙으로 인해 `*[]string `에서 ``로 변경하는 것은 자동 변환이 아닙니다. 따라서 이 유형을 확장하려면 소비자 코드를 변경해야 합니다. 전략은 [임의 조각 작업](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-go.html#go-cdk-idioms)을 참조하세요.

## 언어 바인딩 안정성
<a name="aws-construct-lib-versioning-binding"></a>

시간이 지남에 따라 추가 프로그래밍 언어에 대한 지원을 AWS CDK에 추가할 수 있습니다. 모든 언어로 설명된 API는 동일하지만 API 표현 방식은 언어에 따라 다르며 언어 지원이 발전함에 따라 변경될 수 있습니다. 이러한 이유로 언어 바인딩은 프로덕션 준비가 된 것으로 간주될 때까지 한동안 실험적인 것으로 간주됩니다.


| 언어 | 안정성 | 
| --- | --- | 
|  TypeScript  |  Stable  | 
|  JavaScript  |  Stable  | 
|  Python  |  Stable  | 
|  Java  |  Stable  | 
|  C\$1/.NET  |  Stable  | 
|  Go  |  Stable  | 

# AWS CDK에서 지원되는 Node.js 버전
<a name="node-versions"></a>

AWS Cloud Development Kit(AWS CDK)는 Node.js의 기능에 의존합니다. 여기에는 AWS CDK CLI(`aws-cdk-cli`), AWS Construct Library(`aws-cdk-lib`)와 같은 핵심 CDK 구성 요소와 JSII, Projen 및 CDK8s과 같은 광범위한 도구가 포함됩니다. 이 페이지에서는 지원되는 개발 환경을 유지하는 데 도움이 되도록 AWS CDK와 호환되는 Node.js 런타임 버전을 문서화합니다.

AWS CDK는 적극적으로 지원되는 Node.js 장기 지원(LTS) 버전과의 호환성을 유지하는 것을 목표로 합니다. Node.js 버전이 지원 종료되면 AWS CDK는 보안, 성능 및 최신 기능에 대한 액세스를 보장하기 위해 이러한 버전에 대한 지원도 단계적으로 중단합니다.

지원되는 Node.js 버전에서 CDK 구성 요소와 도구를 유지하면 보안 업데이트, 버그 수정, 최신 CDK 기능 및 개선 사항에 대한 액세스를 받을 수 있습니다.

## Node.js 버전 지원 타임라인
<a name="node-version-timeline"></a>

AWS CDK는 공식 지원 종료(EOL) 날짜 이후의 Node.js 버전을 지원하여 환경을 업그레이드할 시간을 제공합니다. 이 지원은 6개월 동안 연장됩니다(예: Node.js 버전이 4월에 지원 종료(EOL)되면 지원은 10월까지 계속됨). 아래 버전 지원 타임라인 표에는 결정된 특정 CDK 지원 종료일이 나와 있습니다. 이 접근 방식은 CDK 기능 및 업데이트에 대한 액세스를 유지하면서 버전 업그레이드를 계획하고 구현할 수 있는 정의된 기간을 제공합니다.


| Node.js 버전 | 노드 EOL 날짜 | CDK 지원 상태 | 
| --- | --- | --- | 
|  22..x  |  2027-04-30  |  2027년 10월까지 지원이 예상됩니다.  | 
|  20..x  |  2026년 4월 30일  |  2026년 10월까지 지원이 예상됩니다.  | 
|  18.x  |  2025-05-30  |  지원은 2025년 11월 30일에 종료됩니다.  | 
|  16.x  |  2023-09-11  |  지원은 2025년 5월 30일에 종료됩니다.  | 
|  14.x  |  2023-04-30  |  지원은 2025년 5월 30일에 종료됩니다.  | 

# AWS CDK 동영상 리소스
<a name="videos"></a>

AWS CDK 팀원이 제공하는 동영상을 재미있게 보시기 바랍니다.

**참고**  
AWS CDK는 항상 진화하기 때문에 이러한 동영상에 표시된 코드 중 일부는 동영상을 녹화할 때와 같은 방식으로 작동하지 않을 수 있습니다. 이는 특히 당시 활성 개발 중인 모듈에 적용됩니다. 또한 이후 동일한 결과를 얻는 더 나은 방법을 추가했을 수도 있습니다. 최신 정보는 이 개발자 안내서와 [AWS CDK API 참조](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)를 확인하세요.

## Infrastructure *is* Code with the AWS CDK
<a name="videos-infrastructure-is-code"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/ZWCvNFUN-sU?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/ZWCvNFUN-sU?rel=0)


## AWS Cloud Development Kit(AWS CDK)에 대한 심층 분석
<a name="videos-deep-dive"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/9As_ZIjUGmY?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/9As_ZIjUGmY?rel=0)


## Contributing to the AWS Construct Library
<a name="videos-contributing"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LsYlf7ggyrY?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LsYlf7ggyrY?rel=0)


## Faster deployments with CDK Pipelines
<a name="videos-pipelines"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/1ps0Wh19MHQ?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/1ps0Wh19MHQ?rel=0)


## GitPod을 사용하여 AWS CDK에 기여하는 방법
<a name="videos-gitpod"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/u6XcIgs-Nok?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/u6XcIgs-Nok?rel=0)
