AWS CDK 앱 - AWS Cloud Development Kit (AWS CDK) v2

v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔고 2023년 6월 1일에 지원을 종료했습니다.

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

AWS CDK 앱

AWS Cloud Development Kit (AWS CDK) 애플리케이션 또는 앱은 하나 이상의 스택으로 구성된 컬렉션입니다. CDK 스택은 AWS 리소스와 속성을 정의하는 하나 이상의 구문의 모음입니다. 따라서 스택과 구문의 전체 그룹을 앱이라고 합니다. CDK

앱 생성 방법 CDK

프로젝트의 애플리케이션 파일에서 앱 인스턴스를 정의하여 앱을 생성합니다. 이렇게 하려면 App AWS 구성 라이브러리에서 구문을 가져와 사용합니다. 이 App 구문에는 초기화 인수가 필요하지 않습니다. 루트로 사용할 수 있는 유일한 구문입니다.

AWS 구성 라이브러리의 AppStack 클래스는 고유한 구조입니다. 다른 구문에 비해 자체적으로 AWS 리소스를 구성하지는 않습니다. 대신 다른 구문에 컨텍스트를 제공하는 데 사용됩니다. AWS 리소스를 나타내는 모든 구문은 구문 범위 내에서 직접 또는 간접적으로 정의되어야 합니다. Stack Stack구문은 구문 범위 내에서 정의됩니다. App

그런 다음 앱을 합성하여 스택용 AWS CloudFormation 템플릿을 만듭니다. 다음은 그 예제입니다.

TypeScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
JavaScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
Python
app = App() MyFirstStack(app, "hello-cdk") app.synth()
Java
App app = new App(); new MyFirstStack(app, "hello-cdk"); app.synth();
C#
var app = new App(); new MyFirstStack(app, "hello-cdk"); app.Synth();
Go
app := awscdk.NewApp(nil) MyFirstStack(app, "MyFirstStack", &MyFirstStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil)

단일 앱 내의 스택은 서로의 리소스 및 속성을 쉽게 참조할 수 있습니다. 스택 간의 AWS CDK 종속성을 유추하여 올바른 순서로 배포할 수 있습니다. 단일 명령으로 앱 내에 스택 일부 또는 전체를 배포할 수 있습니다. cdk deploy

구성 트리

구문은 App 클래스를 루트로 하여 모든 구문에 전달되는 scope 인수를 사용하여 다른 구문 내에서 정의됩니다. 이런 방식으로 AWS CDK 앱은 구성 트리라고 하는 구문의 계층 구조를 정의합니다.

이 트리의 루트는 App 클래스의 인스턴스인 앱입니다. 앱 내에서 하나 이상의 스택을 인스턴스화합니다. 스택 내에서 구문을 인스턴스화합니다. 이 구문은 자체적으로 리소스 또는 기타 구문을 인스턴스화하는 식입니다.

구문은 항상 다른 구문의 범위 내에서 명시적으로 정의되므로 구문 간에 관계가 생성됩니다. 거의 항상 this (Python에서는self) 를 범위로 전달해야 합니다. 이는 새 구문이 현재 구문의 자식임을 나타냅니다. 의도한 패턴은 구문을 파생한 다음 생성자에서 사용하는 구문을 인스턴스화하는 것입니다. Construct

범위를 명시적으로 전달하면 각 구문이 트리에 자신을 추가할 수 있으며, 이 동작은 기본 클래스 내에 완전히 포함됩니다. Construct 이 방법은 에서 지원하는 모든 언어에서 동일한 방식으로 AWS CDK 작동하며 추가 사용자 지정이 필요하지 않습니다.

중요

엄밀히 따지자면 구문을 인스턴스화할 this 때 이외에 다른 범위를 전달할 수 있습니다. 트리의 아무 곳에나, 심지어 같은 앱의 다른 스택에도 구문을 추가할 수 있습니다. 예를 들어 인수로 전달된 범위에 구문을 추가하는 믹스인 스타일 함수를 작성할 수 있습니다. 여기서 현실적으로 어려운 점은 자신이 선택한 구문이 다른 사람의 범위 내에서 고유한지 쉽게 확인할 수 없다는 것입니다. IDs 또한 이렇게 하면 코드를 이해하고 유지 관리하고 재사용하기가 더 어려워집니다. 따라서 구성 트리의 일반 구조를 사용하는 것이 좋습니다.

AWS CDK 는 IDs 트리의 루트에서 각 하위 구문까지의 경로에 있는 모든 구문을 사용하여 IDs 필요한 고유한 구문을 생성합니다. AWS CloudFormation이 접근 방식은 구문이 AWS CloudFormation네이티브처럼 전체 스택 내에서가 아니라 해당 범위 IDs 내에서만 고유해야 한다는 것을 의미합니다. 하지만 구문을 다른 범위로 이동하면 생성된 스택 고유 ID가 변경되고 동일한 리소스로 AWS CloudFormation 간주되지 않습니다.

구문 트리는 코드에 정의한 구문과는 별개입니다. AWS CDK 하지만 모든 구문의 node 속성, 즉 트리에서 해당 구문을 나타내는 노드에 대한 참조를 통해 액세스할 수 있습니다. 각 노드는 Node인스턴스이며, 각 노드의 속성을 통해 트리의 루트와 노드의 부모 범위 및 자식에 액세스할 수 있습니다.

  1. node.children— 구문의 직계 하위입니다.

  2. node.id— 해당 범위 내 구문의 식별자.

  3. node.path— 모든 상위 구성요소를 포함한 구문의 전체 경로. IDs

  4. node.root— 구성 트리의 루트 (앱).

  5. node.scope— 구문의 범위 (부모), 노드가 루트인 경우 정의되지 않음.

  6. node.scopes— 구조체의 모든 부모 (루트까지).

  7. node.uniqueId— 트리 내 이 구문의 고유한 영숫자 식별자 (기본적으로 node.path 및 해시에서 생성됨).

구성 트리는 구문이 최종 템플릿의 리소스에 합성되는 암시적 순서를 정의합니다. AWS CloudFormation 한 리소스가 다른 리소스보다 먼저 생성되어야 하는 경우, AWS CloudFormation 그렇지 않으면 일반적으로 AWS 구성 라이브러리가 종속성을 유추합니다. 그런 다음 리소스가 올바른 순서로 생성되었는지 확인합니다.

를 사용하여 두 노드 사이에 명시적 종속성을 추가할 수도 있습니다. node.addDependency() 자세한 내용은 참조의 종속성을 참조하십시오.AWS CDK API

는 구성 트리의 모든 노드를 방문하여 각 노드에 대해 작업을 수행할 수 있는 간단한 방법을 AWS CDK 제공합니다. 자세한 내용은 측면 및 AWS CDK 단원을 참조하십시오.