Ceci est le guide du AWS CDK développeur de la version 2. 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.
Dans cet exemple, nous vous montrons comment créer un AWS Fargate service exécuté sur un cluster Amazon Elastic Container Service (Amazon ECS) dirigé par un Application Load Balancer connecté à Internet à partir d'une image sur Amazon ECR.
Amazon ECS est un service de gestion de conteneurs rapide et hautement évolutif qui facilite son exécution, son arrêt et sa gestion Docker conteneurs sur un cluster. Vous pouvez héberger votre cluster sur une infrastructure sans serveur gérée par Amazon ECS en lançant vos services ou tâches à l'aide du type de lancement Fargate. Pour plus de contrôle, vous pouvez héberger vos tâches sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez à l'aide du type de EC2 lancement Amazon.
Dans cet exemple, nous lançons certains services en utilisant le type de lancement Fargate. Si vous avez utilisé le AWS Management Console pour créer un service Fargate, vous savez qu'il existe de nombreuses étapes à suivre pour accomplir cette tâche. AWS propose plusieurs didacticiels et rubriques de documentation qui vous guident dans la création d'un service Fargate, notamment :
Cet exemple crée un service Fargate similaire à l'aide du. AWS CDK
La structure Amazon ECS utilisée dans cet exemple vous aide à utiliser AWS les services en offrant les avantages suivants :
-
Configure automatiquement un équilibreur de charge.
-
Ouvre automatiquement un groupe de sécurité pour les équilibreurs de charge. Cela permet aux équilibreurs de charge de communiquer avec les instances sans avoir à créer explicitement un groupe de sécurité.
-
Ordonne automatiquement la dépendance entre le service et l'équilibreur de charge attaché à un groupe cible, où il AWS CDK applique l'ordre correct de création de l'écouteur avant la création d'une instance.
-
Configure automatiquement les données utilisateur pour dimensionner automatiquement les groupes. Cela crée la configuration correcte à laquelle associer un cluster AMIs.
-
Valide les combinaisons de paramètres à un stade précoce. Cela permet de détecter les AWS CloudFormation problèmes plus tôt, ce qui permet de gagner du temps de déploiement. Par exemple, en fonction de la tâche, il est facile de mal configurer les paramètres de mémoire. Auparavant, nous ne rencontrions aucune erreur tant que nous n'avions pas déployé notre application. Mais maintenant, ils AWS CDK peuvent détecter une mauvaise configuration et émettre une erreur lorsque nous synthétisons notre application.
-
Ajoute automatiquement des autorisations pour Amazon Elastic Container Registry (Amazon ECR) si nous utilisons une image provenant d'Amazon ECR.
-
Échelle automatiquement. Il AWS CDK fournit une méthode qui nous permet de dimensionner automatiquement les instances lorsque nous utilisons un EC2 cluster Amazon. Cela se produit automatiquement lorsque nous utilisons une instance dans un cluster Fargate.
En outre, cela AWS CDK empêche la suppression d'une instance lorsque le dimensionnement automatique tente d'arrêter une instance, alors qu'une tâche est en cours d'exécution ou est planifiée sur cette instance.
Auparavant, nous devions créer une fonction Lambda pour disposer de cette fonctionnalité.
-
Assure le support des actifs, afin que nous puissions déployer une source depuis notre machine vers Amazon ECS en une seule étape. Auparavant, pour utiliser une source d'application, nous devions effectuer plusieurs étapes manuelles, telles que le téléchargement sur Amazon ECR et la création d'un Docker image.
Important
Les ApplicationLoadBalancedFargateService
structures que nous utiliserons incluent de nombreux AWS
composants, dont certains ont des coûts non négligeables s'ils restent provisionnés dans notre AWS compte, même si nous ne les utilisons pas. Assurez-vous de nettoyer (cdk destroy) si vous suivez cet exemple.
Créer un projet CDK
Nous commençons par créer un projet CDK. Il s'agit d'un répertoire qui stocke notre AWS CDK code, y compris notre application CDK.
mkdir MyEcsConstruct cd MyEcsConstruct cdk init --language typescript
Ensuite, nous exécutons l'application et confirmons qu'elle crée une pile vide.
cdk synth
Création d'un service Fargate
Nous pouvons exécuter nos tâches de conteneur de deux manières différentes avec Amazon ECS :
-
Utilisez le type de
Fargate
lancement, dans lequel Amazon ECS gère les machines physiques sur lesquelles nos conteneurs s'exécutent pour nous. -
Utilisez le type de
EC2
lancement, où nous effectuons la gestion, par exemple en spécifiant le dimensionnement automatique.
Dans cet exemple, nous allons créer un service Fargate exécuté sur un cluster Amazon ECS, dirigé par un Application Load Balancer connecté à Internet.
Nous ajoutons les importations du module AWS Construct Library suivantes à notre fichier de pile :
Dossier : lib/my_ecs_construct-stack.ts
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as ecs_patterns from "aws-cdk-lib/aws-ecs-patterns";
Dans notre stack, nous ajoutons le code suivant :
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 true
});
Ensuite, nous validons notre code en exécutant ce qui suit pour synthétiser notre pile :
cdk synth
La pile est composée de centaines de lignes, nous ne la montrerons donc pas ici. La pile doit contenir une instance par défaut, un sous-réseau privé et un sous-réseau public pour les trois zones de disponibilité, ainsi qu'un groupe de sécurité.
Pour déployer la pile, nous exécutons les opérations suivantes :
cdk deploy
AWS CloudFormation affiche des informations sur les dizaines d'étapes qu'il effectue lors du déploiement de notre application.
Une fois le déploiement terminé, nous avons créé avec succès un service Amazon ECS basé sur Fargate pour exécuter un Docker image.
Nettoyage
En tant que bonne pratique de maintenance générale, et afin de minimiser les coûts inutiles, nous supprimons notre pile une fois terminée :
cdk destroy