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 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 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 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 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 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 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
-
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 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 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 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 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 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 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 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, }) }