

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.

# Qu'est-ce que le AWS CDK ?
<a name="home"></a>

Le AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel open source permettant de définir l'infrastructure cloud dans le code et de la provisionner via celle-ci. AWS CloudFormation

Le AWS CDK se compose de deux parties principales :
+  **[AWS Bibliothèque CDK Construct](constructs.md)** : collection de codes modulaires et réutilisables pré-écrits, appelés constructions, que vous pouvez utiliser, modifier et intégrer pour développer rapidement votre infrastructure. L'objectif de la bibliothèque AWS CDK Construct est de réduire la complexité requise pour définir et intégrer les AWS services ensemble lors de la création d'applications. AWS
+  AWS Boîte à outils CDK : outils que vous pouvez utiliser pour gérer et interagir avec vos applications CDK, tels que la synthèse ou le déploiement. Le kit d'outils CDK comprend un outil de ligne de commande ([CDK CLI](ref-cli-cmd.md)) et une bibliothèque de programmation (bibliothèque du kit d'outils [CDK](toolkit-library.md)).

Le AWS CDK prend en charge Python TypeScript JavaScript, Java, C\#/.Net et. Go Vous pouvez utiliser n'importe lequel de ces langages de programmation pris en charge pour définir des composants cloud réutilisables appelés [constructions.](constructs.md) Vous les composez ensemble en [piles](stacks.md) et en [applications](apps.md). Ensuite, vous déployez vos applications CDK AWS CloudFormation pour provisionner ou mettre à jour vos ressources.

![Présentation de l'application et du processus CDK](http://docs.aws.amazon.com/fr_fr/cdk/v2/guide/images/AppStacks.png)


## Les avantages du AWS CDK
<a name="home-benefits"></a>

Utilisez le AWS CDK pour développer des applications fiables, évolutives et économiques dans le cloud avec la puissance expressive considérable d'un langage de programmation. Cette approche présente de nombreux avantages, notamment :<a name="home-benefits-iac"></a>

 **Développez et gérez votre infrastructure sous forme de code (IaC)**   
Pratiquez *l'infrastructure sous forme de code* pour créer, déployer et maintenir l'infrastructure de manière programmatique, descriptive et déclarative. Avec IaC, vous traitez l'infrastructure de la même manière que les développeurs traitent le code. Cela se traduit par une approche évolutive et structurée de la gestion de l'infrastructure. Pour en savoir plus sur l'IaC, consultez la section [Infrastructure en tant que code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) dans le * AWS livre blanc Introduction à DevOps on*.  
Avec le AWS CDK, vous pouvez regrouper votre infrastructure, le code de votre application et votre configuration en un seul endroit, afin de disposer d'un système complet et déployable dans le cloud à chaque étape. Utilisez les meilleures pratiques d'ingénierie logicielle, telles que les révisions de code, les tests unitaires et le contrôle des sources, pour renforcer la robustesse de votre infrastructure.<a name="home-benefits-languages"></a>

 **Définissez votre infrastructure cloud à l'aide de langages de programmation polyvalents**   
Avec le AWS CDK, vous pouvez utiliser l'un des langages de programmation suivants pour définir votre infrastructure cloud : TypeScript, Python JavaScript, Java, C\#/.Net et. Go Choisissez votre langage préféré et utilisez des éléments de programmation tels que les paramètres, les conditions, les boucles, la composition et l’héritage pour définir le résultat souhaité pour votre infrastructure.  
Utilisez le même langage de programmation pour définir votre infrastructure et la logique de votre application.  
Bénéficiez des avantages du développement d'une infrastructure dans votre IDE (environnement de développement intégré) préféré, tels que la mise en évidence de la syntaxe et la complétion intelligente du code.  

![Extrait de code montrant la configuration du CDK pour le cluster ECS avec VPC et configuration du service Fargate.](http://docs.aws.amazon.com/fr_fr/cdk/v2/guide/images/CodeCompletion.png)
<a name="home-benefits-cfn"></a>

 **Déployez l'infrastructure via AWS CloudFormation**   
 AWS CDK s'intègre AWS CloudFormation pour déployer et approvisionner votre infrastructure. AWS AWS CloudFormation est un AWS service géré qui offre une prise en charge complète des configurations de ressources et de propriétés pour le provisionnement de services sur AWS. Vous pouvez ainsi effectuer des déploiements d'infrastructure de manière prévisible et répétée, avec annulation en cas d'erreur. AWS CloudFormation Si vous le connaissez déjà AWS CloudFormation, vous n'avez pas besoin de vous familiariser avec un nouveau service de gestion IaC pour démarrer avec le AWS CDK.<a name="home-benefits-constructs"></a>

 **Commencez à développer rapidement votre application avec des constructions**   
Développez plus rapidement en utilisant et en partageant des composants réutilisables appelés constructions. Utilisez des constructions de bas niveau pour définir les AWS CloudFormation ressources individuelles et leurs propriétés. Utilisez des structures de haut niveau pour définir rapidement des composants plus importants de votre application, avec des valeurs par défaut judicieuses et sécurisées pour vos AWS ressources, afin de définir une infrastructure plus complète avec moins de code.  
Créez vos propres structures personnalisées pour vos cas d'utilisation uniques et partagez-les au sein de votre organisation ou même avec le public.

## Exemple du AWS CDK
<a name="home-example"></a>

Voici un exemple d'utilisation de la bibliothèque AWS CDK Constructs pour créer un service Amazon Elastic Container Service (Amazon ECS) avec AWS le type de lancement Fargate. Pour plus de détails sur cet exemple, voir [Exemple : créer un service AWS Fargate à l'aide](ecs-example.md) du CDK. AWS 

**Example**  

```
export class MyEcsConstructStack extends Stack {
  constructor(scope: App, id: string, props?: StackProps) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, "MyVpc", {
      maxAzs: 3 // Default is all AZs in region
    });

    const cluster = new ecs.Cluster(this, "MyCluster", {
      vpc: vpc
    });

    // Create a load-balanced Fargate service and make it public
    new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", {
      cluster: cluster, // Required
      cpu: 512, // Default is 256
      desiredCount: 6, // Default is 1
      taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") },
      memoryLimitMiB: 2048, // Default is 512
      publicLoadBalancer: true // Default is false
    });
  }
}
```

```
class MyEcsConstructStack extends Stack {
  constructor(scope, id, props) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, "MyVpc", {
      maxAzs: 3 // Default is all AZs in region
    });

    const cluster = new ecs.Cluster(this, "MyCluster", {
      vpc: vpc
    });

    // Create a load-balanced Fargate service and make it public
    new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", {
      cluster: cluster, // Required
      cpu: 512, // Default is 256
      desiredCount: 6, // Default is 1
      taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") },
      memoryLimitMiB: 2048, // Default is 512
      publicLoadBalancer: true // Default is false
    });
  }
}

module.exports = { MyEcsConstructStack }
```

```
class MyEcsConstructStack(Stack):

  def __init__(self, scope: Construct, id: str, **kwargs) -> None:
    super().__init__(scope, id, **kwargs)

    vpc = ec2.Vpc(self, "MyVpc", max_azs=3)     # default is all AZs in region

    cluster = ecs.Cluster(self, "MyCluster", vpc=vpc)

    ecs_patterns.ApplicationLoadBalancedFargateService(self, "MyFargateService",
      cluster=cluster,            # Required
      cpu=512,                    # Default is 256
      desired_count=6,            # Default is 1
      task_image_options=ecs_patterns.ApplicationLoadBalancedTaskImageOptions(
          image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")),
      memory_limit_mib=2048,      # Default is 512
      public_load_balancer=True)  # Default is False
```

```
public class MyEcsConstructStack extends Stack {

  public MyEcsConstructStack(final Construct scope, final String id) {
    this(scope, id, null);
  }

  public MyEcsConstructStack(final Construct scope, final String id,
      StackProps props) {
    super(scope, id, props);

    Vpc vpc = Vpc.Builder.create(this, "MyVpc").maxAzs(3).build();

    Cluster cluster = Cluster.Builder.create(this, "MyCluster")
            .vpc(vpc).build();

    ApplicationLoadBalancedFargateService.Builder.create(this, "MyFargateService")
            .cluster(cluster)
            .cpu(512)
            .desiredCount(6)
            .taskImageOptions(
                    ApplicationLoadBalancedTaskImageOptions.builder()
                            .image(ContainerImage
                                    .fromRegistry("amazon/amazon-ecs-sample"))
                            .build()).memoryLimitMiB(2048)
            .publicLoadBalancer(true).build();
  }
}
```

```
public class MyEcsConstructStack : Stack
{
    public MyEcsConstructStack(Construct scope, string id, IStackProps props=null) : base(scope, id, props)
    {
        var vpc = new Vpc(this, "MyVpc", new VpcProps
        {
            MaxAzs = 3
        });

        var cluster = new Cluster(this, "MyCluster", new ClusterProps
        {
            Vpc = vpc
        });

        new ApplicationLoadBalancedFargateService(this, "MyFargateService",
            new ApplicationLoadBalancedFargateServiceProps
        {
            Cluster = cluster,
            Cpu = 512,
            DesiredCount = 6,
            TaskImageOptions = new ApplicationLoadBalancedTaskImageOptions
            {
                Image = ContainerImage.FromRegistry("amazon/amazon-ecs-sample")
            },
            MemoryLimitMiB = 2048,
            PublicLoadBalancer = true,
        });
    }
}
```

```
func NewMyEcsConstructStack(scope constructs.Construct, id string, props *MyEcsConstructStackProps) awscdk.Stack {

	var sprops awscdk.StackProps

	if props != nil {
		sprops = props.StackProps
	}

	stack := awscdk.NewStack(scope, &id, &sprops)

	vpc := awsec2.NewVpc(stack, jsii.String("MyVpc"), &awsec2.VpcProps{
		MaxAzs: jsii.Number(3), // Default is all AZs in region
	})

	cluster := awsecs.NewCluster(stack, jsii.String("MyCluster"), &awsecs.ClusterProps{
		Vpc: vpc,
	})

	awsecspatterns.NewApplicationLoadBalancedFargateService(stack, jsii.String("MyFargateService"),
		&awsecspatterns.ApplicationLoadBalancedFargateServiceProps{
			Cluster:        cluster,           // required
			Cpu:            jsii.Number(512),  // default is 256
			DesiredCount:   jsii.Number(5),    // default is 1
			MemoryLimitMiB: jsii.Number(2048), // Default is 512
			TaskImageOptions: &awsecspatterns.ApplicationLoadBalancedTaskImageOptions{
				Image: awsecs.ContainerImage_FromRegistry(jsii.String("amazon/amazon-ecs-sample"), nil),
			},
			PublicLoadBalancer: jsii.Bool(true), // Default is false
		})

	return stack

}
```

Cette classe produit un AWS CloudFormation modèle de plus de 500 lignes. Le déploiement de l'application AWS CDK produit plus de 50 ressources des types suivants :
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html) 

## AWS Fonctionnalités du CDK
<a name="home-features"></a>

### Le AWS référentiel CDK GitHub
<a name="home-features-repo"></a>

Pour le GitHub dépôt officiel du AWS CDK, consultez [aws-cdk](https://github.com/aws/aws-cdk). Ici, vous pouvez soumettre [des problèmes](https://github.com/aws/aws-cdk/issues), consulter notre [licence](https://github.com/aws/aws-cdk/blob/main/LICENSE), suivre les [versions](https://github.com/aws/aws-cdk/releases), etc.

Le AWS CDK étant open source, l'équipe vous encourage à contribuer à en faire un outil encore meilleur. Pour plus de détails, consultez [Contributing to the AWS Cloud Development Kit (AWS CDK).](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md)

### La référence de l'API AWS CDK
<a name="home-features-api"></a>

La bibliothèque AWS CDK Construct permet APIs de définir votre application CDK et d'ajouter des constructions CDK à l'application. Pour plus d'informations, consultez la [référence de l'API AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html).

### Le modèle de programmation Construct
<a name="home-features-cpm"></a>

Le Construct Programming Model (CPM) étend les concepts du AWS CDK à d'autres domaines. Les autres outils utilisant le CPM incluent :
+  [CDK pour Terraform](https://www.terraform.io/docs/cdktf/index.html) () CDKtf
+  [CDK pour Kubernetes](https://cdk8s.io/) () CDK8s
+  [Projen](https://github.com/projen/projen), pour la construction de configurations de projets

### Le Construct Hub
<a name="home-features-hub"></a>

Le [Construct Hub](https://constructs.dev/) est un registre en ligne dans lequel vous pouvez trouver, publier et partager des bibliothèques de AWS CDK open source.

## Étapes suivantes
<a name="home-next"></a>

Pour commencer à utiliser le AWS CDK, voir [Commencer à utiliser le AWS CDK](getting-started.md).

## En savoir plus
<a name="home-learn"></a>

Pour en savoir plus sur le AWS CDK, consultez les rubriques suivantes :
+  **[Apprenez les concepts de base du AWS CDK — Concepts](core-concepts.md)** et termes importants pour le AWS CDK.
+ AWS Atelier **[CDK — Atelier](https://cdkworkshop.com/)** pratique pour apprendre et utiliser le AWS CDK.
+ AWS Modèles **[CDK — Collection open source de modèles](https://cdkpatterns.com/)** d'architecture AWS sans serveur, conçue pour le AWS CDK par des experts. AWS 
+ AWS Exemples de **[code CDK — GitHub référentiel d'exemples](https://github.com/aws-samples/aws-cdk-examples)** de projets AWS CDK.
+  **[cdk.dev](https://cdk.dev/)** — Hub géré par la communauté pour le AWS CDK, y compris un espace de travail communautaire. Slack
+  **[Awesome CDK](https://github.com/kalaiser/awesome-cdk)** — GitHub référentiel contenant une liste organisée de projets open source AWS CDK, de guides, de blogs et d'autres ressources.
+  **[AWS Constructions de solutions](https://aws.amazon.com/solutions/constructs/)** — Modèles d'infrastructure de configuration sous forme de code (IaC) approuvés qui peuvent facilement être assemblés dans des applications prêtes à être mises en production.
+  **[AWS Blog sur les outils](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-cloud-development-kit/)** de développement : articles de blog filtrés pour le AWS CDK.
+  **[AWS CDK sur Stack Overflow](https://stackoverflow.com/questions/tagged/aws-cdk)** — Questions marquées avec **aws-cdk** activé. Stack Overflow
+  **[AWS Tutoriel CDK pour AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-cdk.html)** — Tutoriel sur l'utilisation AWS du CDK avec l'environnement de développement AWS Cloud9.

Pour en savoir plus sur les sujets liés au AWS CDK, consultez les rubriques suivantes :
+  **[AWS CloudFormation concepts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html)** — Le AWS CDK étant conçu pour fonctionner AWS CloudFormation, nous vous recommandons d'apprendre et de comprendre les AWS CloudFormation concepts clés.
+  **[AWS Glossaire](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html)** — Définitions des principaux termes utilisés dans l'ensemble. AWS

Pour en savoir plus sur les outils liés au AWS CDK qui peuvent être utilisés pour simplifier le développement et le déploiement d'applications sans serveur, consultez les rubriques suivantes :
+  **[AWS Modèle d'application sans serveur](https://aws.amazon.com/serverless/sam/)** : outil de développement open source qui simplifie et améliore l'expérience de création et d'exécution d'applications sans serveur sur. AWS
+  **[AWS Chalice](https://github.com/aws/chalice)** — Un framework pour écrire des applications sans serveur en Python.