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

Ceci est le guide du AWS CDK développeur de la version 2. L'ancienne CDK version 1 est entrée en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS CDK projets

Un AWS Cloud Development Kit (AWS CDK) projet représente les fichiers et les dossiers qui contiennent votre CDK code. Le contenu peut varier en fonction de votre langage de programmation.

Vous pouvez créer votre AWS CDK projet manuellement ou à l'aide de la AWS CDK commande Command Line Interface (AWS CDK CLI)cdk init. Dans cette rubrique, nous aborderons la structure du projet et les conventions de dénomination des fichiers et dossiers créés par le AWS CDKCLI. Vous pouvez personnaliser et organiser vos CDK projets en fonction de vos besoins.

Note

La structure de projet créée par le AWS CDK CLI peut varier d'une version à l'autre au fil du temps.

Fichiers et dossiers universels

.git

Si vous l'avez git installé, un Git référentiel est AWS CDK CLI automatiquement initialisé pour votre projet. Le .git répertoire contient des informations sur le référentiel.

.gitignore

Fichier texte utilisé par Git pour spécifier les fichiers et les dossiers à ignorer.

README.md

Fichier texte qui vous fournit des conseils de base et des informations importantes pour la gestion de votre AWS CDK projet. Modifiez ce fichier si nécessaire pour documenter les informations importantes concernant votre CDK projet.

cdk.json

Fichier de configuration pour AWS CDK. Ce fichier fournit des instructions AWS CDK CLI sur la façon d'exécuter votre application.

Fichiers et dossiers spécifiques à la langue

Les fichiers et dossiers suivants sont propres à chaque langage de programmation pris en charge.

TypeScript

Voici un exemple de projet créé dans le my-cdk-ts-project répertoire à l'aide de la cdk init --language typescript commande :

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
.npm ignorer

Fichier qui indique les fichiers et les dossiers à ignorer lors de la publication d'un package npm dans le registre. Ce fichier est similaire aux npm packages.gitignore, mais il est spécifique à ceux-ci.

bin/.ts my-cdk-ts-project

Le fichier d'application définit votre CDK application. CDKles projets peuvent contenir un ou plusieurs fichiers de candidature. Les fichiers de candidature sont stockés dans le bin dossier.

Voici un exemple de fichier d'application de base qui définit une CDK application :

#!/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

Fichier de configuration pourJest. Jestest un framework de JavaScript test populaire.

lib/ -stack.ts my-cdk-ts-project

Le fichier de pile définit votre CDK pile. Au sein de votre pile, vous définissez les AWS ressources et les propriétés à l'aide de constructions.

Voici un exemple de fichier de pile de base qui définit une CDK pile :

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

Dossier commun aux Node.js projets qui contiennent des dépendances pour votre projet.

package-lock.json

Fichier de métadonnées qui fonctionne avec le package.json fichier pour gérer les versions des dépendances.

package.json

Fichier de métadonnées couramment utilisé dans les Node.js projets. Ce fichier contient des informations sur votre CDK projet, telles que le nom du projet, les définitions de script, les dépendances et d'autres informations au niveau du projet d'importation.

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

Un dossier de test est créé pour organiser les tests de votre CDK projet. Un exemple de fichier de test est également créé.

Vous pouvez y écrire des tests TypeScript et les utiliser Jest pour compiler votre TypeScript code avant d'exécuter les tests.

tsconfig.json

Fichier de configuration utilisé dans les TypeScript projets qui spécifie les options du compilateur et les paramètres du projet.

JavaScript

Voici un exemple de projet créé dans le my-cdk-js-project répertoire à l'aide de la cdk init --language javascript commande :

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
.npm ignorer

Fichier qui indique les fichiers et les dossiers à ignorer lors de la publication d'un package npm dans le registre. Ce fichier est similaire aux npm packages.gitignore, mais il est spécifique à ceux-ci.

bin/.js my-cdk-js-project

Le fichier d'application définit votre CDK application. CDKles projets peuvent contenir un ou plusieurs fichiers de candidature. Les fichiers de candidature sont stockés dans le bin dossier.

Voici un exemple de fichier d'application de base qui définit une CDK application :

#!/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

Fichier de configuration pourJest. Jestest un framework de JavaScript test populaire.

lib/ -stack.js my-cdk-js-project

Le fichier de pile définit votre CDK pile. Au sein de votre pile, vous définissez les AWS ressources et les propriétés à l'aide de constructions.

Voici un exemple de fichier de pile de base qui définit une CDK pile :

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

Dossier commun aux Node.js projets qui contiennent des dépendances pour votre projet.

package-lock.json

Fichier de métadonnées qui fonctionne avec le package.json fichier pour gérer les versions des dépendances.

package.json

Fichier de métadonnées couramment utilisé dans les Node.js projets. Ce fichier contient des informations sur votre CDK projet, telles que le nom du projet, les définitions de script, les dépendances et d'autres informations au niveau du projet d'importation.

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

Un dossier de test est créé pour organiser les tests de votre CDK projet. Un exemple de fichier de test est également créé.

Vous pouvez y écrire des tests JavaScript et les utiliser Jest pour compiler votre JavaScript code avant d'exécuter les tests.

Python

Voici un exemple de projet créé dans le my-cdk-py-project répertoire à l'aide de la cdk init --language python commande :

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

crée CDK CLI automatiquement un environnement virtuel pour votre projet. Le .venv répertoire fait référence à cet environnement virtuel.

app.py

Le fichier d'application définit votre CDK application. CDKles projets peuvent contenir un ou plusieurs fichiers de candidature.

Voici un exemple de fichier d'application de base qui définit une CDK application :

#!/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

Répertoire contenant vos fichiers de pile. CDKCLICela crée ce qui suit ici :

  • __init__.py — Un fichier de définition de Python package vide.

  • my_cdk_py_project— Fichier qui définit votre CDK pile. Vous définissez ensuite les AWS ressources et les propriétés au sein de la pile à l'aide de constructions.

Voici un exemple de fichier de pile :

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

Fichier similaire àrequirements.txt, mais utilisé pour gérer les dépendances spécifiquement à des fins de développement plutôt que de production.

requirements.txt

Fichier commun utilisé dans les Python projets pour spécifier et gérer les dépendances des projets.

source.bat

Le fichier batch Windows correspondant est utilisé pour configurer l'environnement Python virtuel.

tests

Répertoire contenant les tests pour votre CDK projet.

Voici un exemple de test unitaire :

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

Voici un exemple de projet créé dans le my-cdk-java-project répertoire à l'aide de la cdk init --language java commande :

my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
pom.xml

Fichier contenant les informations de configuration et les métadonnées relatives à votre CDK projet. Ce fichier fait partie deMaven.

src/main

Répertoire contenant votre application et vos fichiers de pile.

Voici un exemple de fichier de candidature :

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(); } }

Voici un exemple de fichier de pile :

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

Répertoire contenant vos fichiers de test. Voici un exemple :

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#

Voici un exemple de projet créé dans le my-cdk-csharp-project répertoire à l'aide de la cdk init --language csharp commande :

my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
src/ MyCdkCsharpProject

Répertoire contenant votre application et vos fichiers de pile.

Voici un exemple de fichier de candidature :

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(); } } }

Voici un exemple de fichier de pile :

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

Ce répertoire contient également les éléments suivants :

  • GlobalSuppressions.cs— Fichier utilisé pour supprimer des avertissements ou des erreurs spécifiques du compilateur dans votre projet.

  • .csproj— fichier XML basé sur un fichier utilisé pour définir les paramètres du projet, les dépendances et les configurations de construction.

src/.sln MyCdkCsharpProject

Microsoft Visual Studio Solution Fileutilisé pour organiser et gérer des projets connexes.

Go

Voici un exemple de projet créé dans le my-cdk-go-project répertoire à l'aide de la cdk init --language go commande :

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

Fichier contenant des informations sur le module et utilisé pour gérer les dépendances et le versionnement de votre Go projet.

my-cdk-go-project.go

Fichier qui définit votre CDK application et vos piles.

Voici un exemple :

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

Fichier qui définit un exemple de test.

Voici un exemple :

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