

Ceci est le guide du développeur du AWS CDK v2. L'ancien CDK v1 est entré 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 Applications CDK
<a name="apps"></a>

*[L'application ou l'application AWS Cloud Development Kit (AWS CDK) est un ensemble d'une ou plusieurs piles de CDK.](stacks.md)* Les piles sont un ensemble d'une ou plusieurs [constructions](constructs.md) qui définissent les AWS ressources et les propriétés. Par conséquent, le regroupement global de vos piles et de vos constructions est connu sous le nom d'application CDK.

## Comment créer une application CDK
<a name="apps-define"></a>

Vous créez une application en définissant une instance d'application dans le fichier d'application de votre [projet](projects.md). Pour ce faire, vous devez importer et utiliser le build [App](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.App.html) depuis la bibliothèque AWS Construct. La `App` construction ne nécessite aucun argument d'initialisation. C'est la seule construction qui peut être utilisée comme racine.

Les ` [Stack](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Stack.html) ` classes ` [App](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.App.html) ` et de la bibliothèque AWS de constructions sont des constructions uniques. Comparées à d'autres constructions, elles ne configurent pas AWS les ressources par elles-mêmes. Ils sont plutôt utilisés pour fournir un contexte à vos autres constructions. Toutes les constructions qui représentent AWS des ressources doivent être définies, directement ou indirectement, dans le cadre d'une `Stack` construction. `Stack`les constructions sont définies dans le cadre d'une `App` construction.

Les applications sont ensuite synthétisées pour créer des AWS CloudFormation modèles pour vos piles. Voici un exemple :

**Example**  

```
const app = new App();
new MyFirstStack(app, 'hello-cdk');
app.synth();
```

```
const app = new App();
new MyFirstStack(app, 'hello-cdk');
app.synth();
```

```
app = App()
MyFirstStack(app, "hello-cdk")
app.synth()
```

```
App app = new App();
new MyFirstStack(app, "hello-cdk");
app.synth();
```

```
var app = new App();
new MyFirstStack(app, "hello-cdk");
app.Synth();
```

```
app := awscdk.NewApp(nil)

MyFirstStack(app, "MyFirstStack", &MyFirstStackProps{
  awscdk.StackProps{
    Env: env(),
  },
})

app.Synth(nil)
```

Les piles d'une même application peuvent facilement faire référence aux ressources et aux propriétés des autres. Le AWS CDK déduit les dépendances entre les piles afin qu'elles puissent être déployées dans le bon ordre. Vous pouvez déployer tout ou partie des piles d'une application à l'aide d'une seule `cdk deploy` commande.

## L'arbre de construction
<a name="apps-tree"></a>

Les constructions sont définies à l'intérieur d'autres constructions en utilisant l'`scope`argument transmis à chaque construction, avec la `App` classe comme racine. De cette façon, une application AWS CDK définit une hiérarchie de constructions connue sous le nom d'arbre de *construction*.

La racine de cet arbre est votre application, qui est une instance de la `App` classe. Dans l'application, vous instanciez une ou plusieurs piles. Dans les piles, vous instanciez des constructions, qui peuvent elles-mêmes instancier des ressources ou d'autres constructions, et ainsi de suite dans l'arborescence.

Les constructions sont *toujours* définies explicitement dans le cadre d'une autre construction, ce qui crée des relations entre les constructions. Presque toujours, vous devez passer `this` (en Python`self`) comme portée, indiquant que la nouvelle construction est un enfant de la construction actuelle. Le modèle prévu est que vous dériviez votre construction [https://docs.aws.amazon.com/cdk/api/v2/docs/constructs.Construct.html](https://docs.aws.amazon.com/cdk/api/v2/docs/constructs.Construct.html), puis que vous instanciez les constructions qu'elle utilise dans son constructeur.

Le fait de transmettre explicitement la portée permet à chaque construction de s'ajouter à l'arbre, ce comportement étant entièrement contenu dans la [classe `Construct` de base](https://docs.aws.amazon.com/cdk/api/v2/docs/constructs.Construct.html). Il fonctionne de la même manière dans toutes les langues prises en charge par le AWS CDK et ne nécessite aucune personnalisation supplémentaire.

**Important**  
Techniquement, il est possible de transmettre une certaine portée autrement que `this` lors de l'instanciation d'une construction. Vous pouvez ajouter des constructions n'importe où dans l'arborescence, ou même dans une autre pile de la même application. Par exemple, vous pouvez écrire une fonction de style mixin qui ajoute des constructions à une portée transmise en tant qu'argument. La difficulté pratique ici est que vous ne pouvez pas facilement vous assurer que les constructions que IDs vous choisissez sont uniques dans le cadre de la portée de quelqu'un d'autre. Cette pratique rend également votre code plus difficile à comprendre, à gérer et à réutiliser. Par conséquent, nous vous recommandons d'utiliser la structure générale de l'arbre de construction.

Le AWS CDK utilise toutes les constructions situées sur le chemin allant de la racine de l'arbre à chaque construction enfant pour générer l'unique IDs requis par. IDs AWS CloudFormation Cette approche signifie que la construction doit IDs uniquement être unique dans son champ d'application, plutôt que dans l'ensemble de la pile comme dans la version native AWS CloudFormation. Toutefois, si vous déplacez une construction vers une autre étendue, son identifiant unique de pile généré change et elle ne AWS CloudFormation sera pas considérée comme la même ressource.

L'arbre de construction est distinct des constructions que vous définissez dans votre code AWS CDK. Cependant, il est accessible via `node` l'attribut de n'importe quelle construction, qui est une référence au nœud qui représente cette construction dans l'arbre. Chaque nœud est une [https://docs.aws.amazon.com/cdk/api/v2/docs/constructs.Node.html](https://docs.aws.amazon.com/cdk/api/v2/docs/constructs.Node.html)instance dont les attributs donnent accès à la racine de l'arbre ainsi qu'aux étendues parents et aux enfants du nœud.

1.  `node.children`— Les enfants directs de la construction.

1.  `node.id`— L'identifiant de la construction comprise dans son champ d'application.

1.  `node.path`— Le parcours complet de la construction, y compris IDs celui de tous ses parents.

1.  `node.root`— La racine de l'arbre de construction (l'application).

1.  `node.scope`— La portée (parent) de la construction, ou indéfinie si le nœud est la racine.

1.  `node.scopes`— Tous les parents de la construction, jusqu'à la racine.

1.  `node.uniqueId`— L'identifiant alphanumérique unique de cette construction dans l'arbre (par défaut, généré à partir `node.path` d'un hachage).

L'arbre de construction définit un ordre implicite dans lequel les constructions sont synthétisées avec les ressources du modèle final AWS CloudFormation . Lorsqu'une ressource doit être créée avant une autre, AWS CloudFormation ou lorsque la bibliothèque de AWS construction en déduit généralement la dépendance. Ils s'assurent ensuite que les ressources sont créées dans le bon ordre.

Vous pouvez également ajouter une dépendance explicite entre deux nœuds en utilisant`node.addDependency()`. Pour plus d'informations, consultez la section [Dépendances](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html#dependencies) dans la *référence de l'API AWS CDK*.

Le AWS CDK fournit un moyen simple de visiter chaque nœud de l'arbre de construction et d'effectuer une opération sur chacun d'eux. Pour plus d'informations, consultez la section [Aspects et le AWS CDK.](aspects.md)