Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS CDK projekte
Ein AWS Cloud Development Kit (AWS CDK) Projekt stellt die Dateien und Ordner dar, die Ihren CDK-Code enthalten. Der Inhalt hängt von Ihrer Programmiersprache ab.
Sie können Ihr AWS CDK Projekt manuell oder mit der AWS CDK Befehlszeilenschnittstelle erstellen (AWS CDK CLIcdk init
Befehl. In diesem Thema werden wir uns mit der Projektstruktur und den Benennungskonventionen von Dateien und Ordnern befassen, die mit der AWS CDK CLI erstellt wurden. Sie können Ihre CDK-Projekte an Ihre Bedürfnisse anpassen und organisieren.
Anmerkung
Die Projektstruktur wurde erstellt von AWS CDK CLI kann im Laufe der Zeit von Version zu Version variieren.
Universelle Dateien und Ordner
- .git
-
Wenn Sie das
git
installiert haben AWS CDK CLI initialisiert automatisch eine Git Repository für Ihr Projekt. Das.git
Verzeichnis enthält Informationen über das Repository. - .gitignore
-
Textdatei, die verwendet wird von Git um Dateien und Ordner anzugeben, die ignoriert werden sollen.
- README.md
-
Textdatei, die Ihnen grundlegende Anleitungen und wichtige Informationen für die Verwaltung Ihres AWS CDK Projekts bietet. Ändern Sie diese Datei nach Bedarf, um wichtige Informationen zu Ihrem CDK-Projekt zu dokumentieren.
- cdk.json
-
Konfigurationsdatei für die AWS CDK. Diese Datei enthält Anweisungen für AWS CDK CLI darüber, wie Sie Ihre App ausführen.
Sprachspezifische Dateien und Ordner
Die folgenden Dateien und Ordner sind für jede unterstützte Programmiersprache einzigartig.
- TypeScript
-
Im Folgenden finden Sie ein Beispielprojekt, das im
my-cdk-ts-project
Verzeichnis mit dem folgendencdk init --language typescript
Befehl erstellt wurde: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
-
Datei, die angibt, welche Dateien und Ordner beim Veröffentlichen eines Pakets ignoriert werden sollen npm Registrierung. Diese Datei ähnelt
.gitignore
, ist aber spezifisch für npm Pakete. - bin/ .ts my-cdk-ts-project
-
Die Anwendungsdatei definiert Ihre CDK-App. CDK-Projekte können eine oder mehrere Anwendungsdateien enthalten. Anwendungsdateien werden in dem
bin
Ordner gespeichert.Im Folgenden finden Sie ein Beispiel für eine grundlegende Anwendungsdatei, die eine CDK-App definiert:
#!/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
-
Konfigurationsdatei für Jest. Jestist ein beliebtes JavaScript Test-Framework.
- lib/ -stack.ts my-cdk-ts-project
-
Die Stack-Datei definiert Ihren CDK-Stack. Innerhalb Ihres Stacks definieren Sie AWS Ressourcen und Eigenschaften mithilfe von Konstrukten.
Im Folgenden finden Sie ein Beispiel für eine grundlegende Stack-Datei, die einen CDK-Stack definiert:
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
-
Gemeinsamer Ordner in Node.js Projekte, die Abhängigkeiten für Ihr Projekt enthalten.
- package-lock.json
-
Metadatendatei, die mit der
package.json
Datei zusammenarbeitet, um Versionen von Abhängigkeiten zu verwalten. - package.json
-
Metadatendatei, die häufig verwendet wird in Node.js projekte. Diese Datei enthält Informationen über Ihr CDK-Projekt wie den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Importinformationen auf Projektebene.
- my-cdk-ts-projecttest/ .test.ts
-
Ein Testordner wird erstellt, um Tests für Ihr CDK-Projekt zu organisieren. Eine Beispieltestdatei wird ebenfalls erstellt.
Sie können Tests schreiben in TypeScript und benutzen Jest um deine zu kompilieren TypeScript Code vor dem Ausführen von Tests.
- tsconfig.json
-
Die Konfigurationsdatei wird verwendet in TypeScript Projekte, die Compileroptionen und Projekteinstellungen spezifizieren.
- JavaScript
-
Das Folgende ist ein Beispielprojekt, das im
my-cdk-js-project
Verzeichnis mit demcdk init --language javascript
Befehl erstellt wurde: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
-
Datei, die angibt, welche Dateien und Ordner beim Veröffentlichen eines Pakets ignoriert werden sollen npm Registrierung. Diese Datei ähnelt
.gitignore
, ist aber spezifisch für npm Pakete. - bin/.js my-cdk-js-project
-
Die Anwendungsdatei definiert Ihre CDK-App. CDK-Projekte können eine oder mehrere Anwendungsdateien enthalten. Anwendungsdateien werden in dem
bin
Ordner gespeichert.Im Folgenden finden Sie ein Beispiel für eine grundlegende Anwendungsdatei, die eine CDK-App definiert:
#!/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
-
Konfigurationsdatei für Jest. Jestist ein beliebtes JavaScript Test-Framework.
- lib/ -stack.js my-cdk-js-project
-
Die Stack-Datei definiert Ihren CDK-Stack. Innerhalb Ihres Stacks definieren Sie AWS Ressourcen und Eigenschaften mithilfe von Konstrukten.
Im Folgenden finden Sie ein Beispiel für eine grundlegende Stack-Datei, die einen CDK-Stack definiert:
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
-
Gemeinsamer Ordner in Node.js Projekte, die Abhängigkeiten für Ihr Projekt enthalten.
- package-lock.json
-
Metadatendatei, die mit der
package.json
Datei zusammenarbeitet, um Versionen von Abhängigkeiten zu verwalten. - package.json
-
Metadatendatei, die häufig verwendet wird in Node.js projekte. Diese Datei enthält Informationen über Ihr CDK-Projekt wie den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Importinformationen auf Projektebene.
- my-cdk-js-projecttest/ .test.js
-
Ein Testordner wird erstellt, um Tests für Ihr CDK-Projekt zu organisieren. Eine Beispieltestdatei wird ebenfalls erstellt.
Sie können Tests schreiben in JavaScript und benutzen Jest um deine zu kompilieren JavaScript Code vor dem Ausführen von Tests.
- Python
-
Das Folgende ist ein Beispielprojekt, das im
my-cdk-py-project
Verzeichnis mit demcdk init --language python
Befehl erstellt wurde: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
-
Das CDK CLI erstellt automatisch eine virtuelle Umgebung für Ihr Projekt. Das
.venv
Verzeichnis bezieht sich auf diese virtuelle Umgebung. - app.py
-
Die Anwendungsdatei definiert Ihre CDK-App. CDK-Projekte können eine oder mehrere Anwendungsdateien enthalten.
Im Folgenden finden Sie ein Beispiel für eine grundlegende Anwendungsdatei, die eine CDK-App definiert:
#!/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
-
Verzeichnis, das Ihre Stack-Dateien enthält. Das CDK CLI erstellt hier Folgendes:
-
__init__.py
— Ein leeres Python Paketdefinitionsdatei. -
my_cdk_py_project
— Datei, die Ihren CDK-Stack definiert. Anschließend definieren Sie AWS Ressourcen und Eigenschaften innerhalb des Stacks mithilfe von Konstrukten.
Das Folgende ist ein Beispiel für eine Stack-Datei:
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
-
Datei
requirements.txt
, die ähnlich ist, aber zur Verwaltung von Abhängigkeiten speziell für Entwicklungszwecke und nicht für Produktionszwecke verwendet wird. - requirements.txt
-
Allgemeine Datei, die verwendet wird in Python Projekte zur Spezifizierung und Verwaltung von Projektabhängigkeiten.
- source.bat
-
Batch-Datei für Windows das wird verwendet, um das einzurichten Python virtuelle Umgebung.
- Tests
-
Verzeichnis, das Tests für Ihr CDK-Projekt enthält.
Das Folgende ist ein Beispiel für einen Komponententest:
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
-
Das Folgende ist ein Beispielprojekt, das im
my-cdk-java-project
Verzeichnis mit demcdk init --language java
Befehl erstellt wurde:my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
- pom.xml
-
Datei, die Konfigurationsinformationen und Metadaten zu Ihrem CDK-Projekt enthält. Diese Datei ist Teil von Maven.
- src/main
-
Verzeichnis, das Ihre Anwendungs - und Stack-Dateien enthält.
Im Folgenden finden Sie ein Beispiel für eine Anwendungsdatei:
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(); } }
Im Folgenden finden Sie ein Beispiel für eine Stack-Datei:
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
-
Verzeichnis, das Ihre Testdateien enthält. Im Folgenden wird ein Beispiel gezeigt:
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#
-
Das Folgende ist ein Beispielprojekt, das in dem
my-cdk-csharp-project
Verzeichnis mit demcdk init --language csharp
Befehl erstellt wurde:my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
- src/ MyCdkCsharpProject
-
Verzeichnis, das Ihre Anwendungs - und Stack-Dateien enthält.
Im Folgenden finden Sie ein Beispiel für eine Anwendungsdatei:
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(); } } }
Im Folgenden finden Sie ein Beispiel für eine Stack-Datei:
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 } } }
Dieses Verzeichnis enthält auch Folgendes:
-
GlobalSuppressions.cs
— Datei, die verwendet wird, um bestimmte Compiler-Warnungen oder -Fehler in Ihrem Projekt zu unterdrücken. -
.csproj
— XML-basierte Datei, die zur Definition von Projekteinstellungen, Abhängigkeiten und Build-Konfigurationen verwendet wird.
-
- src/ .sln MyCdkCsharpProject
-
Microsoft Visual Studio Solution File wird verwendet, um verwandte Projekte zu organisieren und zu verwalten.
- Go
-
Das Folgende ist ein Beispielprojekt, das im
my-cdk-go-project
Verzeichnis mit demcdk init --language go
Befehl erstellt wurde: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
-
Datei, die Modulinformationen enthält und zur Verwaltung von Abhängigkeiten und Versionierung für Ihr Go Projekt.
- my-cdk-go-project.gehen
-
Datei, die Ihre CDK-Anwendung und Stacks definiert.
Im Folgenden wird ein Beispiel gezeigt:
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
-
Datei, die einen Beispieltest definiert.
Im Folgenden wird ein Beispiel gezeigt:
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, }) }