AWS CDK référenceCLI - 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.

AWS CDK référenceCLI

L'interface de ligne de AWS Cloud Development Kit (AWS CDK) commande (AWS CDK CLI), également connue sous le nom de CDKToolkit, est le principal outil permettant d'interagir avec votre AWS CDK application. Il exécute votre application, interroge le modèle d'application que vous avez défini, produit et déploie les AWS CloudFormation modèles générés par le. AWS CDK Il fournit également d'autres fonctionnalités utiles pour créer et travailler avec AWS CDK des projets. Cette rubrique contient des informations sur les cas d'utilisation courants du CDKCLI.

CDKCLIIl est installé avec le Node Package Manager. Dans la plupart des cas, nous recommandons de l'installer globalement.

npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
Astuce

Si vous travaillez régulièrement avec plusieurs versions du AWS CDK, pensez à en installer une version correspondante CDK CLI dans des CDK projets individuels. Pour ce faire, omettez -g de le faire dans la npm install commande. Utilisez-le ensuite npx aws-cdk pour l'invoquer. Cela exécute la version locale s'il en existe une, puis revient à une version globale dans le cas contraire.

CDKCLIcommandes

Toutes les CDK CLI commandes commencent parcdk, qui est suivie d'une sous-commande (list,synthesize,deploy, etc.). Certaines sous-commandes ont une version plus courte (lssynth,, etc.) équivalente. Les options et les arguments suivent la sous-commande dans n'importe quel ordre.

Pour une description de tous les sous-commandes, options et arguments, consultezRéférence des commandes CLI AWS CDK.

Spécifier les options et leurs valeurs

Les options de ligne de commande commencent par deux tirets ()--. Certaines options fréquemment utilisées comportent des synonymes composés d'une seule lettre commençant par un seul trait d'union (par exemple, --app contient un synonyme-a). L'ordre des options dans une CDK CLI commande n'est pas important.

Toutes les options acceptent une valeur qui doit suivre le nom de l'option. La valeur peut être séparée du nom par un espace blanc ou par un signe égal=. Les deux options suivantes sont équivalentes.

--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack

Certaines options sont des drapeaux (booléens). Vous pouvez spécifier true ou false comme valeur. Si vous ne fournissez aucune valeur, la valeur est considérée comme étanttrue. Vous pouvez également préfixer le nom de l'option par no- « implicitement false ».

# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false

Quelques options, à savoir --context--parameters,--plugin,--tags, et--trust, peuvent être spécifiées plusieurs fois pour spécifier plusieurs valeurs. Ils sont considérés comme ayant été [array] saisis dans l'CDKCLIaide. Par exemple :

cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe

Aide intégrée

L'aide CDK CLI a été intégrée. Vous pouvez obtenir de l'aide générale concernant cet utilitaire ainsi qu'une liste des sous-commandes fournies en émettant :

cdk --help

Pour obtenir de l'aide concernant une sous-commande en particulier, par exempledeploy, spécifiez-la avant le --help drapeau.

cdk deploy --help

Problème cdk version lors de l'affichage de la version du CDKCLI. Fournissez ces informations lorsque vous demandez de l'aide.

Rapport de version

Pour mieux comprendre comment le AWS CDK est utilisé, les constructions utilisées par les AWS CDK applications sont collectées et signalées à l'aide d'une ressource identifiée commeAWS::CDK::Metadata. Cette ressource est ajoutée aux AWS CloudFormation modèles et peut être facilement consultée. Ces informations peuvent également être utilisées pour identifier les piles AWS à l'aide d'une structure présentant des problèmes de sécurité ou de fiabilité connus. Il peut également être utilisé pour contacter leurs utilisateurs avec des informations importantes.

Note

Avant la version 1.93.0, ils AWS CDK indiquaient les noms et les versions des modules chargés lors de la synthèse, au lieu des constructions utilisées dans la pile.

Par défaut, le AWS CDK signale l'utilisation de constructions dans les NPM modules suivants utilisés dans la pile :

  • AWS CDK module principal

  • AWS Construire des modules de bibliothèque

  • AWS Module Solutions Constructs

  • AWS Module du kit de déploiement de Render Farm

La AWS::CDK::Metadata ressource ressemble à ce qui suit.

CDKMetadata:
  Type: "AWS::CDK::Metadata"
  Properties:
    Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="

La Analytics propriété est une liste gzippée, codée en base64 et codée par préfixe des constructions de la pile.

Pour désactiver le reporting des versions, utilisez l'une des méthodes suivantes :

  • Utilisez la cdk commande avec l'--no-version-reportingargument pour désactiver une seule commande.

    cdk --no-version-reporting synth

    N'oubliez pas que CDK CLI les nouveaux modèles sont synthétisés avant le déploiement. Vous devez donc également --no-version-reporting ajouter des cdk deploy commandes.

  • versionReportingRéglé sur false dans ./cdk.json ou~/.cdk.json. Cela permet de se désinscrire, sauf si vous l'acceptez --version-reporting en spécifiant une commande individuelle.

    { "app": "...", "versionReporting": false }

Authentification avec AWS

Vous pouvez configurer l'accès programmatique aux AWS ressources de différentes manières, en fonction de l'environnement et de l' AWS accès dont vous disposez.

Pour choisir votre méthode d'authentification et la configurer pour le CDKCLI, voirConfigurez les informations d'identification de sécurité pour AWS CDKCLI.

L'approche recommandée pour les nouveaux utilisateurs qui se développent localement et qui ne disposent pas d'une méthode d'authentification de la part de leur employeur est la mise en place AWS IAM Identity Center. Cette méthode consiste à installer le AWS CLI pour faciliter la configuration et pour vous connecter régulièrement au portail AWS d'accès. Si vous choisissez cette méthode, votre environnement doit contenir les éléments suivants une fois que vous avez terminé la procédure d'authentification d'IAMIdentity Center décrite dans le guide de référence AWS SDKs and Tools :

  • Le AWS CLI, que vous utilisez pour démarrer une session de portail d' AWS accès avant d'exécuter votre application.

  • AWSconfigFichier partagé comportant un [default] profil avec un ensemble de valeurs de configuration pouvant être référencées à partir du AWS CDK. Pour connaître l'emplacement de ce fichier, reportez-vous à la section Emplacement des fichiers partagés dans le Guide de référence des outils AWS SDKs et.

  • Le config fichier partagé définit le regionparamètre. Cela définit l'CDKCLIutilisation AWS CDK et Région AWS l'utilisation par défaut pour les AWS demandes.

  • CDKCLIUtilise la configuration du fournisseur de SSO jetons du profil pour obtenir des informations d'identification avant d'envoyer des demandes à AWS. La sso_role_name valeur, qui est un IAM rôle lié à un ensemble d'autorisations IAM Identity Center, doit autoriser l'accès à l' AWS services utilisateur dans votre application.

    Le config fichier d'exemple suivant montre un profil par défaut configuré avec la configuration SSO du fournisseur de jetons. Le sso_session paramètre du profil fait référence à la sso-sessionsection nommée. La sso-session section contient les paramètres permettant de lancer une session sur le portail AWS d'accès.

    [default] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole region = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://provided-domain.awsapps.com/start sso_registration_scopes = sso:account:access

Démarrer une session sur le portail AWS d'accès

Avant d'y accéder AWS services, vous devez disposer d'une session active sur le portail d' AWS accès CDK CLI pour utiliser l'authentification IAM Identity Center afin de résoudre les informations d'identification. En fonction de la durée de votre session configurée, votre accès finira par expirer et une erreur d'authentification CDK CLI se produira. Exécutez la commande suivante dans le AWS CLI pour vous connecter au portail AWS d'accès.

aws sso login

Si la configuration de votre fournisseur de SSO jetons utilise un profil nommé au lieu du profil par défaut, la commande estaws sso login --profile NAME. Spécifiez également ce profil lors de l'émission de cdk commandes à l'aide de l'--profileoption ou de la variable d'AWS_PROFILEenvironnement.

Pour vérifier si vous avez déjà une session active, exécutez la AWS CLI commande suivante.

aws sts get-caller-identity

La réponse à cette commande doit indiquer le compte IAM Identity Center et l'ensemble d'autorisations configurés dans le config fichier partagé.

Note

Si vous disposez déjà d'une session active sur le portail AWS d'accès et que vous l'exécutezaws sso login, il ne vous sera pas demandé de fournir des informations d'identification.

Le processus de connexion peut vous demander d'autoriser l' AWS CLI accès à vos données. Étant donné que le AWS CLI est construit au-dessus du SDK pour Python, les messages d'autorisation peuvent contenir des variantes du botocore nom.

Spécifier la région et les autres configurations

Les CDK CLI besoins doivent connaître la AWS région dans laquelle vous effectuez le déploiement et comment vous authentifier. AWS Cela est nécessaire pour les opérations de déploiement et pour récupérer les valeurs de contexte lors de la synthèse. Ensemble, votre compte et votre région constituent l'environnement.

La région peut être spécifiée à l'aide de variables d'environnement ou dans des fichiers de configuration. Il s'agit des mêmes variables et fichiers utilisés par d'autres AWS outils tels que le AWS CLI et les divers AWS SDKs. CDKCLIIl recherche ces informations dans l'ordre suivant.

  • La variable d'AWS_DEFAULT_REGIONenvironnement.

  • Un profil nommé défini dans le AWS config fichier standard et spécifié à l'aide de l'--profileoption sur cdk les commandes.

  • [default]Section du AWS config fichier standard.

Outre la spécification de AWS l'authentification et d'une région dans la [default] section, vous pouvez également ajouter une ou plusieurs [profile NAME] sections, où NAME est le nom du profil. Pour plus d'informations sur les profils nommés, consultez la section Fichiers de configuration et d'informations d'identification partagés dans le guide de référence AWS SDKs et Tools.

Le AWS config fichier standard se trouve à l'emplacement ~/.aws/config (macOS/Linux) ou %USERPROFILE%\.aws\config (Windows). Pour plus de détails et d'autres emplacements, voir Emplacement des fichiers de configuration et d'identification partagés dans le guide de référence des outils AWS SDKs et

L'environnement que vous spécifiez dans votre AWS CDK application à l'aide de la env propriété de la pile est utilisé lors de la synthèse. Il est utilisé pour générer un AWS CloudFormation modèle spécifique à l'environnement et, lors du déploiement, il remplace le compte ou la région spécifié par l'une des méthodes précédentes. Pour de plus amples informations, veuillez consulter Environnements pour AWS CDK.

Note

Il AWS CDK utilise des informations d'identification provenant des mêmes fichiers source que les autres AWS outils etSDKs, y compris le AWS Command Line Interface. Cependant, ils AWS CDK peuvent se comporter quelque peu différemment de ces outils. Il utilise le AWS SDK for JavaScript dessous du capot. Pour plus de détails sur la configuration des informations d'identification pour le AWS SDK for JavaScript, consultez la section Configuration des informations d'identification.

Vous pouvez éventuellement utiliser l'option --role-arn (ou-r) pour spécifier le ARN IAM rôle à utiliser pour le déploiement. Ce rôle doit être assumé par le AWS compte utilisé.

Spécifiez la commande de l'application

De nombreuses fonctionnalités CDK CLI nécessitent la synthèse d'un ou AWS CloudFormation de plusieurs modèles, ce qui nécessite l'exécution de votre application. Il AWS CDK prend en charge les programmes écrits dans une variété de langues. Par conséquent, il utilise une option de configuration pour spécifier la commande exacte nécessaire pour exécuter votre application. Cette option peut être spécifiée de deux manières.

Tout d'abord, et le plus souvent, il peut être spécifié à l'aide de la app clé contenue dans le fichiercdk.json. Il se trouve dans le répertoire principal de votre AWS CDK projet. CDKCLIFournit une commande appropriée lors de la création d'un nouveau projet aveccdk init. Voici l'cdk.jsonextrait d'un nouveau TypeScript projet, par exemple.

{ "app": "npx ts-node bin/hello-cdk.ts" }

Les CDK CLI recherches se trouvent cdk.json dans le répertoire de travail actuel lorsque vous essayez d'exécuter votre application. Pour cette raison, vous pouvez garder un shell ouvert dans le répertoire principal de votre projet pour émettre des CDK CLI commandes.

Il recherche CDK CLI également la clé de l'application ~/.cdk.json (c'est-à-dire dans votre répertoire personnel) s'il ne la trouve pas dedans./cdk.json. L'ajout de la commande d'application ici peut être utile si vous travaillez habituellement avec CDK du code dans la même langue.

Si vous vous trouvez dans un autre répertoire, ou si vous souhaitez exécuter votre application à l'aide d'une commande autre que celle qui se cdk.json trouve dans, utilisez l'option --app (ou-a) pour la spécifier.

cdk --app "npx ts-node bin/hello-cdk.ts" ls

Lors du déploiement, vous pouvez également spécifier un répertoire contenant des assemblages cloud synthétiséscdk.out, tel que la valeur de--app. Les piles spécifiées sont déployées à partir de ce répertoire ; l'application n'est pas synthétisée.

Spécifier les piles

De nombreuses CDK CLI commandes (par exemplecdk deploy) fonctionnent sur les piles définies dans votre application. Si votre application ne contient qu'une seule pile, elle CDK CLI suppose que c'est elle que vous voulez dire si vous ne spécifiez pas de pile explicitement.

Dans le cas contraire, vous devez spécifier la ou les piles avec lesquelles vous souhaitez travailler. Vous pouvez le faire en spécifiant les piles souhaitées par ID individuellement sur la ligne de commande. Rappelez-vous que l'ID est la valeur spécifiée par le deuxième argument lorsque vous instanciez la pile.

cdk synth PipelineStack LambdaStack

Vous pouvez également utiliser des caractères génériques pour spécifier ceux IDs qui correspondent à un modèle.

  • ?correspond à n'importe quel caractère

  • *correspond à un nombre quelconque de caractères (*seul correspond à toutes les piles)

  • **correspond à tous les éléments d'une hiérarchie

Vous pouvez également utiliser l'--alloption pour spécifier toutes les piles.

Si votre application utilise des CDKpipelines, CDK CLI elle considère vos piles et vos étapes comme une hiérarchie. De plus, l'--alloption et le * joker correspondent uniquement aux piles de haut niveau. Pour faire correspondre toutes les piles, utilisez**. Également utilisé ** pour indiquer toutes les piles d'une hiérarchie particulière.

Lorsque vous utilisez des caractères génériques, placez le motif entre guillemets ou évitez les caractères génériques avec. \ Si ce n'est pas le cas, votre shell peut essayer d'étendre le modèle aux noms des fichiers du répertoire en cours. Au mieux, cela ne donnera pas les résultats escomptés ; au pire, vous pourriez déployer des piles dont vous n'aviez pas l'intention. Cela n'est pas strictement nécessaire sous Windows car cmd.exe cela n'étend pas les caractères génériques, mais c'est néanmoins une bonne pratique.

cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
Note

L'ordre dans lequel vous spécifiez les piles n'est pas nécessairement l'ordre dans lequel elles seront traitées. Ils tiennent CDK CLI compte des dépendances entre les piles lorsqu'il s'agit de décider de l'ordre dans lequel les traiter. Par exemple, supposons qu'une pile utilise une valeur produite par une autre (telle que celle ARN d'une ressource définie dans la deuxième pile). Dans ce cas, la deuxième pile est synthétisée avant la première en raison de cette dépendance. Vous pouvez ajouter des dépendances entre les piles manuellement à l'aide de la addDependency()méthode de la pile.

Bootstrap votre environnement AWS

Le déploiement de piles avec le CDK nécessite le provisionnement de AWS CDK ressources dédiées spéciales. La cdk bootstrap commande crée les ressources nécessaires pour vous. Vous n'avez besoin de démarrer que si vous déployez une pile qui nécessite ces ressources dédiées. Consultez AWS CDK bootstrap pour plus de détails.

cdk bootstrap

Si elle est émise sans argument, comme indiqué ici, la cdk bootstrap commande synthétise l'application actuelle et démarre les environnements dans lesquels ses piles seront déployées. Si l'application contient des piles indépendantes de l'environnement, qui ne spécifient pas explicitement d'environnement, le compte et la région par défaut sont démarrés, ou l'environnement est spécifié à l'aide de. --profile

En dehors d'une application, vous devez spécifier explicitement l'environnement à démarrer. Vous pouvez également le faire pour démarrer un environnement qui n'est pas spécifié dans votre application ou votre AWS profil local. Les informations d'identification doivent être configurées (par exemple dans~/.aws/credentials) pour le compte et la région spécifiés. Vous pouvez spécifier un profil contenant les informations d'identification requises.

cdk bootstrap ACCOUNT-NUMBER/REGION # e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
Important

Chaque environnement (combinaison compte/région) dans lequel vous déployez une telle pile doit être amorcé séparément.

Vous pouvez encourir des AWS frais pour ce que les ressources AWS CDK stockées dans les ressources amorcées sont susceptibles de vous être facturées. De plus, si vous l'utilisez-bootstrap-customer-key, une AWS KMS clé sera créée, ce qui entraîne également des frais par environnement.

Note

Les versions antérieures du modèle bootstrap créaient une KMS clé par défaut. Pour éviter les frais, redémarrez le fichier en utilisant. --no-bootstrap-customer-key

Note

CDKCLIv2 ne prend pas en charge le modèle bootstrap d'origine, surnommé le modèle hérité, utilisé par défaut avec la CDK v1.

Important

Le modèle bootstrap moderne accorde efficacement les autorisations implicites --cloudformation-execution-policies à n'importe quel AWS compte de la --trust liste. Par défaut, cela étend les autorisations de lecture et d'écriture à n'importe quelle ressource du compte bootstrap. Assurez-vous de configurer la pile d'amorçage avec des politiques et des comptes fiables avec lesquels vous êtes à l'aise.

Créez une nouvelle application

Pour créer une nouvelle application, créez un répertoire pour celle-ci, puis, dans le répertoire, publiezcdk init.

mkdir my-cdk-app cd my-cdk-app cdk init TEMPLATE --language LANGUAGE

Les langues prises en charge (LANGUAGE) sont :

Code

Langue

typescript

TypeScript

javascript

JavaScript

python

Python

java

Java

csharp

C#

TEMPLATE est un modèle facultatif. Si le modèle souhaité est app, le modèle par défaut, vous pouvez l'omettre. Les modèles disponibles sont les suivants :

Modèle

Description

app(par défaut)

Crée une AWS CDK application vide.

sample-app

Crée une AWS CDK application avec une pile contenant une SQS file d'attente Amazon et un SNS sujet Amazon.

Les modèles utilisent le nom du dossier du projet pour générer des noms pour les fichiers et les classes de votre nouvelle application.

Piles de listes

Pour afficher la liste des piles IDs de votre AWS CDK application, entrez l'une des commandes équivalentes suivantes :

cdk list cdk ls

Si votre application contient des piles de CDKpipelines, elle CDK CLI affiche les noms des piles sous forme de chemins en fonction de leur emplacement dans la hiérarchie des pipelines. (Par exemplePipelineStack,PipelineStack/Prod, etPipelineStack/Prod/MyService.)

Si votre application contient de nombreuses piles, vous pouvez spécifier une pile complète ou partielle IDs des piles à répertorier. Pour de plus amples informations, veuillez consulter Spécifier les piles.

Ajoutez le --long drapeau pour obtenir plus d'informations sur les piles, notamment les noms des piles et leur environnement (AWS compte et région).

Synthétiser des piles

La cdk synthesize commande (presque toujours abrégéesynth) synthétise une pile définie dans votre application dans un modèle. CloudFormation

cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
Note

Il exécute CDK CLI réellement votre application et synthétise de nouveaux modèles avant la plupart des opérations (par exemple lors du déploiement ou de la comparaison de piles). Ces modèles sont stockés par défaut dans le cdk.out répertoire. La cdk synth commande imprime simplement les modèles générés pour une ou plusieurs piles spécifiées.

Consultez toutes cdk synth --help les options disponibles. Quelques-unes des options les plus fréquemment utilisées sont abordées dans la section suivante.

Spécifier les valeurs de contexte

Utilisez l'-coption --context ou pour transmettre les valeurs du contexte d'exécution à votre CDK application.

# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack

Lors du déploiement de plusieurs piles, les valeurs de contexte spécifiées sont normalement transmises à chacune d'entre elles. Si vous le souhaitez, vous pouvez spécifier des valeurs différentes pour chaque pile en préfixant le nom de la pile par la valeur de contexte.

# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2

Spécifier le format d'affichage

Par défaut, le modèle synthétisé est affiché au YAML format. Ajoutez le --json drapeau pour l'afficher au JSON format à la place.

cdk synth --json MyStack

Spécifiez le répertoire de sortie

Ajoutez l'option --output (-o) pour écrire les modèles synthétisés dans un répertoire autre quecdk.out.

cdk synth --output=~/templates

Déployez des piles

La cdk deploy sous-commande déploie une ou plusieurs piles spécifiées sur votre compte. AWS

cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
Note

CDKCLIExécute ensuite votre application et synthétise de nouveaux AWS CloudFormation modèles avant de déployer quoi que ce soit. Par conséquent, la plupart des options de ligne de commande que vous pouvez utiliser cdk synth (par exemple,--context) peuvent également être utilisées aveccdk deploy.

Consultez toutes cdk deploy --help les options disponibles. Quelques-unes des options les plus utiles sont abordées dans la section suivante.

Ignorer la synthèse

La cdk deploy commande synthétise normalement les piles de votre application avant le déploiement afin de s'assurer que le déploiement reflète la dernière version de votre application. Si vous savez que vous n'avez pas modifié votre code depuis la dernière foiscdk synth, vous pouvez supprimer l'étape de synthèse redondante lors du déploiement. Pour ce faire, spécifiez le cdk.out répertoire de votre projet dans l'--appoption.

cdk deploy --app cdk.out StackOne StackTwo

Désactiver le rollback

AWS CloudFormation a la capacité d'annuler les modifications afin que les déploiements soient atomiques. Cela signifie qu'ils réussissent ou échouent dans leur ensemble. Le AWS CDK hérite de cette fonctionnalité car il synthétise et déploie AWS CloudFormation des modèles.

Le rollback garantit que vos ressources sont dans un état constant à tout moment, ce qui est vital pour les chaînes de production. Cependant, pendant que vous êtes encore en train de développer votre infrastructure, certaines défaillances sont inévitables, et l'annulation de déploiements échoués peut vous ralentir.

Pour cette raison, vous pouvez CDK CLI désactiver la restauration en ajoutant des éléments --no-rollback à votre cdk deploy commande. Avec cet indicateur, les déploiements ayant échoué ne sont pas annulés. Au lieu de cela, les ressources déployées avant la ressource défaillante restent en place, et le déploiement suivant commence par la ressource défaillante. Vous passerez beaucoup moins de temps à attendre les déploiements et beaucoup plus de temps à développer votre infrastructure.

Échange à chaud

Utilisez le --hotswap drapeau avec cdk deploy pour essayer de mettre à jour vos AWS ressources directement au lieu de générer un ensemble de AWS CloudFormation modifications et de le déployer. Le déploiement revient au AWS CloudFormation déploiement si le hot swap n'est pas possible.

Actuellement, le hot swapping prend en charge les fonctions Lambda, les machines d'état Step Functions et les images de conteneurs ECS Amazon. Le --hotswap drapeau désactive également le rollback (c'est-à-dire implique--no-rollback).

Important

L'échange à chaud n'est pas recommandé pour les déploiements de production.

Mode montre

Le CDK CLI mode « watch » (cdk deploy --watchou cdk watch en abrégé) surveille en permanence les fichiers source et les actifs de votre CDK application pour détecter les modifications. Il effectue immédiatement un déploiement des piles spécifiées lorsqu'une modification est détectée.

Par défaut, ces déploiements utilisent l'--hotswapindicateur, qui accélère le déploiement des modifications apportées aux fonctions Lambda. Cela revient également au déploiement AWS CloudFormation si vous avez modifié la configuration de l'infrastructure. Pour avoir cdk watch toujours effectué des AWS CloudFormation déploiements complets, ajoutez l'--no-hotswapindicateur àcdk watch.

Toutes les modifications apportées alors qu'un déploiement cdk watch est déjà en cours sont combinées en un seul déploiement, qui commence dès que le déploiement en cours est terminé.

Le mode Watch utilise la "watch" clé du projet cdk.json pour déterminer les fichiers à surveiller. Par défaut, ces fichiers sont les fichiers et les actifs de votre application, mais cela peut être modifié en modifiant les "exclude" entrées "include" et de la "watch" clé. Le cdk.json fichier suivant montre un exemple de ces entrées.

{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }

cdk watchexécute la "build" commande from cdk.json pour créer votre application avant la synthèse. Si votre déploiement nécessite des commandes pour créer ou empaqueter votre code Lambda (ou tout autre élément ne figurant pas dans votre CDK application), ajoutez-le ici.

Les caractères génériques de style Git, à la fois * et**, peuvent être utilisés dans les "watch" touches et. "build" Chaque chemin est interprété par rapport au répertoire parent decdk.json. La valeur par défaut include est**/*, c'est-à-dire tous les fichiers et répertoires du répertoire racine du projet. excludeest facultatif.

Important

Le mode Watch n'est pas recommandé pour les déploiements de production.

Spécifiez AWS CloudFormation les paramètres

Les CDK CLI supports spécifient AWS CloudFormation les paramètres lors du déploiement. Vous pouvez les fournir sur la ligne de commande en suivant le --parameters drapeau.

cdk deploy MyStack --parameters uploadBucketName=UploadBucket

Pour définir plusieurs paramètres, utilisez plusieurs --parameters indicateurs.

cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket

Si vous déployez plusieurs piles, vous pouvez spécifier une valeur différente pour chaque paramètre pour chaque pile. Pour ce faire, préfixez le nom du paramètre avec le nom de la pile et deux points. Dans le cas contraire, la même valeur est transmise à toutes les piles.

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket

Par défaut, le AWS CDK conserve les valeurs des paramètres des déploiements précédents et les utilise dans les déploiements ultérieurs si elles ne sont pas spécifiées explicitement. Utilisez l'--no-previous-parametersindicateur pour exiger que tous les paramètres soient spécifiés.

Spécifier le fichier de sorties

Si votre pile déclare AWS CloudFormation des sorties, celles-ci sont normalement affichées à l'écran à la fin du déploiement. Pour les écrire dans un fichier au JSON format, utilisez le --outputs-file drapeau.

cdk deploy --outputs-file outputs.json MyStack

Approuver les modifications liées à la sécurité

Pour vous protéger contre les modifications involontaires qui affectent votre posture de sécurité, le système vous CDK CLI invite à approuver les modifications liées à la sécurité avant de les déployer. Vous pouvez spécifier le niveau de modification qui doit être approuvé :

cdk deploy --require-approval LEVEL

LEVEL peut être l'une des suivantes :

Durée

Signification

never

L'approbation n'est jamais requise

any-change

Nécessite une approbation pour IAM toute security-group-related modification

broadening(par défaut)

Nécessite une approbation lorsque IAM des déclarations ou des règles de circulation sont ajoutées ; les suppressions ne nécessitent pas d'approbation

Le réglage peut également être configuré dans le cdk.json fichier.

{ "app": "...", "requireApproval": "never" }

Comparez les piles

La cdk diff commande compare la version actuelle d'une pile (et ses dépendances) définie dans votre application avec les versions déjà déployées ou avec un AWS CloudFormation modèle enregistré, et affiche une liste des modifications.

Stack HelloCdkStack
IAM Statement Changes
┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐
│   │ Resource                     │ Effect │ Action                       │ Principal                    │ Condition │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${Custom::S3AutoDeleteObject │ Allow  │ sts:AssumeRole               │ Service:lambda.amazonaws.com │           │
│   │ sCustomResourceProvider/Role │        │                              │                              │           │
│   │ .Arn}                        │        │                              │                              │           │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${MyFirstBucket.Arn}         │ Allow  │ s3:DeleteObject*             │ AWS:${Custom::S3AutoDeleteOb │           │
│   │ ${MyFirstBucket.Arn}/*       │        │ s3:GetBucket*                │ jectsCustomResourceProvider/ │           │
│   │                              │        │ s3:GetObject*                │ Role.Arn}                    │           │
│   │                              │        │ s3:List*                     │                              │           │
└───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐
│   │ Resource                                               │ Managed Policy ARN                                     │
├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/serv │
│   │ le}                                                    │ ice-role/AWSLambdaBasicExecutionRole"}                 │
└───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Parameters
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}

Resources
[+] AWS::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD
[+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E
[+] AWS::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092
[+] AWS::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F
[~] AWS::S3::Bucket MyFirstBucket MyFirstBucketB8884501
 ├─ [~] DeletionPolicy
 │   ├─ [-] Retain
 │   └─ [+] Delete
 └─ [~] UpdateReplacePolicy
     ├─ [-] Retain
     └─ [+] Delete

Pour comparer les stacks de votre application avec le déploiement existant :

cdk diff MyStack

Pour comparer les stacks de votre application avec un CloudFormation modèle enregistré, procédez comme suit :

cdk diff --template ~/stacks/MyStack.old MyStack

Importer des ressources existantes dans une pile

Vous pouvez utiliser la cdk import commande pour placer les ressources sous la gestion CloudFormation d'une AWS CDK pile particulière. Cela est utile si vous migrez vers des piles AWS CDK, si vous déplacez des ressources entre des piles ou si vous modifiez leur identifiant logique. cdk import Utilise des importations de CloudFormation ressources. Consultez la liste des ressources qui peuvent être importées ici.

Pour importer une ressource existante dans une AWS CDK pile, procédez comme suit :

  • Assurez-vous que la ressource n'est actuellement gérée par aucune autre CloudFormation pile. Si tel est le cas, définissez d'abord la politique de suppression sur la pile RemovalPolicy.RETAIN dans laquelle se trouve actuellement la ressource et effectuez un déploiement. Supprimez ensuite la ressource de la pile et effectuez un autre déploiement. Ce processus permet de s'assurer que la ressource n'est plus gérée CloudFormation mais ne la supprime pas.

  • Exécutez un cdk diff pour vous assurer qu'aucune modification n'est en attente dans la AWS CDK pile dans laquelle vous souhaitez importer des ressources. Les seules modifications autorisées lors d'une opération « d'importation » sont l'ajout de nouvelles ressources que vous souhaitez importer.

  • Ajoutez des structures pour les ressources que vous souhaitez importer dans votre pile. Par exemple, si vous souhaitez importer un compartiment Amazon S3, ajoutez quelque chose commenew s3.Bucket(this, 'ImportedS3Bucket', {});. N'apportez aucune modification à aucune autre ressource.

    Vous devez également vous assurer de modéliser exactement l'état actuel de la ressource dans la définition. Pour l'exemple du bucket, veillez à inclure AWS KMS les clés, les politiques de cycle de vie et tout autre élément pertinent concernant le bucket. Dans le cas contraire, les opérations de mise à jour suivantes risquent de ne pas donner les résultats escomptés.

    Vous pouvez choisir d'inclure ou non le nom du compartiment physique. Nous recommandons généralement de ne pas inclure de noms de AWS CDK ressources dans vos définitions de ressources afin de faciliter le déploiement de vos ressources à plusieurs reprises.

  • Exécutez cdk import STACKNAME.

  • Si les noms des ressources ne figurent pas dans votre modèle, vous CLI serez invité à transmettre les noms réels des ressources que vous importez. Ensuite, l'importation commence.

  • Lorsque cdk import les rapports indiquent un succès, la ressource est désormais gérée par AWS CDK et CloudFormation. Toute modification ultérieure que vous apporterez aux propriétés des ressources de votre AWS CDK application, la configuration de construction sera appliquée lors du prochain déploiement.

  • Pour vérifier que la définition de la ressource dans votre AWS CDK application correspond à l'état actuel de la ressource, vous pouvez démarrer une opération de détection de CloudFormation dérive.

Cette fonctionnalité ne prend actuellement pas en charge l'importation de ressources dans des piles imbriquées.

Configuration (cdk.json)

Les valeurs par défaut de nombreux indicateurs de ligne de CDK CLI commande peuvent être stockées dans cdk.json le fichier d'un projet ou dans le .cdk.json fichier de votre répertoire utilisateur. Vous trouverez ci-dessous une référence alphabétique aux paramètres de configuration pris en charge.

Clé Remarques CDKCLIoption
app Commande qui exécute l'CDKapplication. --app
assetMetadata Iffalse, CDK n'ajoute pas de métadonnées aux ressources qui utilisent des actifs. --no-asset-metadata
bootstrapKmsKeyId Remplace l'ID de la AWS KMS clé utilisée pour chiffrer le compartiment de déploiement Amazon S3. --bootstrap-kms-key-id
build Commande qui compile ou crée l'CDKapplication avant la synthèse. Non autorisé à entrer~/.cdk.json. --build
browser Commande permettant de lancer un navigateur Web pour la cdk docs sous-commande. --browser
context Consultez Les valeurs contextuelles et le AWS CDK. Les valeurs de contexte d'un fichier de configuration ne seront pas effacées parcdk context --clear. (Il CDK CLI place les valeurs de contexte mises en cache danscdk.context.json.) --context
debug Iftrue, CDK CLI émet des informations plus détaillées utiles pour le débogage. --debug
language Langage à utiliser pour initialiser les nouveaux projets. --language
lookups Si false aucune recherche de contexte n'est autorisée. La synthèse échouera si des recherches de contexte doivent être effectuées. --no-lookups
notices Sifalse, supprime l'affichage de messages concernant les failles de sécurité, les régressions et les versions non prises en charge. --no-notices
output Nom du répertoire dans lequel l'assemblage cloud synthétisé sera émis (par défaut"cdk.out"). --output
outputsFile Le fichier dans lequel AWS CloudFormation les sorties des piles déployées seront écrites (au JSON format). --outputs-file
pathMetadata Sifalse, les métadonnées du CDK chemin ne sont pas ajoutées aux modèles synthétisés. --no-path-metadata
plugin JSONtableau spécifiant les noms de packages ou les chemins locaux des packages qui étendent CDK --plugin
profile Nom du AWS profil par défaut utilisé pour spécifier la région et les informations d'identification du compte. --profile
progress S'il est défini sur"events", il CDK CLI affiche tous les AWS CloudFormation événements pendant le déploiement, plutôt qu'une barre de progression. --progress
requireApproval Niveau d'approbation par défaut pour les modifications de sécurité. Consultez Approuver les modifications liées à la sécurité. --require-approval
rollback Si false les déploiements ayant échoué ne sont pas annulés. --no-rollback
staging Si false les actifs ne sont pas copiés dans le répertoire de sortie (à utiliser pour le débogage local des fichiers source avec AWS SAM). --no-staging
tags JSONobjet contenant des balises (paires clé-valeur) pour la pile. --tags
toolkitBucketName Le nom du compartiment Amazon S3 utilisé pour déployer des actifs tels que les fonctions Lambda et les images de conteneur (voir. Bootstrap votre environnement AWS --toolkit-bucket-name
toolkitStackName Le nom de la pile bootstrap (voirBootstrap votre environnement AWS. --toolkit-stack-name
versionReporting Sifalse, désactive le rapport de version. --no-version-reporting
watch JSONcontenant un objet "include" et des "exclude" clés qui indiquent quels fichiers doivent (ou ne doivent pas) déclencher une reconstruction du projet en cas de modification. Consultez Mode montre. --watch