In과 함께 AWS CDK 일하기 JavaScript - AWS Cloud Development Kit (AWS CDK) v2

AWS CDK v2 개발자 안내서입니다. 구형 CDK v1은 2022년 6월 1일에 유지 보수에 들어갔고 2023년 6월 1일에 지원이 종료되었습니다.

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

In과 함께 AWS CDK 일하기 JavaScript

JavaScript에서 완전히 지원되는 클라이언트 AWS CDK 언어이며 안정적인 것으로 간주됩니다. in을 AWS Cloud Development Kit (AWS CDK) JavaScript 사용하여 작업하면 Node.js 및 Node Package Manager (npm) 와 같은 친숙한 도구가 사용됩니다. 원하는 경우 Yarn을 사용할 수도 있지만, 이 가이드의 예제에서는 NPM을 사용합니다. AWS 구성 라이브러리를 구성하는 모듈은 NPM 저장소인 npmjs.org를 통해 배포됩니다.

모든 에디터나 IDE를 사용할 수 있습니다. 많은 AWS CDK 개발자가 Visual Studio Code (또는 이에 상응하는 오픈 소스 VScodium) 를 사용하는데, 이 코드는 잘 지원됩니다. JavaScript

JavaScript 시작하기

를 사용하려면 AWS 계정과 자격 증명이 있어야 AWS CDK하며 Node.js 및 툴킷이 설치되어 있어야 합니다. AWS CDK 시작하기 AWS CDK 섹션을 참조하십시오.

JavaScript AWS CDK 응용 프로그램에는 이 외에도 추가 전제 조건이 필요하지 않습니다.

참고

타사 언어 지원 중단: 언어 버전은 공급업체 또는 커뮤니티에서 EOL (End Of Life) 을 공유할 때까지만 지원되며 사전 통지를 통해 변경될 수 있습니다.

프로젝트 생성

cdk init 디렉터리에서 호출하여 새 AWS CDK 프로젝트를 생성합니다. --language옵션을 사용하고 다음을 지정합니다javascript.

mkdir my-project cd my-project cdk init app --language javascript

프로젝트를 생성하면 aws-cdk-lib모듈과 해당 종속 항목도 설치됩니다.

cdk init프로젝트 폴더 이름을 사용하여 클래스, 하위 폴더, 파일 등 프로젝트의 다양한 요소에 이름을 지정합니다. 폴더 이름의 하이픈은 밑줄로 변환됩니다. 하지만 이름은 JavaScript 식별자 형식을 따라야 합니다. 예를 들어 숫자로 시작하거나 공백을 포함해서는 안 됩니다.

로컬 사용 cdk

대부분의 경우 이 안내서에서는 CDK 툴킷을 글로벌 설치 () 하고 제공된 명령 예제 (예:npm install -g aws-cdk) 가 이 가정을 따르는 것으로 cdk synth 가정합니다. 이 방법을 사용하면 CDK Toolkit을 최신 상태로 쉽게 유지할 수 있으며, CDK는 이전 버전과의 호환성에 대해 엄격한 접근 방식을 취하므로 일반적으로 항상 최신 버전을 사용해도 위험은 거의 없습니다.

일부 팀은 CDK Toolkit과 같은 도구를 포함하여 각 프로젝트 내의 모든 종속성을 지정하는 것을 선호합니다. 이렇게 하면 이러한 구성 요소를 특정 버전에 고정하고 팀의 모든 개발자 (및 CI/CD 환경) 가 정확히 해당 버전을 사용하도록 할 수 있습니다. 이렇게 하면 변경 가능성이 제거되므로 빌드와 배포의 일관성과 반복성을 높일 수 있습니다.

CDK에는 JavaScript 프로젝트 템플릿에 CDK 툴킷에 대한 종속 항목이 포함되어 있으므로 이 접근 방식을 사용하려는 경우 프로젝트를 변경할 필요가 없습니다. package.json 앱을 빌드할 때와 명령을 실행할 때 약간 다른 명령을 사용하기만 하면 됩니다. cdk

Operation 글로벌 CDK 툴킷 사용 로컬 CDK 툴킷 사용
프로젝트 초기화 cdk init --language 자바스크립트 npx aws-cdk 초기화 --언어 자바스크립트
CDK 툴킷 명령 실행 cdk... npm run cdk... or npx aws-cdk...

npx aws-cdk현재 프로젝트에 로컬로 설치된 CDK 툴킷 버전이 있는 경우 이를 실행하고, 글로벌 설치 (있는 경우) 로 폴백합니다. 글로벌 설치가 없는 경우 CDK Toolkit의 임시 사본을 npx 다운로드하여 실행합니다. : prints 구문을 사용하여 CDK 툴킷의 임의 버전을 지정할 수 있습니다. @ npx aws-cdk@1.120 --version 1.120.0

작은 정보

로컬 CDK 툴킷 설치에서 cdk 명령을 사용할 수 있도록 별칭을 설정합니다.

macOS/Linux
alias cdk="npx aws-cdk"
Windows
doskey cdk=npx aws-cdk $*

컨스트럭트 라이브러리 모듈 관리 AWS

Node Package Manager (npm) 를 사용하면 필요한 다른 패키지뿐 아니라 앱에서 사용할 수 있는 AWS Construct Library 모듈을 설치하고 업데이트할 수 있습니다. (원하는 npm 경우 yarn 대신 사용할 수도 있습니다.) npm또한 해당 모듈의 종속성을 자동으로 설치합니다.

대부분의 AWS CDK 구문은 라는 이름의 aws-cdk-lib 기본 CDK 패키지에 들어 있습니다. 이 패키지는 에서 만든 새 프로젝트의 기본 종속 항목입니다. cdk init 상위 레벨 AWS 구문이 아직 개발 중인 “실험적” 구조 라이브러리 모듈의 이름은 다음과 같습니다. aws-cdk-lib/SERVICE-NAME-alpha 서비스 이름에는 aws - 접두사가 붙습니다. 모듈 이름이 확실하지 않은 경우 NPM에서 검색하세요.

예를 들어, 아래 명령은 에 대한 실험용 모듈을 설치합니다. AWS CodeStar

npm install @aws-cdk/aws-codestar-alpha

일부 서비스의 구성 라이브러리 지원은 둘 이상의 네임스페이스에서 제공됩니다. 예를 들어aws-route53, 그 외에도 Amazon Route 53 네임스페이스,, aws-route53-targetsaws-route53-patterns, 가 세 개 더 있습니다. aws-route53resolver

프로젝트의 종속성은 에서 유지 관리됩니다. package.json 이 파일을 편집하여 일부 또는 모든 종속성을 특정 버전에 고정하거나 특정 기준에 따라 새 버전으로 업데이트하도록 허용할 수 있습니다. 에서 지정한 규칙에 따라 프로젝트의 NPM 종속성을 허용된 최신 버전으로 업데이트하려면: package.json

npm update

JavaScript에서는 NPM을 사용하여 모듈을 설치할 때 사용하는 것과 동일한 이름으로 모듈을 코드에 가져옵니다. 애플리케이션에서 AWS CDK 클래스와 AWS Construct Library 모듈을 가져올 때는 다음 방법을 따르는 것이 좋습니다. 이 가이드라인을 따르면 코드를 다른 AWS CDK 응용 프로그램과 일관되게 작성할 수 있을 뿐만 아니라 코드를 더 쉽게 이해할 수 있습니다.

  • ES6 스타일 import 지침이 아니라 사용하십시오require(). 이전 버전의 Node.js 에서는 ES6 가져오기를 지원하지 않으므로 이전 구문을 사용하는 것이 더 광범위하게 호환됩니다. (ES6 가져오기를 정말로 사용하고 싶다면 esm을 사용하여 프로젝트가 지원되는 모든 Node.js 버전과 호환되는지 확인하세요.)

  • 일반적으로 에서 개별 클래스를 가져옵니다. aws-cdk-lib

    const { App, Stack } = require('aws-cdk-lib');
  • 에서 많은 클래스가 필요한 경우 aws-cdk-lib 개별 클래스를 가져오는 cdk 대신 의 네임스페이스 별칭을 사용할 수 있습니다. 둘 다 하지 마세요.

    const cdk = require('aws-cdk-lib');
  • 일반적으로 짧은 네임스페이스 별칭을 사용하여 AWS Construct Libraries를 가져오세요.

    const { s3 } = require('aws-cdk-lib/aws-s3');

의 종속성 관리 JavaScript

JavaScriptCDK 프로젝트에서 종속성은 프로젝트의 기본 디렉토리에 있는 package.json 파일에 지정됩니다. 핵심 AWS CDK 모듈은 라는 단일 NPM 패키지에 들어 있습니다. aws-cdk-lib

를 사용하여 npm install 패키지를 설치하면 NPM이 패키지를 자동으로 기록합니다. package.json

원하는 경우 NPM 대신 Yarn을 사용할 수 있습니다. 하지만 CDK는 Yarn 2의 기본 plug-and-play 모드인 Yarn 모드를 지원하지 않습니다. 이 기능을 끄려면 프로젝트 .yarnrc.yml 파일에 다음을 추가하세요.

nodeLinker: node-modules

CDK 애플리케이션

다음은 cdk init --language typescript 명령으로 생성된 예제 package.json 파일입니다. 에 대해 JavaScript 생성된 파일은 TypeScript 관련 항목이 없다는 점만 제외하면 비슷합니다.

{ "name": "my-package", "version": "0.1.0", "bin": { "my-package": "bin/my-package.js" }, "scripts": { "build": "tsc", "watch": "tsc -w", "test": "jest", "cdk": "cdk" }, "devDependencies": { "@types/jest": "^26.0.10", "@types/node": "10.17.27", "jest": "^26.4.2", "ts-jest": "^26.2.0", "aws-cdk": "2.16.0", "ts-node": "^9.0.0", "typescript": "~3.9.7" }, "dependencies": { "aws-cdk-lib": "2.16.0", "constructs": "^10.0.0", "source-map-support": "^0.5.16" } }

배포 가능한 CDK 앱의 경우 의 dependencies 섹션에서 aws-cdk-lib 지정해야 합니다. package.json 캐럿 (^) 버전 번호 지정자를 사용하여 지정된 버전보다 이후 버전이 동일한 메이저 버전 내에 있는 한 수락할 것임을 표시할 수 있습니다.

실험적 구문의 경우 변경될 수 있는 API가 있는 알파 구문 라이브러리 모듈의 정확한 버전을 지정하십시오. ^나 ~는 사용하지 마세요. 이러한 모듈의 이후 버전에서는 API가 변경되어 앱이 중단될 수 있기 때문입니다.

devDependencies 섹션에서 앱을 테스트하는 데 필요한 라이브러리 및 도구 버전 (예: jest 테스트 프레임워크) 을 지정하십시오package.json. 선택적으로 ^를 사용하여 나중에 호환되는 버전도 허용되도록 지정할 수 있습니다.

타사 구성 라이브러리

구성 라이브러리를 개발하는 경우 다음 예제 package.json 파일에 표시된 대로 peerDependenciesdevDependencies 섹션의 조합을 사용하여 종속성을 지정하십시오.

{ "name": "my-package", "version": "0.0.1", "peerDependencies": { "aws-cdk-lib": "^2.14.0", "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha", "constructs": "^10.0.0" }, "devDependencies": { "aws-cdk-lib": "2.14.0", "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha", "constructs": "10.0.0", "jsii": "^1.50.0", "aws-cdk": "^2.14.0" } }

peerDependencies에서는 캐럿 (^) 을 사용하여 라이브러리가 작동하는 가장 낮은 버전을 지정합니다. aws-cdk-lib 이렇게 하면 라이브러리와 다양한 CDK 버전의 호환성이 극대화됩니다. API가 변경될 수 있는 alpha 구조 라이브러리 모듈의 정확한 버전을 지정하십시오. 를 peerDependencies 사용하면 트리에 모든 CDK 라이브러리의 복사본이 하나만 남게 됩니다node_modules.

에서 테스트에 필요한 도구와 라이브러리를 지정하고devDependencies, 나중에 호환되는 버전도 사용할 수 있음을 나타내려면 ^를 붙일 수도 있습니다. 라이브러리가 호환된다고 광고하는 다른 CDK 패키지 중 가장 낮은 버전 aws-cdk-lib 및 기타 CDK 패키지를 정확히 (^ 또는 ~를 제외하고) 지정하십시오. 이렇게 하면 해당 버전에서 테스트를 실행할 수 있습니다. 이렇게 하면 새 버전에만 있는 기능을 실수로 사용하는 경우 테스트에서 해당 기능을 잡을 수 있습니다.

주의

peerDependenciesNPM 7 이상에서만 자동으로 설치됩니다. NPM 6 이전 버전을 사용하거나 Yarn을 사용하는 경우 종속성의 종속성을 에 포함해야 합니다. devDependencies 그렇지 않으면 설치되지 않고 해결되지 않은 피어 종속성에 대한 경고를 받게 됩니다.

종속성 설치 및 업데이트

다음 명령어를 실행하여 프로젝트의 종속 항목을 설치합니다.

NPM
# Install the latest version of everything that matches the ranges in 'package.json' npm install # Install the same exact dependency versions as recorded in 'package-lock.json' npm ci
Yarn
# Install the latest version of everything that matches the ranges in 'package.json' yarn upgrade # Install the same exact dependency versions as recorded in 'yarn.lock' yarn install --frozen-lockfile

설치된 모듈을 업데이트하려면 위 npm installyarn upgrade 명령을 사용할 수 있습니다. 두 명령 모두 패키지를 의 node_modules package.json 규칙을 충족하는 최신 버전으로 업데이트합니다. 하지만 package.json 자체적으로 업데이트되지는 않으므로 새 최소 버전을 설정하는 것이 좋습니다. 에서 GitHub 패키지를 호스팅하는 경우 Dependabot 버전 업데이트가 자동으로 업데이트되도록 구성할 수 있습니다. package.json 또는 npm-check-updates를 사용합니다.

중요

기본적으로 NPM과 Yarn은 종속성을 설치하거나 업데이트할 때 지정된 요구 사항을 충족하는 모든 패키지의 최신 버전을 선택합니다. package.json 이러한 버전이 (실수로 또는 의도적으로) 손상될 위험은 항상 존재합니다. 프로젝트 종속성을 업데이트한 후 철저하게 테스트하세요.

AWS CDK 의 관용구 JavaScript

소품

모든 AWS Construct Library 클래스는 구문이 정의되는 범위 (구성 트리의 부모), id, props라는 세 가지 인수를 사용하여 인스턴스화됩니다. props는 구문이 생성하는 리소스를 구성하는 데 사용하는 키/값 쌍의 번들입니다. AWS 다른 클래스와 메서드에서도 인수에 “속성 번들” 패턴을 사용합니다.

JavaScript 자동 완성 기능이 있는 IDE 또는 편집기를 사용하면 속성 이름의 철자 오류를 방지하는 데 도움이 됩니다. 구문에 필요한 encryptionKeys 속성에 철자를 입력하면 구문을 인스턴스화할 때 의도한 값이 전달되지 않은 것입니다. encryptionkeys 이 경우 속성이 필요한 경우 합성 시 오류가 발생하고, 선택 사항인 경우 속성이 자동으로 무시될 수 있습니다. 후자의 경우 오버라이드하려는 기본 동작이 발생할 수 있습니다. 여기서는 특히 주의해야 합니다.

AWS Construct Library 클래스를 서브클래스화할 때 (또는 props와 유사한 인수를 사용하는 메서드를 오버라이드할 때), 직접 사용할 수 있도록 추가 속성을 허용해야 할 수도 있습니다. 이러한 값은 부모 클래스나 오버라이드된 메서드에서 무시됩니다. 해당 코드에서는 이러한 값에 액세스할 수 없으므로 일반적으로 받은 모든 소품을 전달할 수 있기 때문입니다.

향후 릴리스에서 우연히 귀하의 재산에 사용한 이름을 가진 새 부동산이 AWS CDK 추가될 수 있습니다. 받은 가치를 상속 체인에 전달하면 예상치 못한 동작이 발생할 수 있습니다. 속성을 제거하거나 설정한 상태로 받은 소품의 얕은 사본을 전달하는 것이 더 안전합니다. undefined 예:

super(scope, name, {...props, encryptionKeys: undefined});

또는 건축물에 속한다는 것을 명확히 알 수 있도록 속성에 이름을 붙이는 것도 좋습니다. 이렇게 하면 향후 AWS CDK 릴리스에서 프로퍼티와 충돌할 가능성이 거의 없습니다. 개수가 많으면 적절하게 이름이 지정된 단일 개체를 사용하여 해당 개체를 보관하세요.

누락된 값

개체에 누락된 값 (예:props) 에는 값이 들어 있습니다. undefined JavaScript 이러한 문제를 처리하는 데에는 일반적인 방법이 적용됩니다. 예를 들어, 정의되지 않은 값의 속성에 액세스할 때 흔히 사용되는 관용구는 다음과 같습니다.

// a may be undefined, but if it is not, it may have an attribute b // c is undefined if a is undefined, OR if a doesn't have an attribute b let c = a && a.b;

그러나 다른 'false' 값이 a 있을 수 있다면 테스트를 좀 더 명확하게 하는 것이 좋습니다. undefined 여기서는 nullundefined 가 같다는 점을 이용하여 두 값을 동시에 테스트해 보겠습니다.

let c = a == null ? a : a.b;
작은 정보

Node.js 14.0 이상에서는 정의되지 않은 값의 처리를 단순화할 수 있는 새로운 연산자를 지원합니다. 자세한 내용은 선택적 체이닝nullish 병합 제안을 참조하십시오.

합성 및 배포

AWS CDK 앱에 정의된 스택은 아래 명령을 사용하여 개별적으로 또는 함께 합성하고 배포할 수 있습니다. 일반적으로 프로젝트를 실행할 때는 프로젝트의 기본 디렉터리에 있어야 합니다.

  • cdk synth: 앱에 있는 하나 이상의 스택에서 AWS CloudFormation 템플릿을 합성합니다 AWS CDK .

  • cdk deploy: 앱에 있는 하나 이상의 스택에서 정의한 리소스를 에 배포합니다. AWS CDK AWS

단일 명령으로 합성하거나 배포할 여러 스택의 이름을 지정할 수 있습니다. 앱이 스택을 하나만 정의하는 경우 스택을 지정할 필요가 없습니다.

cdk synth # app defines single stack cdk deploy Happy Grumpy # app defines two or more stacks; two are deployed

와일드카드* (원하는 수의 문자) 및? 를 사용할 수도 있습니다. (임의의 단일 문자) 를 사용하여 패턴별로 스택을 식별할 수 있습니다. 와일드카드를 사용할 때는 패턴을 따옴표로 묶으십시오. 그렇지 않으면 셸이 툴킷으로 전달되기 전에 현재 디렉토리의 파일 이름으로 확장하려고 할 수 있습니다. AWS CDK

cdk synth "Stack?" # Stack1, StackA, etc. cdk deploy "*Stack" # PipeStack, LambdaStack, etc.
작은 정보

스택을 배포하기 전에 명시적으로 합성할 필요는 없습니다. 이 단계를 cdk deploy 수행하면 최신 코드가 배포되도록 할 수 있습니다.

명령의 전체 설명서를 보려면 을 참조하십시오. cdk AWS CDK 툴킷 (cdk명령)

다음과 같은 TypeScript 예제 사용하기 JavaScript

TypeScript는 우리가 개발하는 데 사용하는 언어이며 응용 프로그램 개발에 지원되는 첫 번째 언어이기 때문에 사용 가능한 AWS CDK 코드 예제가 많이 작성되어 TypeScript 있습니다. AWS CDK이러한 코드 예제는 JavaScript 개발자에게 유용한 리소스가 될 수 있습니다. 코드의 TypeScript 특정 부분만 제거하면 됩니다.

TypeScript 스니펫은 종종 최신 import ECMAScript와 export 키워드를 사용하여 다른 모듈에서 객체를 가져오고 해당 객체를 현재 모듈 외부에서 사용할 수 있도록 선언합니다. Node.js 최신 릴리스에서 이러한 키워드를 지원하기 시작한 지 얼마 되지 않았습니다. 사용 중인 (또는 지원하려는) Node.js 버전에 따라 이전 구문을 사용하도록 가져오기 및 내보내기를 다시 작성할 수 있습니다.

가져오기를 require() 함수 호출로 대체할 수 있습니다.

TypeScript
import * as cdk from 'aws-cdk-lib'; import { Bucket, BucketPolicy } from 'aws-cdk-lib/aws-s3';
JavaScript
const cdk = require('aws-cdk-lib'); const { Bucket, BucketPolicy } = require('aws-cdk-lib/aws-s3');

내보내기를 module.exports 개체에 할당할 수 있습니다.

TypeScript
export class Stack1 extends cdk.Stack { // ... } export class Stack2 extends cdk.Stack { // ... }
JavaScript
class Stack1 extends cdk.Stack { // ... } class Stack2 extends cdk.Stack { // ... } module.exports = { Stack1, Stack2 }
참고

이전 스타일의 가져오기와 내보내기를 사용하는 대신 모듈을 사용할 수 있습니다. esm

가져오기와 내보내기를 정렬했으면 실제 코드를 자세히 살펴볼 수 있습니다. 일반적으로 사용되는 TypeScript 다음과 같은 기능이 발생할 수 있습니다.

  • 유형 주석

  • 인터페이스 정의

  • 타입 변환/캐스트

  • 액세스 한정자

변수, 클래스 멤버, 함수 매개 변수 및 함수 반환 유형에 대해 형식 주석을 제공할 수 있습니다. 변수, 매개 변수 및 멤버의 경우 식별자 뒤에 콜론과 형식을 붙여 형식을 지정합니다. 함수 반환 값은 함수 서명을 따르며 콜론과 유형으로 구성됩니다.

유형 주석이 달린 코드를 로 변환하려면 콜론과 JavaScript 유형을 제거합니다. 클래스 멤버에는 특정 값이 있어야 합니다. 클래스 멤버에 형식 주석만 있는 undefined 경우에는 클래스 멤버를 로 설정하십시오 JavaScript. TypeScript

TypeScript
var encrypted: boolean = true; class myStack extends cdk.Stack { bucket: s3.Bucket; // ... } function makeEnv(account: string, region: string) : object { // ... }
JavaScript
var encrypted = true; class myStack extends cdk.Stack { bucket = undefined; // ... } function makeEnv(account, region) { // ... }

에서 TypeScript 인터페이스는 필수 및 선택적 속성의 묶음과 해당 유형, 이름을 지정하는 데 사용됩니다. 그런 다음 인터페이스 이름을 유형 주석으로 사용할 수 있습니다. TypeScript 예를 들어 함수의 인수로 사용하는 객체가 올바른 유형의 필수 속성을 가지고 있는지 확인합니다.

interface myFuncProps { code: lambda.Code, handler?: string }

JavaScript 에는 인터페이스 기능이 없으므로 형식 주석을 제거한 후에는 인터페이스 선언을 완전히 삭제하십시오.

함수나 메서드가 범용 형식 (예:object) 을 반환하지만 이 값을 좀 더 구체적인 하위 유형으로 취급하여 보다 일반적인 형식의 인터페이스에 속하지 않는 속성이나 메서드에 액세스하려는 경우 형식 또는 인터페이스 이름을 사용하여 as 값을 캐스팅할 수 있습니다. TypeScript JavaScript 이 식별자를 지원 (또는 필요) 하지 않으므로 다음 식별자를 as 제거하기만 하면 됩니다. 덜 일반적인 캐스트 구문은 대괄호 안에 타입 이름을 사용하는 것인데, 이러한 캐스트도 삭제해야 합니다<LikeThis>.

마지막으로, 액세스 한정자 및 클래스 public protected private 멤버를 TypeScript 지원합니다. 의 모든 클래스 JavaScript 멤버는 공개됩니다. 어디에서든 이 수정자를 제거하기만 하면 됩니다.

이러한 TypeScript 기능을 식별하고 제거하는 방법을 알면 짧은 TypeScript 스니펫을 적용하는 데 큰 도움이 됩니다. JavaScript 하지만 긴 TypeScript 예제는 다른 기능을 사용할 가능성이 더 높기 때문에 이런 방식으로 변환하는 것은 비실용적일 수 있습니다. TypeScript 이러한 상황에서는 Sucrase를 사용하는 것이 좋습니다. 예를 들어 코드에서 정의되지 않은 변수를 사용하는 경우 Sucrase는 불평하지 않습니다. tsc 구문상 유효하다면 몇 가지 예외를 제외하고 Sucrase는 이를 다음과 같이 변환할 수 있습니다. JavaScript 따라서 자체적으로 실행할 수 없는 스니펫을 변환하는 데 특히 유용합니다.

로 마이그레이션 TypeScript

프로젝트 규모가 커지고 TypeScript복잡해짐에 따라 많은 JavaScript 개발자들이 이전합니다. TypeScript JavaScript모든 JavaScript 코드가 유효한 코드이므로 코드를 변경할 필요가 없는 TypeScript 코드의 상위 집합이며 지원되는 언어이기도 합니다. AWS CDK 유형 주석 및 기타 TypeScript 기능은 선택 사항이며 가치가 있는 경우 AWS CDK 앱에 추가할 수 있습니다. TypeScript 또한 Node.js 업그레이드 없이도 선택적 체이닝 및 nullish 병합과 같은 새로운 JavaScript 기능을 완성하기 전에 미리 사용할 수 있습니다.

TypeScript개체 내에서 필수 및 선택적 속성 (및 해당 유형) 의 번들을 정의하는 의 “모양 기반” 인터페이스를 사용하면 코드를 작성하는 동안 흔히 발생하는 실수를 찾아낼 수 있으며 IDE에서 강력한 자동 완성 및 기타 실시간 코딩 조언을 더 쉽게 제공할 수 있습니다.

TypeScript 코딩에는 컴파일러로 앱을 컴파일하는 추가 단계가 필요합니다. TypeScript tsc 일반적인 AWS CDK 앱의 경우 컴파일하는 데 기껏해야 몇 초가 걸립니다.

기존 JavaScript AWS CDK 앱을 마이그레이션하는 가장 쉬운 방법은 를 사용하여 cdk init app --language typescript 새 TypeScript 프로젝트를 만든 다음 소스 파일 (및 AWS Lambda 함수 소스 코드와 같은 기타 필수 파일) 을 새 프로젝트에 복사하는 것입니다. TypeScript JavaScript 파일 이름을 변경하여 끝에서 .ts TypeScript 개발을 시작하세요.