View a markdown version of this page

déploiement cdk - AWS Kit de développement cloud (AWS CDK) v2

Il s'agit du guide du développeur 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.

déploiement cdk

Déployez une ou plusieurs piles AWS CDK dans votre AWS environnement.

Pendant le déploiement, la CLI CDK produira des indicateurs de progression similaires à ceux qui peuvent être observés depuis la AWS CloudFormation console.

Si l' AWS environnement n'est pas amorcé, seules les piles sans actifs et contenant des modèles synthétisés de moins de 51 200 octets seront déployées avec succès.

Usage

$ cdk deploy <arguments> <options>

Arguments

ID de pile CDK

L'ID de construction de la pile CDK de votre application à déployer.

Type : chaîne

Obligatoire : non

Options

Pour obtenir la liste des options globales qui fonctionnent avec toutes les commandes de l'interface de ligne de commande CDK, consultez la section Options Options globales globales.

--all <BOOLEAN>

Déployez toutes les piles dans votre application CDK.

Valeur par défaut : false

--asset-parallelism <BOOLEAN>

Spécifiez s'il faut créer et publier des ressources en parallèle.

--asset-prebuild <BOOLEAN>

Spécifiez s'il faut créer tous les actifs avant de déployer la première pile. Cette option est utile en cas d'échec des builds de Docker.

Valeur par défaut : true

--build-exclude, -E <ARRAY>

Ne reconstruisez pas l'actif avec l'ID indiqué.

Cette option peut être spécifiée plusieurs fois dans une seule commande.

Valeur par défaut : []

--change-set-name <STRING>

Le nom de l'ensemble de AWS CloudFormation modifications à créer.

Cette option n'est pas compatible avec --method='direct'.

--concurrency <NUMBER>

Déployez plusieurs piles en parallèle tout en tenant compte des dépendances entre les piles. Utilisez cette option pour accélérer les déploiements. Vous devez tout de même prendre en compte AWS CloudFormation toute autre limite de débit de AWS compte.

Fournissez un chiffre pour spécifier le nombre maximum de déploiements simultanés (si la dépendance le permet) à effectuer.

Valeur par défaut : 1

--exclusively, -e <BOOLEAN>

Déployez uniquement les piles demandées et n'incluez pas les dépendances.

--express <BOOLEAN>

Déployez à l'aide du mode CloudFormation express. Le mode Express permet des déploiements plus rapides CloudFormation en signalant les opérations de pile comme étant terminées dès que la configuration des ressources est CloudFormation appliquée. Toutefois, CloudFormation rapporte des succès sans attendre que les ressources se stabilisent. De plus, le mode express n'effectue pas de restauration automatiquement et laissera les piles en état d'échec en cas de problème. Pour activer la restauration automatique avec le mode express, incluez l' --rollback indicateur dans votre déploiement en mode express.

Pour plus d'informations, consultez le mode express dans le Guide de AWS CloudFormation l'utilisateur.

Note

Le mode Express n'attend pas la stabilisation pour signaler le succès et n'effectue pas de restauration automatique en cas d'échec. Nous ne recommandons pas le mode express pour les déploiements en production. Le mode Express est destiné aux déploiements itératifs que vous effectueriez lors du développement de votre application.

Valeur par défaut : false

--force, -f <BOOLEAN>

Lorsque vous déployez pour mettre à jour une pile existante, la CLI CDK compare le modèle et les balises de la pile déployée à la pile sur le point d'être déployée. Si aucune modification n'est détectée, la CLI CDK ignore le déploiement.

Pour modifier ce comportement et toujours déployer des piles, même si aucune modification n'est détectée, utilisez cette option.

Valeur par défaut : false

--help, -h <BOOLEAN>

Afficher les informations de référence relatives à la cdk deploy commande.

--hotswap <BOOLEAN>

Déploiements Hotswap pour un développement plus rapide. Cette option tente d'effectuer un déploiement plus rapide avec hotswap si possible. Par exemple, si vous modifiez le code d'une fonction Lambda dans votre application CDK, la CLI CDK mettra à jour la ressource directement via les API de service au lieu d'effectuer un déploiement. CloudFormation

Si la CLI CDK détecte des modifications qui ne prennent pas en charge l'échange à chaud, ces modifications seront ignorées et un message s'affichera. Si vous préférez effectuer un CloudFormation déploiement complet comme solution de repli, utilisez --hotswap-fallback plutôt.

La CLI CDK utilise vos AWS informations d'identification actuelles pour effectuer les appels d'API. Il n'assume pas les rôles de votre pile d'amorçage, même si l'indicateur de @aws-cdk/core:newStyleStackSynthesis fonctionnalité est défini sur. true Ces rôles ne disposent pas des autorisations nécessaires pour mettre à jour les AWS ressources directement, sans les utiliser CloudFormation. Pour cette raison, assurez-vous que vos informations d'identification concernent le même AWS compte des piles sur lesquelles vous effectuez des déploiements hotswap et qu'ils disposent des autorisations IAM nécessaires pour mettre à jour les ressources.

Le hotswapping est actuellement pris en charge pour les modifications suivantes :

  • Ressources de code (y compris les images Docker et le code en ligne), modifications de balises et modifications de configuration (seules les variables de description et d'environnement sont prises en charge) des fonctions Lambda.

  • Versions Lambda et modifications d'alias.

  • Changements de définition des machines à états AWS Step Functions.

  • Modifications des actifs de conteneurs des services Amazon ECS.

  • Modifications apportées aux actifs du site Web lors des déploiements de compartiments Amazon S3.

  • Changements de source et d'environnement des AWS CodeBuild projets.

  • Modifications du modèle de mappage VTL pour les AWS AppSync résolveurs et les fonctions.

  • Changements de schéma pour les API AWS AppSync GraphQL.

  • API REST, déploiement et modifications de méthode pour Amazon API Gateway.

  • Modifications apportées à l'API et à l'intégration pour Amazon API Gateway V2.

  • Changements de configuration des agents Amazon Bedrock.

  • Modifications de configuration d'Amazon Bedrock Runtime AgentCore

  • Changements de règles pour Amazon EventBridge.

  • Modifications de configuration des tables Amazon DynamoDB et des tables globales.

  • Changements de configuration des files d'attente Amazon SQS.

  • Alarme, alarme composite et modifications du tableau de bord pour Amazon CloudWatch.

L'utilisation de certaines fonctions CloudFormation intrinsèques est prise en charge dans le cadre d'un déploiement par échange à chaud. Il s’agit des licences suivantes :

  • Ref

  • Fn::GetAtt— Prise en charge partielle seulement, utilise une combinaison d'API Cloud Control et d'implémentations personnalisées. Consultez la liste des ressources prises en charge par l'API Cloud Control et cette implémentation pour obtenir la liste complète des ressources prises en charge.

  • Fn::ImportValue

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

Cette option est également compatible avec les piles imbriquées.

Note
  • Cette option introduit délibérément une dérive dans les CloudFormation piles afin d'accélérer les déploiements. Pour cette raison, ne l'utilisez qu'à des fins de développement. N'utilisez pas cette option pour vos déploiements de production.

  • Les valeurs par défaut de certains paramètres peuvent être différentes du paramètre hotswap. Par exemple, le pourcentage de santé minimum d'un service Amazon ECS sera actuellement fixé à0. Si cela se produit, examinez la source en conséquence.

  • Lorsque vous effectuez un CloudFormation déploiement après des déploiements par échange à chaud, utilisez cdk deploy --revert-drift pour déployer avec un ensemble de modifications tenant compte de la dérive et réconciliez toute dérive introduite par l'échange à chaud.

Valeur par défaut : false

--hotswap-fallback <BOOLEAN>

Cette option est similaire à--hotswap. La différence, c'est qu'il --hotswap-fallback sera reconduit pour effectuer un CloudFormation déploiement si un changement est détecté qui l'exige.

Pour plus d’informations sur cette option, consultez --hotswap.

Valeur par défaut : false

--ignore-no-stacks <BOOLEAN>

Effectuez un déploiement même si votre application CDK ne contient aucune pile.

Cette option est utile dans le scénario suivant : Il se peut que votre application comporte plusieurs environnements, tels que dev etprod. Lorsque vous démarrez le développement, il se peut que votre application de production ne dispose d'aucune ressource, ou que les ressources soient commentées. Cela entraînera une erreur de déploiement accompagnée d'un message indiquant que l'application n'a pas de piles. --ignore-no-stacksUtilisez-le pour contourner cette erreur.

Valeur par défaut : false

--import-existing-resources <BOOLEAN>

Importez des AWS CloudFormation ressources existantes non gérées depuis votre AWS compte.

Lorsque vous utilisez cette option, les ressources de votre AWS CloudFormation modèle synthétisé portant le même nom personnalisé que les ressources non gérées existantes du même compte seront importées dans votre pile.

Vous pouvez utiliser cette option pour importer des ressources existantes dans des piles nouvelles ou existantes.

Vous pouvez importer des ressources existantes et déployer de nouvelles ressources à l'aide de la même cdk deploy commande.

Pour en savoir plus sur les noms personnalisés, consultez la section Type de nom dans le Guide de AWS CloudFormation l'utilisateur.

Pour en savoir plus sur ce ImportExistingResources CloudFormation paramètre, voir AWS CloudFormation Simplifier l'importation de ressources avec un nouveau paramètre pour ChangeSets.

Pour plus d'informations sur l'utilisation de cette option, voir Importer des ressources existantes dans le référentiel aws-cdk-cli GitHub .

--logs <BOOLEAN>

Afficher Amazon CloudWatch Log dans la sortie standard (stdout) pour tous les événements provenant de toutes les ressources des piles sélectionnées.

Cette option est uniquement compatible avec--watch.

Valeur par défaut : true

--method, -m <STRING>

Configurez la méthode pour effectuer un déploiement.

  • change-set— Méthode par défaut. La CLI CDK crée un ensemble de CloudFormation modifications contenant les modifications qui seront déployées, puis effectue le déploiement.

  • direct— Ne créez pas d'ensemble de modifications. Appliquez plutôt la modification immédiatement. Cela est généralement plus rapide que la création d'un ensemble de modifications, mais vous perdez les détails de la progression du déploiement dans la sortie de l'interface de ligne de commande.

  • prepare-change-set— Créez un ensemble de modifications mais n'effectuez pas de déploiement. Cela est utile si vous disposez d'outils externes qui inspectent l'ensemble de modifications ou si vous disposez d'un processus d'approbation pour les ensembles de modifications. execute-change-setUtilisez-le pour exécuter l'ensemble de modifications préparé.

  • execute-change-set— Exécute un ensemble de modifications créé précédemment avecprepare-change-set. Le nom de l'ensemble de modifications est défini par défaut surcdk-deploy-change-set, ou vous pouvez spécifier un nom personnalisé avec--change-set-name.

Valeurs valides : change-set, direct, execute-change-set, prepare-change-set

Valeur par défaut : change-set

--notification-arns <ARRAY>

Les ARN des rubriques Amazon SNS qui CloudFormation notifieront les événements liés à la pile.

--outputs-file, -O <STRING>

Le chemin vers lequel les sorties de la pile des déploiements sont écrites.

Après le déploiement, les sorties de la pile seront écrites dans le fichier de sortie spécifié au format JSON.

Vous pouvez configurer cette option dans le cdk.json fichier du projet ou ~/.cdk.json sur votre machine de développement locale :

{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }

Si plusieurs piles sont déployées, les sorties sont écrites dans le même fichier de sortie, organisées par des clés représentant le nom de la pile.

--parameters <ARRAY>

Transmettez des paramètres supplémentaires à CloudFormation pendant le déploiement.

Cette option accepte un tableau au format suivant :STACK:KEY=VALUE.

  • STACK— Nom de la pile à laquelle associer le paramètre.

  • KEY— Le nom du paramètre de votre pile.

  • VALUE— La valeur à transmettre lors du déploiement.

Si aucun nom de pile n'est fourni, ou s'il * est fourni comme nom de pile, les paramètres seront appliqués à toutes les piles déployées. Si une pile n'utilise pas ce paramètre, le déploiement échouera.

Les paramètres ne se propagent pas aux piles imbriquées. Pour transmettre des paramètres à des piles imbriquées, utilisez la NestedStack construction.

Valeur par défaut : {}

--previous-parameters <BOOLEAN>

Utilisez les valeurs précédentes pour les paramètres existants.

Lorsque cette option est définie surfalse, vous devez spécifier tous les paramètres pour chaque déploiement.

Valeur par défaut : true

--progress <STRING>

Configurez la façon dont la CLI CDK affiche la progression du déploiement.

  • bar— Afficher les événements de déploiement de la pile sous forme de barre de progression, avec les événements relatifs à la ressource en cours de déploiement.

  • events— Fournissez un historique complet, y compris tous les CloudFormation événements.

Vous pouvez également configurer cette option dans le cdk.json fichier du projet ou ~/.cdk.json sur votre machine de développement locale :

{ "progress": "events" }

Valeurs valides : bar, events

Valeur par défaut : bar

--require-approval <STRING>

Spécifiez les modifications qui nécessitent une approbation manuelle.

  • any-change— Une approbation manuelle est requise pour toute modification de la pile.

  • broadening— Une approbation manuelle est requise si les modifications impliquent un élargissement des autorisations ou des règles des groupes de sécurité.

  • never— L'approbation n'est pas requise.

Valeurs valides : any-change, broadening, never

Valeur par défaut : broadening

--revert-drift

Utilisez un ensemble de modifications tenant compte de la dérive pour le déploiement. Cela crée un ensemble de modifications avec REVERT_DRIFT le mode CloudFormation de déploiement, qui détecte les ressources qui se sont éloignées de leurs définitions de modèle en raison de modifications hors bande et les ramène à l'état souhaité défini dans votre modèle.

Consultez la documentation de Cloudformation sur les ensembles de modifications sensibles à la dérive pour plus d'informations sur leur fonctionnement.

Valeur par défaut : false

--rollback | --no-rollback, -R

Pendant le déploiement, si une ressource ne parvient pas à être créée ou mise à jour, le déploiement reviendra au dernier état stable avant le retour de la CLI CDK. Toutes les modifications apportées jusqu'à cette date seront annulées. Les ressources créées seront supprimées et les mises à jour effectuées seront annulées.

Spécifiez cette option --no-rollback pour désactiver ce comportement. Si une ressource ne parvient pas à être créée ou mise à jour, la CLI CDK conservera les modifications apportées jusqu'à ce point et les retournera. Cela laissera votre déploiement dans un état d'échec et de pause. À partir de là, vous pouvez mettre à jour votre code et recommencer le déploiement. Cela peut être utile dans les environnements de développement où vous effectuez des itérations rapides.

Si un déploiement effectué --no-rollback échoue et que vous décidez d'annuler le déploiement, vous pouvez utiliser la cdk rollback commande. Pour plus d'informations, consultez cdk rollback.

Note

Avec--no-rollback, les déploiements qui entraînent des remplacements de ressources échoueront toujours. Vous ne pouvez utiliser cette valeur d'option que pour les déploiements qui mettent à jour ou créent de nouvelles ressources.

Valeur par défaut : --rollback

--toolkit-stack-name <STRING>

Le nom de la pile CDK Toolkit existante.

Par défaut, cdk bootstrap déploie une pile nommée CDKToolkit dans l' AWS environnement spécifié. Utilisez cette option pour donner un nom différent à votre pile Bootstrap.

La CLI CDK utilise cette valeur pour vérifier la version de votre pile d'amorçage.

--watch <BOOLEAN>

Observez en permanence les fichiers de projet CDK et déployez automatiquement les piles spécifiées lorsque des modifications sont détectées.

Cette option implique --hotswap par défaut.

Cette option possède une commande CDK CLI équivalente. Pour plus d'informations, consultez CDK Watch.

Exemples

Déployez la pile nommée MyStackName

$ cdk deploy MyStackName --app='node bin/main.js'

Déployez plusieurs piles dans une application

Utilisez cdk list pour répertorier vos piles :

$ cdk list CdkHelloWorldStack CdkStack2 CdkStack3

Pour déployer toutes les piles, utilisez l'--alloption suivante :

$ cdk deploy --all

Pour choisir les piles à déployer, indiquez les noms des piles en tant qu'arguments :

$ cdk deploy CdkHelloWorldStack CdkStack3

Déploiement de piles de pipelines

Permet cdk list d'afficher les noms des piles sous forme de chemins, en indiquant leur position dans la hiérarchie des pipelines :

$ cdk list PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService

Utilisez l'--alloption ou le caractère générique * pour déployer toutes les piles. Si vous avez une hiérarchie de piles telle que décrite ci-dessus --all et que * vous ne faites correspondre que les piles du niveau supérieur. Pour faire correspondre toutes les piles de la hiérarchie, utilisez**.

Vous pouvez combiner ces modèles. Ce qui suit permet de déployer toutes les piles de la Prod phase :

$ cdk deploy PipelineStack/Prod/**

Paramètres de transmission lors du déploiement

Définissez les paramètres de votre pile CDK. L'exemple suivant crée un paramètre nommé TopicNameParam pour une rubrique Amazon SNS :

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

Pour fournir une valeur de paramètre deparameterized, exécutez la commande suivante :

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

Vous pouvez remplacer les valeurs des paramètres à l'aide de --force cette option. Voici un exemple de remplacement du nom de rubrique d'un déploiement précédent :

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force

Écrire les sorties de la pile dans un fichier après le déploiement

Définissez les sorties dans votre fichier de pile CDK. Voici un exemple qui crée une sortie pour une fonction ARN :

const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });

Déployez la pile et écrivez les sorties pour outputs.json :

$ cdk deploy --outputs-file outputs.json

Voici un exemple de déploiement outputs.json après le déploiement :

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

Dans cet exemple, la clé FunctionArn correspond à l'ID logique de l'CfnOutputinstance.

Voici un exemple de déploiement outputs.json après le déploiement lorsque plusieurs piles sont déployées :

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

Modifier la méthode de déploiement

Pour déployer plus rapidement, sans utiliser d'ensembles de modifications, utilisez --method='direct' :

$ cdk deploy --method='direct'

Pour créer un ensemble de modifications sans le déployer, utilisez--method='prepare-change-set'. Par défaut, un ensemble de modifications nommé cdk-deploy-change-set sera créé. Si un précédent ensemble de modifications portant ce nom existe, il sera remplacé. Si aucune modification n'est détectée, un ensemble de modifications vide est tout de même créé.

Vous pouvez également donner un nom à votre ensemble de modifications. Voici un exemple :

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'