v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Cloud Development Kit (AWS CDK) 애플리케이션 또는 앱은 하나 이상의 CDK 스택 모음입니다. 스택은 AWS 리소스와 속성을 정의하는 하나 이상의 구문 모음입니다. 따라서 스택과 구문을 전체적으로 그룹화한 것을 CDK 앱이라고 합니다.
CDK 앱을 생성하는 방법
프로젝트의 애플리케이션 파일에 앱 인스턴스를 정의하여 앱을 생성합니다. 이렇게 하려면 App
Construct Library에서 AWS 구문을 가져와 사용합니다. App
구문은 초기화 인수를 필요로 하지 않습니다. 루트로 사용할 수 있는 유일한 구문입니다.
AWS Construct Library의 App
및 Stack
클래스는 고유한 구문입니다. 다른 구문과 비교하여 AWS 리소스를 자체적으로 구성하지 않습니다. 대신 다른 구문에 대한 컨텍스트를 제공하는 데 사용됩니다. AWS 리소스를 나타내는 모든 구문은 Stack
구문의 범위 내에서 직접 또는 간접적으로 정의되어야 합니다. Stack
구문은 App
구문의 범위 내에서 정의됩니다.
그런 다음 앱이 합성되어 스택에 대한 AWS CloudFormation 템플릿을 생성합니다. 다음은 예제입니다.
const app = new App();
new MyFirstStack(app, 'hello-cdk');
app.synth();
단일 앱 내의 스택은 서로의 리소스와 속성을 쉽게 참조할 수 있습니다. 는 스택 간의 종속성을 AWS CDK 추론하여 올바른 순서로 배포할 수 있습니다. 단일 cdk deploy
명령을 사용하여 앱 내에서 일부 스택이나 모든 스택을 배포할 수 있습니다.
구문 트리
구문은 App
클래스를 루트로 하여 모든 구문에 전달되는 scope
인수를 사용하여 다른 구문 내부에 정의됩니다. 이렇게 하면 AWS CDK 앱이 구문 트리라고 하는 구문 계층 구조를 정의합니다.
이 트리의 루트는 App
클래스의 인스턴스인 앱입니다. 앱 내에서 하나 이상의 스택을 인스턴스화합니다. 스택 내에서 구문을 인스턴스화하면 해당 구문이 자체적으로 트리를 따라 리소스나 구문 등을 인스턴스화할 수 있습니다.
구문은 항상 다른 구문의 범위 내에 명시적으로 정의되며, 이를 통해 구문 간에 관계가 생성됩니다. 거의 항상 this
(Python: self
)를 범위로 전달하여 새 구문이 현재 구문의 자식임을 나타내야 합니다. 의도된 패턴은 Construct
에서 구문을 파생시킨 다음, 생성자에서 사용하는 구문을 인스턴스화하는 것입니다.
범위를 명시적으로 전달하면 이 동작이 Construct
기본 클래스 내에 완전히 포함된 상태에서 각 구문이 트리에 자신을 추가할 수 있습니다. 에서 지원하는 모든 언어에서 동일한 방식으로 작동 AWS CDK 하며 추가 사용자 지정이 필요하지 않습니다.
중요
기술적으로는 구문을 인스턴스화할 때 this
외의 일부 범위를 전달하는 것이 가능합니다. 트리의 어느 위치에서나, 심지어 같은 앱의 다른 스택에서도 구문을 추가할 수 있습니다. 예를 들어 인수로 전달되는 범위에 구문을 추가하는 mixin 스타일 함수를 작성할 수 있습니다. 여기서 실질적인 어려움은 구문에 대해 선택하는 ID가 다른 사람의 범위 내에서 고유한지 쉽게 확인할 수 없다는 것입니다. 또한 이러한 관행은 코드를 이해, 유지 관리 및 재사용하기 더 어렵게 만듭니다. 따라서 구문 트리의 일반 구조를 사용하는 것이 좋습니다.
는 트리 IDs의 루트에서 각 하위 구문까지의 경로에 있는 모든 구문의 ID를 AWS CDK 사용하여에 필요한 고유 IDs 생성합니다 AWS CloudFormation. 이 접근 방식은 기본 AWS CloudFormation에서처럼 전체 스택 내에서가 아니라 해당 범위 내에서만 구문 ID가 고유하면 된다는 의미입니다. 그러나 구문을 다른 범위로 이동하면 생성된 스택 고유 ID AWS CloudFormation 가 변경되고 동일한 리소스로 간주되지 않습니다.
구문 트리는 AWS CDK 코드에 정의한 구문과 별개입니다. 그러나 트리에서 해당 구문을 나타내는 노드에 대한 참조인 구문의 node
속성을 통해 액세스할 수 있습니다. 각 노드는 트리의 루트와 노드의 부모 범위와 자식에 대한 액세스를 제공하는 Node
인스턴스입니다.
-
node.children
- 구문의 직계 자식입니다. -
node.id
- 범위 내 구문의 식별자입니다. -
node.path
- 모든 부모의 ID를 포함한 구문의 전체 경로입니다. -
node.root
- 구문 트리(앱)의 루트입니다. -
node.scope
- 구문의 범위(부모)이거나, 노드가 루트인 경우 정의되지 않음입니다. -
node.scopes
- 루트까지 구문의 모든 부모입니다. -
node.uniqueId
- 트리 내의 이 구문에 대한 고유한 영숫자 식별자(기본적으로node.path
및 해시에서 생성됨)입니다.
구문 트리는 최종 AWS CloudFormation 템플릿의 리소스에 구문이 합성되는 암시적 순서를 정의합니다. 한 리소스를 다른 리소스보다 먼저 생성해야 하는 경우 AWS CloudFormation 또는 AWS Construct Library는 일반적으로 종속성을 유추합니다. 그런 다음 리소스가 올바른 순서로 생성되었는지 확인합니다.
node.addDependency()
를 사용하여 두 노드 간에 명시적 종속성을 추가할 수도 있습니다. 자세한 내용은 AWS CDK API 참조의 Dependencies를 참조하세요.
는 구문 트리의 모든 노드를 방문하여 각 노드에 대해 작업을 수행하는 간단한 방법을 AWS CDK 제공합니다. 자세한 내용은 측면 및 AWS CDK 단원을 참조하십시오.