v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔고 2023년 6월 1일에 지원을 종료했습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CDK 프로젝트
AWS Cloud Development Kit (AWS CDK) 프로젝트는 CDK 코드가 들어 있는 파일 및 폴더를 나타냅니다. 내용은 프로그래밍 언어에 따라 달라집니다.
AWS CDK 프로젝트를 수동으로 만들거나 AWS CDK 명령줄 인터페이스 (AWS CDK CLI) cdk init
명령을 사용하여 만들 수 있습니다. 이 항목에서는 에서 만든 파일 및 폴더의 프로젝트 구조와 명명 규칙을 참조합니다. AWS CDK CLI 필요에 맞게 CDK 프로젝트를 사용자 정의하고 구성할 수 있습니다.
참고
에서 만든 프로젝트 구조는 시간이 지남에 따라 버전마다 AWS CDK CLI 다를 수 있습니다.
범용 파일 및 폴더
- .git
-
를
git
설치한 경우 는 프로젝트의 Git 저장소를 AWS CDK CLI 자동으로 초기화합니다..git
디렉토리에는 저장소에 대한 정보가 들어 있습니다. - .gitignore
-
에서 무시할 파일 및 폴더를 지정하는 Git 데 사용되는 텍스트 파일입니다.
- README.md
-
AWS CDK 프로젝트 관리를 위한 기본 지침과 중요한 정보를 제공하는 텍스트 파일입니다. 필요에 따라 이 파일을 수정하여 CDK 프로젝트와 관련된 중요한 정보를 문서화하십시오.
- cdk.json
-
의 구성 파일 AWS CDK. 이 파일은 앱 실행 방법에 AWS CDK CLI 대한 지침을 제공합니다.
언어별 파일 및 폴더
다음 파일 및 폴더는 지원되는 각 프로그래밍 언어에 고유합니다.
- TypeScript
-
다음은
cdk init --language typescript
명령을 사용하여my-cdk-ts-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-ts-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-ts-project.ts ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-ts-project-stack.ts ├── node_modules ├── package-lock.json ├── package.json ├── test │ └── my-cdk-ts-project.test.ts └── tsconfig.json
- .npmignore
-
패키지를 레지스트리에 게시할 때 무시할 파일 및 폴더를 지정하는 파일입니다. npm 이 파일은 패키지와
.gitignore
비슷하지만 npm 패키지에만 해당됩니다. - bin/ .ts my-cdk-ts-project
-
애플리케이션 파일은 앱을 정의합니다. CDK CDK프로젝트에는 하나 이상의 애플리케이션 파일이 포함될 수 있습니다. 응용 프로그램 파일은
bin
폴더에 저장됩니다.다음은 CDK 앱을 정의하는 기본 애플리케이션 파일의 예입니다.
#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { MyCdkTsProjectStack } from '../lib/my-cdk-ts-project-stack'; const app = new cdk.App(); new MyCdkTsProjectStack(app, 'MyCdkTsProjectStack');
- jest.config.js
-
에 대한 구성 파일. Jest Jest널리 사용되는 JavaScript 테스트 프레임워크입니다.
- lib/ my-cdk-ts-project -stack.ts
-
스택 파일은 스택을 정의합니다. CDK 스택 내에서 구문을 사용하여 AWS 리소스와 속성을 정의합니다.
다음은 스택을 정의하는 기본 스택 파일의 예시입니다CDK.
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class MyCdkTsProjectStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // code that defines your resources and properties go here } }
- 노드_모듈
-
Node.js프로젝트에 대한 종속성을 포함하는 프로젝트의 공통 폴더
- package-lock.json
-
파일과 함께 작동하여 종속성 버전을 관리하는 메타데이터
package.json
파일입니다. - package.json
-
프로젝트에서 일반적으로 사용되는 메타데이터 파일입니다. Node.js 이 파일에는 CDK 프로젝트 이름, 스크립트 정의, 종속성 및 기타 가져오기 프로젝트 수준 정보와 같은 프로젝트에 대한 정보가 들어 있습니다.
- 테스트/ my-cdk-ts-project .test.ts
-
테스트 폴더는 프로젝트의 테스트를 정리하기 위해 생성됩니다. CDK 샘플 테스트 파일도 생성됩니다.
테스트를 실행하기 전에 테스트를 작성하고 TypeScript 코드를 Jest 컴파일하는 데 사용할 수 있습니다. TypeScript
- tsconfig.json
-
컴파일러 옵션과 프로젝트 설정을 지정하는 TypeScript 프로젝트에 사용되는 구성 파일입니다.
- JavaScript
-
다음은
cdk init --language javascript
명령을 사용하여my-cdk-js-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-js-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-js-project.js ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-js-project-stack.js ├── node_modules ├── package-lock.json ├── package.json └── test └── my-cdk-js-project.test.js
- .npmignore
-
패키지를 레지스트리에 게시할 때 무시할 파일 및 폴더를 지정하는 파일입니다. npm 이 파일은 패키지와
.gitignore
비슷하지만 npm 패키지에만 해당됩니다. - bin/ .js my-cdk-js-project
-
애플리케이션 파일은 앱을 정의합니다. CDK CDK프로젝트에는 하나 이상의 애플리케이션 파일이 포함될 수 있습니다. 응용 프로그램 파일은
bin
폴더에 저장됩니다.다음은 CDK 앱을 정의하는 기본 애플리케이션 파일의 예입니다.
#!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { MyCdkJsProjectStack } = require('../lib/my-cdk-js-project-stack'); const app = new cdk.App(); new MyCdkJsProjectStack(app, 'MyCdkJsProjectStack');
- jest.config.js
-
에 대한 구성 파일. Jest Jest널리 사용되는 JavaScript 테스트 프레임워크입니다.
- lib/ -stack.js my-cdk-js-project
-
스택 파일은 CDK 스택을 정의합니다. 스택 내에서 구문을 사용하여 AWS 리소스와 속성을 정의합니다.
다음은 스택을 정의하는 기본 스택 파일의 예시입니다CDK.
const { Stack, Duration } = require('aws-cdk-lib'); class MyCdkJsProjectStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // code that defines your resources and properties go here } } module.exports = { MyCdkJsProjectStack }
- 노드_모듈
-
Node.js프로젝트에 대한 종속성을 포함하는 프로젝트의 공통 폴더
- package-lock.json
-
파일과 함께 작동하여 종속성 버전을 관리하는 메타데이터
package.json
파일입니다. - package.json
-
프로젝트에서 일반적으로 사용되는 메타데이터 파일입니다. Node.js 이 파일에는 CDK 프로젝트 이름, 스크립트 정의, 종속성 및 기타 가져오기 프로젝트 수준 정보와 같은 프로젝트에 대한 정보가 들어 있습니다.
- 테스트/ my-cdk-js-project .test.js
-
테스트 폴더는 프로젝트의 테스트를 정리하기 위해 생성됩니다. CDK 샘플 테스트 파일도 생성됩니다.
테스트를 실행하기 전에 테스트를 작성하고 JavaScript 코드를 Jest 컴파일하는 데 사용할 수 있습니다. JavaScript
- Python
-
다음은
cdk init --language python
명령어를 사용하여my-cdk-py-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-py-project ├── .git ├── .gitignore ├── .venv ├── README.md ├── app.py ├── cdk.json ├── my_cdk_py_project │ ├── __init__.py │ └── my_cdk_py_project_stack.py ├── requirements-dev.txt ├── requirements.txt ├── source.bat └── tests ├── __init__.py └── unit
- .venv
-
프로젝트를 위한 가상 환경을 CDK CLI 자동으로 생성합니다.
.venv
디렉토리는 이 가상 환경을 가리킵니다. - app.py
-
애플리케이션 파일은 CDK 앱을 정의합니다. CDK프로젝트에는 하나 이상의 애플리케이션 파일이 포함될 수 있습니다.
다음은 CDK 앱을 정의하는 기본 애플리케이션 파일의 예시입니다.
#!/usr/bin/env python3 import os import aws_cdk as cdk from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack app = cdk.App() MyCdkPyProjectStack(app, "MyCdkPyProjectStack") app.synth()
- my_cdk_py_project
-
스택 파일이 들어 있는 디렉터리 는 다음과 같이 CDK CLI 생성합니다.
-
__init__.py
— 빈 Python 패키지 정의 파일입니다. -
my_cdk_py_project
— CDK 스택을 정의하는 파일입니다. 그런 다음 구문을 사용하여 스택 내의 AWS 리소스와 속성을 정의합니다.
다음은 스택 파일의 예시입니다.
from aws_cdk import Stack from constructs import Construct class MyCdkPyProjectStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # code that defines your resources and properties go here
-
- requirements-dev.txt
-
파일과
requirements.txt
비슷하지만 특히 프로덕션이 아닌 개발 목적으로 종속성을 관리하는 데 사용되는 파일입니다. - requirements.txt
-
Python프로젝트에서 프로젝트 종속성을 지정하고 관리하는 데 사용되는 공통 파일입니다.
- source.bat
-
Windows이를 위한 Batch 파일은 Python 가상 환경을 설정하는 데 사용됩니다.
- 테스트
-
CDK프로젝트에 대한 테스트가 들어 있는 디렉터리입니다.
다음은 단위 테스트의 예시입니다.
import aws_cdk as core import aws_cdk.assertions as assertions from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack def test_sqs_queue_created(): app = core.App() stack = MyCdkPyProjectStack(app, "my-cdk-py-project") template = assertions.Template.from_stack(stack) template.has_resource_properties("AWS::SQS::Queue", { "VisibilityTimeout": 300 })
- Java
-
다음은
cdk init --language java
명령을 사용하여my-cdk-java-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
- pom.xml
-
CDK프로젝트에 대한 구성 정보와 메타데이터가 들어 있는 파일입니다. 이 파일은 의 일부입니다Maven.
- src/main
-
애플리케이션 및 스택 파일이 들어 있는 디렉터리
다음은 예제 애플리케이션 파일입니다.
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; import software.amazon.awscdk.StackProps; import java.util.Arrays; public class MyCdkJavaProjectApp { public static void main(final String[] args) { App app = new App(); new MyCdkJavaProjectStack(app, "MyCdkJavaProjectStack", StackProps.builder() .build()); app.synth(); } }
다음은 예제 스택 파일입니다.
package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; public class MyCdkJavaProjectStack extends Stack { public MyCdkJavaProjectStack(final Construct scope, final String id) { this(scope, id, null); } public MyCdkJavaProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // code that defines your resources and properties go here } }
- src/test
-
테스트 파일이 들어 있는 디렉터리 다음은 그 예제입니다.
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.assertions.Template; import java.io.IOException; import java.util.HashMap; import org.junit.jupiter.api.Test; public class MyCdkJavaProjectTest { @Test public void testStack() throws IOException { App app = new App(); MyCdkJavaProjectStack stack = new MyCdkJavaProjectStack(app, "test"); Template template = Template.fromStack(stack); template.hasResourceProperties("AWS::SQS::Queue", new HashMap<String, Number>() {{ put("VisibilityTimeout", 300); }}); } }
- C#
-
다음은
cdk init --language csharp
명령을 사용하여my-cdk-csharp-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
- src/ MyCdkCsharpProject
-
애플리케이션과 스택 파일이 들어 있는 디렉터리
다음은 예제 애플리케이션 파일입니다.
using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; namespace MyCdkCsharpProject { sealed class Program { public static void Main(string[] args) { var app = new App(); new MyCdkCsharpProjectStack(app, "MyCdkCsharpProjectStack", new StackProps{}); app.Synth(); } } }
다음은 예제 스택 파일입니다.
using Amazon.CDK; using Constructs; namespace MyCdkCsharpProject { public class MyCdkCsharpProjectStack : Stack { internal MyCdkCsharpProjectStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // code that defines your resources and properties go here } } }
이 디렉토리에는 다음 항목도 포함되어 있습니다.
-
GlobalSuppressions.cs
— 프로젝트 전체에서 특정 컴파일러 경고나 오류를 억제하는 데 사용되는 파일입니다. -
.csproj
— 프로젝트 설정, 종속성 및 빌드 구성을 정의하는 데 사용되는 XML 기반 파일입니다.
-
- src/ .sln MyCdkCsharpProject
-
Microsoft Visual Studio Solution File관련 프로젝트를 구성하고 관리하는 데 사용됩니다.
- Go
-
다음은
cdk init --language go
명령을 사용하여my-cdk-go-project
디렉터리에 만든 예제 프로젝트입니다.my-cdk-go-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── go.mod ├── my-cdk-go-project.go └── my-cdk-go-project_test.go
- go.mod
-
모듈 정보를 포함하고 프로젝트의 종속성 및 버전 관리를 관리하는 데 사용되는 파일입니다. Go
- my-cdk-go-project.go
-
CDK애플리케이션과 스택을 정의하는 파일입니다.
다음은 그 예제입니다.
package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) type MyCdkGoProjectStackProps struct { awscdk.StackProps } func NewMyCdkGoProjectStack(scope constructs.Construct, id string, props *MyCdkGoProjectStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // The code that defines your resources and properties go here return stack } func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewMyCdkGoProjectStack(app, "MyCdkGoProjectStack", &MyCdkGoProjectStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } func env() *awscdk.Environment { return nil }
- my-cdk-go-project_test.go
-
샘플 테스트를 정의하는 파일입니다.
다음은 그 예제입니다.
package main import ( "testing" "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/assertions" "github.com/aws/jsii-runtime-go" ) func TestMyCdkGoProjectStack(t *testing.T) { // GIVEN app := awscdk.NewApp(nil) // WHEN stack := NewMyCdkGoProjectStack(app, "MyStack", nil) // THEN template := assertions.Template_FromStack(stack, nil) template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{ "VisibilityTimeout": 300, }) }