选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

AWS CDK 项目

聚焦模式
AWS CDK 项目 - AWS Cloud Development Kit (AWS CDK) v2

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段,并于 2023 年 6 月 1 日终止支持。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段,并于 2023 年 6 月 1 日终止支持。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Cloud Development Kit (AWS CDK) 项目代表包含您的 CDK 代码的文件和文件夹。内容因您的编程语言而异。

您可以手动创建 AWS CDK 项目,也可以使用 AWS CDK 命令行界面 (AWS CDK CLI) cdk init 命令。在本主题中,我们将介绍 Amazon CDK CLI 创建的文件和文件夹的项目结构和命名约定。您可以自定义和组织 CDK 项目,以满足您的需求。

注意

由创建的项目结构 AWS CDK CLI 随着时间的推移,可能会因版本而异。

通用文件和文件夹

.git

如果你已经git安装了, AWS CDK CLI 自动初始化 Git 您的项目的存储库。.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/. my-cdk-ts-project ts

定义您 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_modules

中的常用文件夹 Node.js 包含项目依赖关系的项目。

package-lock.json

package.json 文件配合使用的元数据文件,用于管理依赖项的版本。

package.json

常用的元数据文件 Node.js 项目。此文件包含有关您 CDK 项目的信息,例如项目名称、脚本定义、依赖项和其他导入项目级信息。

test/ .test.ts my-cdk-ts-project

创建了一个测试文件夹,用于组织您 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_modules

中的常用文件夹 Node.js 包含项目依赖关系的项目。

package-lock.json

package.json 文件配合使用的元数据文件,用于管理依赖项的版本。

package.json

常用的元数据文件 Node.js 项目。此文件包含有关您 CDK 项目的信息,例如项目名称、脚本定义、依赖项和其他导入项目级信息。

test/ .test.js my-cdk-js-project

创建了一个测试文件夹,用于组织您 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

的 Batch 文件 Windows 那是用来设置的 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, }) }

以下是使用 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/. my-cdk-ts-project ts

定义您 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_modules

中的常用文件夹 Node.js 包含项目依赖关系的项目。

package-lock.json

package.json 文件配合使用的元数据文件,用于管理依赖项的版本。

package.json

常用的元数据文件 Node.js 项目。此文件包含有关您 CDK 项目的信息,例如项目名称、脚本定义、依赖项和其他导入项目级信息。

test/ .test.ts my-cdk-ts-project

创建了一个测试文件夹,用于组织您 CDK 项目的测试。还创建了一个示例测试文件。

你可以在里面写测试 TypeScript 并使用 Jest 来编译你的 TypeScript 在运行测试之前编写代码。

tsconfig.json

中使用的配置文件 TypeScript 指定编译器选项和项目设置的项目。

下一主题:

应用程序

上一主题:

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。