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.
Création de ressources Amazon ECS à l'aide du AWS CDK
AWS Cloud Development Kit (AWS CDK) Il s'agit d'un framework d'infrastructure en tant que code (IAC) que vous pouvez utiliser pour définir l'infrastructure AWS cloud en utilisant le langage de programmation de votre choix. Pour définir votre propre infrastructure de cloud, écrivez d'abord une application (dans l'un des langages pris en charge par le CDK) contenant une ou plusieurs piles. Ensuite, vous le synthétisez dans un AWS CloudFormation modèle et déployez vos ressources sur votre Compte AWS. Suivez les étapes décrites dans cette rubrique pour déployer un serveur Web conteneurisé avec Amazon Elastic Container Service (Amazon ECS) et on Fargate. AWS CDK
La bibliothèque AWS Construct, incluse dans le CDK, fournit des modules que vous pouvez utiliser pour modéliser les ressources Services AWS fournies. Pour les services populaires, la bibliothèque fournit des constructions organisées avec des valeurs par défaut intelligentes et les bonnes pratiques. L'un de ces modules, en particulier aws-ecs-patterns
, fournit des abstractions de haut niveau que vous pouvez utiliser pour définir votre service conteneurisé et toutes les ressources de support nécessaires en quelques lignes de code.
Cette rubrique utilise la construction ApplicationLoadBalancedFargateService
. Cette construction déploie un Amazon ECS service sur Fargate derrière un Application Load Balancer. Le module aws-ecs-patterns
inclut également des constructions qui utilisent un Network Load Balancer et s'exécutent sur Amazon EC2.
Avant de commencer cette tâche, configurez votre environnement de AWS CDK développement et installez-le AWS CDK en exécutant la commande suivante. Pour obtenir des instructions sur la configuration de votre environnement de AWS CDK développement, consultez Getting Started with the AWS CDK - Prérequis.
npm install -g aws-cdk
Note
Ces instructions supposent que vous utilisez la AWS CDK version 2.
Rubriques
Étape 1 : Configurez votre AWS CDK projet
Créez un répertoire pour votre nouvelle AWS CDK application et initialisez le projet.
Note
Le modèle AWS CDK d'application utilise le nom du répertoire du projet pour générer des noms pour les classes et les fichiers sources. Dans cet exemple, le répertoire est nommé hello-ecs
. Si vous utilisez un nom répertoire différent, votre application ne correspondra pas à ces instructions.
AWS CDK v2 inclut des constructions stables pour tous Services AWS dans un seul package appeléaws-cdk-lib
. Ce package est installé en tant que dépendance lorsque vous initialisez le projet. Lorsque vous travaillez avec certains langages de programmation, le package est installé lorsque vous créez le projet pour la première fois. Cette rubrique explique comment utiliser une construction Amazon ECS Patterns, qui fournit des abstractions de haut niveau pour travailler avec Amazon ECS. Ce module s'appuie sur les constructions Amazon ECS et d'autres constructions pour allouer les ressources nécessaires à votre application Amazon ECS.
Les noms que vous utilisez pour importer ces bibliothèques dans votre application CDK peuvent différer légèrement selon le langage de programmation que vous utilisez. À titre de référence, les noms suivants sont utilisés dans chaque langage de programmation CDK pris en charge.
Étape 2 : utilisez le AWS CDK pour définir un serveur Web conteneurisé sur Fargate
Utilisez l'image du conteneur amazon-ecs-sample
Dans le AWS CDK projet que vous avez créé, modifiez le fichier contenant la définition de la pile pour qu'il ressemble à l'un des exemples suivants.
Note
Une pile est une unité de déploiement. Toutes les ressources doivent se trouver dans une pile et toutes les ressources d'une pile sont déployées en même temps. Si une ressource ne parvient pas à se déployer, toutes les autres ressources déjà déployées sont annulées. Une AWS CDK application peut contenir plusieurs piles, et les ressources d'une pile peuvent faire référence aux ressources d'une autre pile.
Le court extrait précédent inclut les éléments suivants :
-
Le nom logique du service :
MyWebServer
. -
L'image du conteneur obtenue à partir de DockerHub :
amazon/amazon-ecs-sample
. -
D'autres informations pertinentes, telles que le fait que l'équilibreur de charge a une adresse publique et est accessible à partir d'Internet.
Cela AWS CDK créera toutes les ressources nécessaires au déploiement du serveur Web, y compris les ressources suivantes. Ces ressources ont été omises dans cet exemple.
-
Cluster Amazon ECS
-
Instances Amazon VPC et Amazon EC2
-
Groupe Auto Scaling
-
Application Load Balancer
-
Rôles et politiques IAM
Certaines ressources allouées automatiquement sont partagées par tous les Amazon ECS services définis dans la pile.
Enregistrez le fichier source, puis exécutez la commande cdk synth
dans le répertoire principal de l'application. AWS CDK Exécute l'application et synthétise un AWS CloudFormation modèle à partir de celle-ci, puis affiche le modèle. Le modèle est un fichier YAML d'environ 600 lignes. Le début du fichier est illustré ici. Votre modèle peut être différent de cet exemple.
Resources: MyWebServerLB3B5FD3AB: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: LoadBalancerAttributes: - Key: deletion_protection.enabled Value: "false" Scheme: internet-facing SecurityGroups: - Fn::GetAtt: - MyWebServerLBSecurityGroup01B285AA - GroupId Subnets: - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1Subnet3C273B99 - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2Subnet95FF715A Type: application DependsOn: - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1DefaultRouteFF4E2178 - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2DefaultRouteB1375520 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/Resource MyWebServerLBSecurityGroup01B285AA: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Automatically created Security Group for ELB HelloEcsStackMyWebServerLB06757F57 SecurityGroupIngress: - CidrIp: 0.0.0.0/0 Description: Allow from anyone on port 80 FromPort: 80 IpProtocol: tcp ToPort: 80 VpcId: Ref: EcsDefaultClusterMnL3mNNYNVpc7788A521 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/SecurityGroup/Resource # and so on for another few hundred lines
Pour déployer le service dans votre Compte AWS, exécutez la cdk deploy
commande dans le répertoire principal de votre application. Il vous est demandé d'approuver les politiques IAM AWS CDK générées.
Le déploiement prend plusieurs minutes au cours desquelles plusieurs ressources sont créées. AWS CDK Les dernières lignes de la sortie du déploiement incluent le nom d'hôte public de l'équilibreur de charge et l'URL de votre nouveau serveur web. Ce sont les suivants.
Outputs: HelloEcsStack.MyWebServerLoadBalancerDNSXXXXXXX = Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com HelloEcsStack.MyWebServerServiceURLYYYYYYYY = http://Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com
Étape 3 : Tester le service web
Copiez l'URL de la sortie de déploiement et collez-la dans votre navigateur web. Le message de bienvenue suivant provenant du serveur web s'affiche.
![Capture d'écran de l'exemple d'application Amazon ECS. La sortie indique que « Votre application s'exécute maintenant sur Amazon ECS ».](images/simple-php-app-congrats.png)
Étape 4 : Nettoyer
Une fois que vous avez terminé d'utiliser le serveur web, arrêtez le service à l'aide du CDK en exécutant la commande cdk destroy
dans le répertoire principal de votre application. Cela vous évite de subir des frais imprévus à l'future.
Étapes suivantes
Pour en savoir plus sur le développement d'une AWS infrastructure à l'aide de AWS CDK, consultez le guide du AWS CDK développeur.
Pour plus d'informations sur l'écriture d' AWS CDK applications dans la langue de votre choix, consultez les rubriques suivantes :
Pour plus d'informations sur les modules AWS Construct Library utilisés dans cette rubrique, consultez les aperçus des références AWS CDK d'API suivants.