Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet 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. Die Inhalte variieren je nach Programmiersprache.
Sie können Ihr AWS CDK Projekt manuell oder mit dem AWS CDK Befehl Command Line Interface (AWS CDK CLI) erstellencdk init
. In diesem Thema beziehen wir uns auf die Projektstruktur und Benennungskonventionen von Dateien und Ordnern, die von der AWS-CDK-CLI erstellt wurden. Sie können Ihre CDK-Projekte an Ihre Bedürfnisse anpassen und organisieren.
Anmerkung
Die vom erstellte Projektstruktur kann im Laufe der AWS CDK CLI Zeit je nach Version variieren.
Universale Dateien und Ordner
- .git
-
Wenn Sie
git
installiert haben, initialisiert die AWS CDK CLI automatisch ein GitRepository für Ihr Projekt. Das.git
Verzeichnis enthält Informationen über das Repository. - .gitignore
-
Textdatei, die von verwendet wirdGit, um Dateien und Ordner anzugeben, die ignoriert werden sollen.
- README.md
-
Textdatei, die Ihnen grundlegende Anleitungen und wichtige Informationen zur 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 an die AWS CDK CLI zur Ausführung Ihrer App.
Sprachspezifische Dateien und Ordner
Die folgenden Dateien und Ordner sind für jede unterstützte Programmiersprache eindeutig.
- TypeScript
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language typescript
Befehl im -my-cdk-ts-project
Verzeichnis 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 in der npm Registrierung ignoriert werden sollen. Diese Datei ist ähnlich wie
.gitignore
, aber spezifisch für -npmPakete. - bin/my-cdk-ts-project.ts
-
Die Anwendungsdatei definiert Ihre CDK-App. CDK-Projekte können eine oder mehrere Anwendungsdateien enthalten. Anwendungsdateien werden im
bin
Ordner gespeichert.Im Folgenden finden Sie ein Beispiel für eine einfache 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. Jest ist ein beliebtes JavaScript Test-Framework.
- lib/my-cdk-ts-project-stack.ts
-
Die Stack-Datei definiert Ihren CDK-Stack. Innerhalb Ihres Stacks definieren AWS Sie Ressourcen und Eigenschaften mithilfe von Konstrukten.
Im Folgenden finden Sie ein Beispiel für eine einfache 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 Projekten, die Abhängigkeiten für Ihr Projekt enthalten.
- package-lock.json
-
Metadatendatei, die mit der -
package.json
Datei zur Verwaltung von Versionen von Abhängigkeiten funktioniert. - package.json
-
Metadatendatei, die häufig in Node.js Projekten verwendet wird. Diese Datei enthält Informationen über Ihr CDK-Projekt, z. B. den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Informationen auf Projektebene importieren.
- test/my-cdk-ts-project.test.ts
-
Ein Testordner wird erstellt, um Tests für Ihr CDK-Projekt zu organisieren. Es wird auch eine Beispieltestdatei erstellt.
Sie können Tests in schreiben TypeScript und verwendenJest, um Ihren TypeScript Code zu kompilieren, bevor Sie Tests ausführen.
- tsconfig.json
-
Konfigurationsdatei, die in TypeScript Projekten verwendet wird, die Compiler-Optionen und Projekteinstellungen angeben.
- JavaScript
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language javascript
Befehl im -my-cdk-js-project
Verzeichnis 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 in der npm Registrierung ignoriert werden sollen. Diese Datei ist ähnlich wie
.gitignore
, aber spezifisch für -npmPakete. - bin/my-cdk-js-project.js
-
Die Anwendungsdatei definiert Ihre CDK-App. CDK-Projekte können eine oder mehrere Anwendungsdateien enthalten. Anwendungsdateien werden im
bin
Ordner gespeichert.Im Folgenden finden Sie ein Beispiel für eine einfache 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. Jest ist ein beliebtes JavaScript Test-Framework.
- lib/my-cdk-js-project-stack.js
-
Die Stack-Datei definiert Ihren CDK-Stack. Innerhalb Ihres Stacks definieren AWS Sie Ressourcen und Eigenschaften mithilfe von Konstrukten.
Im Folgenden finden Sie ein Beispiel für eine einfache 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 Projekten, die Abhängigkeiten für Ihr Projekt enthalten.
- package-lock.json
-
Metadatendatei, die mit der -
package.json
Datei zur Verwaltung von Versionen von Abhängigkeiten funktioniert. - package.json
-
Metadatendatei, die häufig in Node.js Projekten verwendet wird. Diese Datei enthält Informationen über Ihr CDK-Projekt, z. B. den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Informationen auf Projektebene importieren.
- test/my-cdk-js-project.test.js
-
Ein Testordner wird erstellt, um Tests für Ihr CDK-Projekt zu organisieren. Es wird auch eine Beispieltestdatei erstellt.
Sie können Tests in schreiben JavaScript und verwendenJest, um Ihren JavaScript Code zu kompilieren, bevor Sie Tests ausführen.
- Python
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language python
Befehl im -my-cdk-py-project
Verzeichnis 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 erstellt CLI 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 einfache 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_projekt
-
Verzeichnis, das Ihre Stack-Dateien enthält. Das CDK CLI erstellt hier Folgendes:
-
__init__.py
– Eine leere 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.
Im Folgenden finden Sie 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 ähnlich wie
requirements.txt
, wird aber verwendet, um Abhängigkeiten speziell für Entwicklungszwecke und nicht für die Produktion zu verwalten. - requirements.txt
-
Geläufige Datei, die in Python Projekten verwendet wird, um Projektabhängigkeiten anzugeben und zu verwalten.
- source.bat
-
Batch-Datei für Windows, die zum Einrichten der Python virtuellen Umgebung verwendet wird.
- Tests
-
Verzeichnis, das Tests für Ihr CDK-Projekt enthält.
Im Folgenden finden Sie 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
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language java
Befehl im -my-cdk-java-project
Verzeichnis 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#
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language csharp
Befehl im -my-cdk-csharp-project
Verzeichnis 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 gesamten Projekt zu unterdrücken. -
.csproj
– XML-basierte Datei, die zur Definition von Projekteinstellungen, Abhängigkeiten und Build-Konfigurationen verwendet wird.
-
- src/MyCdkCsharpProject.sln
-
Microsoft Visual Studio Solution File wird verwendet, um verwandte Projekte zu organisieren und zu verwalten.
- Go
-
Im Folgenden finden Sie ein Beispielprojekt, das mit dem -
cdk init --language go
Befehl im -my-cdk-go-project
Verzeichnis 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 Versioning für Ihr Go Projekt verwendet wird.
- my-cdk-go-project.go
-
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, }) }