選取您的 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 CLI) cdk init命令來建立 AWS CDK 專案。在本主題中,我們將參考由 AWS 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/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/my-cdk-js-project.js

應用程式檔案會定義您的 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/my-cdk-js-project-stack.js

堆疊檔案會定義您的 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/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

用於設定Python虛擬環境Windows的 批次檔案。

測試

包含 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/MyCdkCsharpProject.sln

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/my-cdk-ts-project.test.ts

測試資料夾會建立,以組織您 CDK 專案的測試。也會建立範例測試檔案。

您可以在 中撰寫測試TypeScript,並使用 Jest 來編譯TypeScript程式碼,然後再執行測試。

tsconfig.json

用於指定編譯器選項和專案設定的TypeScript專案的組態檔案。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。