AWS CDK Projekte - AWS Cloud Development Kit (AWS CDK) v2

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 typescriptBefehl im -my-cdk-ts-projectVerzeichnis 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.jsonDatei 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 javascriptBefehl im -my-cdk-js-projectVerzeichnis 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.jsonDatei 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 pythonBefehl im -my-cdk-py-projectVerzeichnis 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 javaBefehl im -my-cdk-java-projectVerzeichnis 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 csharpBefehl im -my-cdk-csharp-projectVerzeichnis 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 goBefehl im -my-cdk-go-projectVerzeichnis 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, }) }