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

Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 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 dem AWS CDK Befehl Command Line Interface (AWS CDK CLI) cdk init erstellen. In diesem Thema werden wir uns mit der Projektstruktur und den Benennungskonventionen von Dateien und Ordnern befassen, die von der erstellt wurden AWS CDKCLI. Sie können Ihre CDK Projekte an Ihre Bedürfnisse anpassen und organisieren.

Anmerkung

Die von der erstellte Projektstruktur AWS CDK CLI kann im Laufe der Zeit von Version zu Version variieren.

Universelle Dateien und Ordner

.git

Wenn Sie git installiert haben, initialisiert das AWS CDK CLI automatisch ein Git Repository 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 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 AWS CDK CLI zum Ausführen Ihrer App.

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 folgenden cdk 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 ignoriert werden sollen, wenn ein Paket in der Registrierung veröffentlicht wird. npm Diese Datei ähnelt Paketen.gitignore, ist aber spezifisch für npm Pakete.

bin/ .ts my-cdk-ts-project

Die Anwendungsdatei definiert Ihre CDK App. CDKProjekte 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 Stack. CDK 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 Projekten, 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 in Projekten verwendet wird. Node.js Diese Datei enthält Informationen zu Ihrem CDK Projekt, z. B. den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Importinformationen auf Projektebene.

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

Ein Testordner wird erstellt, um Tests für Ihr Projekt zu organisieren. CDK Eine Beispieltestdatei wird ebenfalls erstellt.

Sie können Tests in Ihren TypeScript Code schreiben TypeScript und ihn Jest zum Kompilieren verwenden, bevor Sie Tests ausführen.

tsconfig.json

In TypeScript Projekten verwendete Konfigurationsdatei, die Compileroptionen und Projekteinstellungen spezifiziert.

JavaScript

Das Folgende ist ein Beispielprojekt, das im my-cdk-js-project Verzeichnis mit dem cdk 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 ignoriert werden sollen, wenn ein Paket in der Registrierung veröffentlicht wird. npm Diese Datei ähnelt Paketen.gitignore, ist aber spezifisch für npm Pakete.

bin/.js my-cdk-js-project

Die Anwendungsdatei definiert Ihre CDK App. CDKProjekte 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 Projekten, 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 in Projekten verwendet wird. Node.js Diese Datei enthält Informationen zu Ihrem CDK Projekt, z. B. den Projektnamen, Skriptdefinitionen, Abhängigkeiten und andere Importinformationen auf Projektebene.

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

Ein Testordner wird erstellt, um Tests für Ihr Projekt zu organisieren. CDK Eine Beispieltestdatei wird ebenfalls erstellt.

Sie können Tests in Ihren JavaScript Code schreiben JavaScript und ihn Jest zum Kompilieren verwenden, bevor Sie Tests ausführen.

Python

Das Folgende ist ein Beispielprojekt, das im my-cdk-py-project Verzeichnis mit dem cdk 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 erstellt CDK 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. CDKProjekte 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 erzeugt 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

Dateirequirements.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 in Python Projekten zur Spezifizierung und Verwaltung von Projektabhängigkeiten verwendet wird.

source.bat

Die Batch-Datei Windows dafür wird verwendet, um die Python virtuelle Umgebung einzurichten.

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 dem cdk 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 ein Teil vonMaven.

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 dem cdk 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 Filewird verwendet, um verwandte Projekte zu organisieren und zu verwalten.

Go

Im Folgenden finden Sie ein Beispielprojekt, das im my-cdk-go-project Verzeichnis mit dem cdk 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 Projekt verwendet wird. Go

my-cdk-go-project.go

Datei, die Ihre CDK Anwendung und Ihre 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, }) }