Déployer AWS CDK des applications - 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.

Déployer AWS CDK des applications

Un AWS Cloud Development Kit (AWS CDK) déploiement est le processus de mise en service de votre infrastructure. AWS

Comment fonctionnent les AWS CDK déploiements

Il AWS CDK utilise le AWS CloudFormation service pour effectuer des déploiements. Avant de déployer, vous synthétisez vos CDK piles. Cela crée un CloudFormation modèle et des artefacts de déploiement pour chaque CDK pile de votre application. Les déploiements sont initiés à partir d'une machine de développement locale ou d'un environnement d'intégration et de livraison continues (CI/CD). Pendant le déploiement, les ressources sont téléchargées vers les ressources bootstrap et le CloudFormation modèle est soumis pour CloudFormation provisionner vos AWS ressources.

Pour qu'un déploiement soit réussi, les éléments suivants sont requis :

  • L'interface de ligne de AWS CDK commande (AWS CDK CLI) doit être dotée d'autorisations valides.

  • L' AWS environnement doit être amorcé.

  • Ils AWS CDK doivent connaître les ressources d'amorçage dans lesquelles télécharger les actifs.

Conditions préalables aux déploiements CDK

Avant de déployer une AWS CDK application, vous devez effectuer les opérations suivantes :

  • Configurez les informations d'identification de sécurité pour CDKCLI.

  • Bootstrap votre AWS environnement.

  • Configurez un AWS environnement pour chacune de vos CDK piles.

  • Développez votre CDK application.

Configuration des informations d'identification de sécurité

Pour utiliser le CDK CLI pour interagir avec AWS, vous devez configurer les informations d'identification de sécurité sur votre ordinateur local. Pour obtenir des instructions, consultez Configurez les informations d'identification de sécurité pour AWS CDKCLI.

Bootstrap votre environnement AWS

Un déploiement est toujours associé à un ou plusieurs AWS environnements. Avant de procéder au déploiement, l'environnement doit d'abord être amorcé. Le bootstrap fournit les ressources de votre environnement que celui-ci CDK utilise pour effectuer et gérer les déploiements. Ces ressources incluent un bucket Amazon Simple Storage Service (Amazon S3) et un référentiel Amazon Elastic Container Registry (ECRAmazon) pour stocker et gérer les actifs. Ces ressources incluent également AWS Identity and Access Management (IAM) les rôles utilisés pour fournir des autorisations lors du développement et du déploiement.

Nous vous recommandons d'utiliser la AWS CDK commande Command Line Interface (AWS CDK CLI) cdk bootstrap pour démarrer votre environnement. Vous pouvez personnaliser le bootstrap ou créer manuellement ces ressources dans votre environnement si nécessaire. Pour obtenir des instructions, consultez Démarrez votre environnement pour l'utiliser avec AWS CDK.

Configuration AWS des environnements

Chaque CDK pile doit être associée à un environnement afin de déterminer où la pile est déployée. Pour obtenir des instructions, consultez Configurer les environnements à utiliser avec AWS CDK.

Développez votre CDK application

Dans le cadre d'un CDK projet, vous créez et développez votre CDK application. Dans votre application, vous créez une ou plusieurs CDK piles. Au sein de vos piles, vous importez et utilisez des constructions de la bibliothèque de AWS constructions pour définir votre infrastructure. Avant de pouvoir être déployée, votre CDK application doit contenir au moins une pile.

CDKsynthèse de l'application

Pour effectuer une synthèse, nous vous recommandons d'utiliser la CDK CLI cdk synth commande. La cdk deploy commande effectuera également une synthèse avant de lancer le déploiement. Cependant, en utilisantcdk synth, vous pouvez valider votre CDK application et détecter les erreurs avant de lancer le déploiement.

Le comportement de synthèse est déterminé par le synthétiseur de pile que vous configurez pour votre CDK pile. Si vous ne configurez pas de synthétiseur, il DefaultStackSynthesizer sera utilisé. Vous pouvez également configurer et personnaliser la synthèse en fonction de vos besoins. Pour obtenir des instructions, consultez Configuration et exécution de la synthèse des CDK piles.

Pour que votre CloudFormation modèle synthétisé soit déployé avec succès dans votre environnement, il doit être compatible avec la façon dont votre environnement a été amorcé. Par exemple, votre CloudFormation modèle doit spécifier le compartiment Amazon S3 approprié dans lequel déployer les actifs. Si vous utilisez la méthode par défaut pour amorcer votre environnement, le synthétiseur de pile par défaut fonctionnera. Si vous personnalisez CDK le comportement, par exemple la personnalisation du démarrage ou de la synthèse, le comportement de CDK déploiement peut varier.

Le cycle de vie des applications

Lorsque vous effectuez une synthèse, votre CDK application passe par les phases suivantes, connues sous le nom de cycle de vie de l'application :

Construction (ou initialisation)

Votre code instancie toutes les constructions définies, puis les lie entre elles. À ce stade, toutes les constructions (app, stacks et leurs constructions dérivées) sont instanciées et la chaîne de constructeurs est exécutée. La majeure partie du code de votre application est exécutée au cours de cette étape.

Préparation

Toutes les constructions qui ont implémenté la prepare méthode participent à une dernière série de modifications afin de définir leur état final. La phase de préparation se déroule automatiquement. En tant qu'utilisateur, vous ne recevez aucun commentaire concernant cette phase. Il est rare d'avoir besoin d'utiliser le crochet « Prepare », et ce n'est généralement pas recommandé. Soyez très prudent lorsque vous mutez l'arbre de construction au cours de cette phase, car l'ordre des opérations peut avoir un impact sur le comportement.

Au cours de cette phase, une fois que l'arbre de construction a été créé, tous les aspects que vous avez configurés sont également appliqués.

Validation

Toutes les constructions qui ont implémenté la validate méthode peuvent se valider pour s'assurer qu'elles sont dans un état permettant un déploiement correct. Vous serez informé de tout échec de validation survenant au cours de cette phase. En général, nous recommandons d'effectuer la validation dès que possible (généralement dès que vous recevez des informations) et de lancer des exceptions le plus tôt possible. La validation précoce améliore la fiabilité, car les traces de pile seront plus précises et garantiront que votre code peut continuer à s'exécuter en toute sécurité.

Synthèse

Il s'agit de la dernière étape de l'exécution de votre CDK application. Il est déclenché par un appel àapp.synth(), traverse l'arbre de construction et invoque la synthesize méthode sur toutes les constructions. Les constructions mises en œuvre synthesize peuvent participer à la synthèse et produire des artefacts de déploiement pour l'assemblage cloud qui en résulte. Ces artefacts incluent des CloudFormation modèles, des ensembles AWS Lambda d'applications, des fichiers et des Docker images, ainsi que d'autres artefacts de déploiement. Dans la plupart des cas, il n'est pas nécessaire d'implémenter la synthesize méthode.

Exécution de votre application

Les CDK CLI besoins de savoir comment exécuter votre CDK application. Si vous avez créé le projet à partir d'un modèle à l'aide de la cdk init commande, le cdk.json fichier de votre application inclut une app clé. Cette clé indique la commande nécessaire pour la langue dans laquelle l'application est écrite. Si votre langue nécessite une compilation, la ligne de commande exécute cette étape avant d'exécuter automatiquement l'application.

TypeScript
{ "app": "npx ts-node --prefer-ts-exts bin/my-app.ts" }
JavaScript
{ "app": "node bin/my-app.js" }
Python
{ "app": "python app.py" }
Java
{ "app": "mvn -e -q compile exec:java" }
C#
{ "app": "dotnet run -p src/MyApp/MyApp.csproj" }
Go
{ "app": "go mod download && go run my-app.go" }

Si vous n'avez pas créé votre projet à l'aide de CDKCLI, ou si vous souhaitez remplacer la ligne de commande indiquée danscdk.json, vous pouvez fournir l'--appoption lors de l'exécution de la cdk commande.

$ cdk --app 'executable' cdk-command ...

Le executable une partie de la commande indique la commande qui doit être exécutée pour exécuter votre CDK application. Utilisez les guillemets comme indiqué, car ces commandes contiennent des espaces. Le cdk-command est une sous-commande similaire à synth ou deploy qui indique CDK CLI ce que vous voulez faire avec votre application. Suivez cette procédure avec toutes les options supplémentaires nécessaires pour cette sous-commande.

Ils CDK CLI peuvent également interagir directement avec un assemblage cloud déjà synthétisé. Pour ce faire, transmettez le répertoire dans lequel l'assemblage cloud est stocké--app. L'exemple suivant répertorie les piles définies dans l'assemblage cloud stocké sous./my-cloud-assembly.

$ cdk --app ./my-cloud-assembly ls

Assemblages cloud

L'appel à app.synth() est ce qui indique AWS CDK au de synthétiser un assemblage cloud à partir d'une application. En général, vous n'interagissez pas directement avec les assemblages cloud. Il s'agit de fichiers contenant tout ce dont vous avez besoin pour déployer votre application dans un environnement cloud. Par exemple, il inclut un AWS CloudFormation modèle pour chaque pile de votre application. Il inclut également une copie de tous les fichiers ou Docker images auxquels vous faites référence dans votre application.

Consultez la spécification des assemblages cloud pour plus de détails sur le formatage des assemblages cloud.

Pour interagir avec l'assemblage cloud créé par votre AWS CDK application, vous utilisez généralement le AWS CDK CLI. Cependant, n'importe quel outil capable de lire le format d'assemblage du cloud peut être utilisé pour déployer votre application.

Déploiement de votre application

Pour déployer votre application, nous vous recommandons d'utiliser la CDK CLI cdk deploy commande pour lancer des déploiements ou pour configurer des déploiements automatisés.

Lorsque vous exécutezcdk deploy, les CDK CLI initient cdk synth pour préparer le déploiement. Le schéma suivant illustre le cycle de vie de l'application dans le contexte d'un déploiement :

Organigramme du cycle de vie de l' AWS CDK application.

Lors du déploiement, CDK CLI il prend l'assemblage cloud produit par synthèse et le déploie dans un AWS environnement. Les actifs sont chargés sur Amazon S3 et Amazon ECR et le CloudFormation modèle est soumis à des AWS CloudFormation fins de déploiement.

Au début de la phase de AWS CloudFormation déploiement, votre CDK application est déjà terminée et s'est terminée. Cela a les conséquences suivantes :

  • L'CDKapplication ne peut pas répondre aux événements qui se produisent pendant le déploiement, tels que la création d'une ressource ou la fin complète du déploiement. Pour exécuter du code pendant la phase de déploiement, vous devez l'injecter dans le AWS CloudFormation modèle en tant que ressource personnalisée. Pour plus d'informations sur l'ajout d'une ressource personnalisée à votre application, consultez le AWS CloudFormation module ou l'exemple de ressource personnalisée. Vous pouvez également configurer le module Triggers pour exécuter du code lors des déploiements.

  • Il se peut que l'CDKapplication doive fonctionner avec des valeurs qui ne peuvent pas être connues au moment de son exécution. Par exemple, si l' AWS CDK application définit un compartiment Amazon S3 avec un nom généré automatiquement et que vous récupérez l'attribut bucket.bucketName (Python :bucket_name), cette valeur n'est pas le nom du compartiment déployé. Au lieu de cela, vous obtenez une Token valeur. Pour déterminer si une valeur particulière est disponible, appelez cdk.isUnresolved(value) (Python :is_unresolved). Consultez Les jetons et le AWS CDK pour plus de détails.

Autorisations de déploiement

Avant que le déploiement puisse être effectué, les autorisations doivent être établies. Le schéma suivant illustre les autorisations utilisées lors d'un déploiement par défaut, lors de l'utilisation du processus d'amorçage par défaut et du synthétiseur de pile :

Organigramme du processus de AWS CDK déploiement par défaut.
L'acteur lance le déploiement

Les déploiements sont initiés par un acteur à l'aide du CDKCLI. Un acteur peut être soit une personne, soit un service tel que AWS CodePipeline.

Si nécessaire, ils CDK CLI s'exécutent cdk synth lorsque vous courezcdk deploy. Au cours de la synthèse, l' AWS identité suppose LookupRole d'effectuer des recherches de contexte dans l' AWS environnement.

Les autorisations sont établies

Tout d'abord, les informations de sécurité de l'acteur sont utilisées pour s'authentifier AWS et obtenir la première IAM identité du processus. Pour les acteurs humains, la manière dont les informations d'identification de sécurité sont configurées et obtenues dépend de la façon dont vous ou votre organisation gérez les utilisateurs. Pour de plus amples informations, veuillez consulter Configurez les informations d'identification de sécurité pour AWS CDKCLI. Pour les acteurs du service, par exemple CodePipeline, un rôle IAM d'exécution est assumé et utilisé.

Ensuite, les IAM rôles créés dans votre AWS environnement lors du démarrage sont utilisés pour établir des autorisations permettant d'effectuer les actions nécessaires au déploiement. Pour plus d'informations sur ces rôles et les raisons pour lesquelles ils accordent des autorisations, consultezIAMrôles créés lors du démarrage. Ce processus inclut les éléments suivants :

  • L' AWS identité assume le DeploymentActionRole rôle et le CloudFormationExecutionRole transmet CloudFormation, en veillant à ce qu'elle CloudFormation assume le rôle lorsqu'elle exécute des actions dans votre AWS environnement. DeploymentActionRoleaccorde l'autorisation d'effectuer des déploiements dans votre environnement et CloudFormationExecutionRole détermine les actions CloudFormation pouvant être effectuées.

  • L' AWS identité suppose leFilePublishingRole, qui détermine les actions qui peuvent être effectuées sur le compartiment Amazon S3 créé lors du démarrage.

  • L' AWS identité suppose leImagePublishingRole, qui détermine les actions qui peuvent être effectuées sur le ECR référentiel Amazon créé lors du démarrage.

  • Si nécessaire, l' AWS identité suppose d'LookupRoleeffectuer des recherches contextuelles dans l' AWS environnement. Cette action peut également être effectuée lors de la synthèse du modèle.

Le déploiement est effectué

Pendant le déploiement, CDK CLI lit le paramètre de version du bootstrap pour confirmer le numéro de version du bootstrap. AWS CloudFormation lit également ce paramètre au moment du déploiement pour le confirmer. Si les autorisations dans l'ensemble du flux de travail de déploiement sont valides, le déploiement est effectué. Les ressources sont téléchargées vers les ressources bootstrap et le CloudFormation modèle produit lors de la synthèse est déployé en utilisant le CloudFormation service en tant que CloudFormation pile pour provisionner vos ressources.