C'est le AWS Guide du développeur 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.
AWS Référence de la CLI CDK
Le AWS Kit de développement cloud (AWS CDK) Interface de ligne de commande (AWS CDK CLI), également connu sous le nom de CDK Toolkit, est le principal outil d'interaction avec votre AWS Application CDK. Il exécute votre application, interroge le modèle d'application que vous avez défini, puis produit et déploie le AWS CloudFormation modèles générés par AWS CDK. Il fournit également d'autres fonctionnalités utiles pour créer et utiliser AWS Projets CDK. Cette rubrique contient des informations sur les cas d'utilisation courants de la CLI CDK.
La CLI CDK est installée avec le Node Package Manager. Dans la plupart des cas, nous vous recommandons de l'installer dans le monde entier.
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, envisagez d'installer une version correspondante de la CLI CDK dans les projets CDK individuels. Pour ce faire, omettez -g à partir du npm install commande. Ensuite, utilisez npx aws-cdk pour l'invoquer. Cela exécute la version locale s'il en existe une, puis revient à une version globale si ce n'est pas le cas.
Commandes de la CLI CDK
Toutes les commandes de la CLI CDK commencent par cdk, qui est suivie d'une sous-commande (list, synthesize, deploy, etc.). Certaines sous-commandes ont une version plus courte (ls, synth, etc.) qui est équivalent. Les options et les arguments suivent la sous-commande dans n'importe quel ordre.
Pour une description de toutes les sous-commandes, options et arguments, voir AWS Référence des commandes de la CLI CDK.
Spécifier les options et leurs valeurs
Les options de ligne de commande commencent par deux tirets (--). Certaines options fréquemment utilisées ont des synonymes d'une seule lettre commençant par un seul tiret (par exemple, --app a un synonyme -a). L'ordre des options dans une commande CDK CLI 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 indicateurs (booléens). Vous pouvez spécifier true ou false en tant que valeur. Si vous ne fournissez pas de valeur, celle-ci est considérée comme étant true. Vous pouvez également préfixer le nom de l'option avec no- pour impliquer 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, peut être spécifié plusieurs fois pour spécifier plusieurs valeurs. Ceux-ci sont considérés comme ayant [array] saisissez l'aide de la CLI CDK. Par exemple :
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Built-in Aidez-moi
L'interface de ligne de commande CDK intègre une aide. Vous pouvez consulter l'aide générale sur l'utilitaire et la liste des sous-commandes fournies en émettant :
cdk --help
Pour consulter l'aide relative à une sous-commande particulière, par exemple deploy, spécifiez-le avant le --help drapeau.
cdk deploy --help
Problème cdk version pour afficher la version de la CLI CDK. Fournissez ces informations lorsque vous demandez de l'aide.
Rapports de version
Pour avoir un aperçu de la façon dont AWS CDK est utilisé, les constructions utilisées par AWS Les applications CDK sont collectées et signalées à l'aide d'une ressource identifiée comme AWS::CDK::Metadata. Pour en savoir plus, consultez Configurez AWS Rapports sur les données d'utilisation du CDK.
Authentification avec AWS
Il existe différentes manières de configurer l'accès par programmation à AWS ressources, en fonction de l'environnement et de la AWS accès mis à votre disposition.
Pour choisir votre méthode d'authentification et la configurer pour la CLI CDK, consultez Configurez les informations d'identification de sécurité pour AWS CLI CDK.
L'approche recommandée pour les nouveaux utilisateurs se développant localement, qui ne disposent pas d'une méthode d'authentification de la part de leur employeur, est de mettre en place AWS Centre d'identité IAM. Cette méthode inclut l'installation du AWS CLI pour faciliter la configuration et pour vous connecter régulièrement au AWS portail d'accès. Si vous choisissez cette méthode, votre environnement devrait contenir les éléments suivants une fois que vous aurez terminé la procédure pour Authentification IAM Identity Center dans le AWS Guide de référence des kits de développement logiciel et des outils:
-
Le AWS CLI, que vous utilisez pour démarrer un AWS accéder à la session du portail avant d'exécuter votre application.
-
UNE partagé AWS fichier de configuration ayant un
[default]profil avec un ensemble de valeurs de configuration pouvant être référencées à partir du AWS CDK. Pour trouver l'emplacement de ce fichier, voir Emplacement des fichiers partagés dans le AWS Guide de référence des kits de développement logiciel et des outils. -
Le partagé
configle fichier définit le région réglage. Cela définit la valeur par défaut AWS Région la AWS Utilisation du CDK et de la CLI CDK pour AWS demandes. -
La CLI CDK utilise le profil Configuration du fournisseur de jetons SSO pour obtenir des informations d'identification avant d'envoyer des demandes à AWS. Le
sso_role_namevalue, qui est un rôle IAM connecté à un ensemble d'autorisations IAM Identity Center, devrait autoriser l'accès au AWS services utilisés dans votre application.L'exemple suivant
configLe fichier affiche un profil par défaut configuré avec la configuration du fournisseur de jetons SSO. Le profilsso_sessionle paramètre fait référence au nomsso-sessionsection. Lesso-sessionla section contient les paramètres permettant de lancer un AWS session du portail 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émarrez un AWS session du portail d'accès
Avant d'accéder AWS services, vous avez besoin d'un AWS session du portail d'accès permettant à la CLI CDK d'utiliser l'authentification IAM Identity Center pour résoudre les informations d'identification. En fonction de la durée de votre session configurée, votre accès finira par expirer et la CLI CDK rencontrera une erreur d'authentification. Exécutez la commande suivante dans AWS CLI pour vous connecter au AWS portail d'accès.
aws sso login
Si la configuration de votre fournisseur de jetons SSO utilise un profil nommé au lieu du profil par défaut, la commande est aws sso login --profile <NAME>. Spécifiez également ce profil lors de l'émission cdk commandes à l'aide de --profile option ou AWS_PROFILE variable d'environnement.
Pour vérifier si vous avez déjà une session active, exécutez la commande suivante AWS Commande CLI.
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 fichier partagé config.
Note
Si vous possédez déjà un AWS accéder à la session du portail et exécuter aws sso login, vous n'aurez pas à fournir d'informations d'identification.
Le processus de connexion peut vous demander d'autoriser AWS Accès CLI à vos données. Depuis le AWS La CLI est construite sur le SDK pour Python, les messages d'autorisation peuvent contenir des variantes du botocore nom.
Spécifier la région et d'autres configurations
La CLI CDK doit connaître 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 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 que ceux utilisés par d'autres AWS des outils tels que AWS CLI et les différents AWS SDK. La CLI CDK recherche ces informations dans l'ordre suivant.
-
Variable d’environnement
AWS_DEFAULT_REGION. -
Un profil nommé défini dans la norme AWS
configfichier et spécifié à l'aide du--profileoption surcdkcommandes. -
Le
[default]section de la norme AWSconfigdossier.
Outre la spécification AWS authentification et une région dans le [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, voir Fichiers de configuration et d'informations d'identification partagés dans le AWS Guide de référence des kits de développement logiciel et des outils.
La norme AWS
config le fichier se trouve dans ~/.aws/config (macOS/Linux) ou %USERPROFILE%\.aws\config (Fenêtres). Pour plus de détails et pour d'autres emplacements, voir Emplacement des fichiers de configuration et d'informations d'identification partagés dans le AWS Guide de référence des kits de développement logiciel et des outils
L'environnement que vous spécifiez dans votre AWS Application CDK en utilisant la pile env propriété est utilisée lors de la synthèse. Il est utilisé pour générer un environnement spécifique AWS CloudFormation modèle, 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 plus d'informations, voir Environnements pour AWS CDK.
Note
Le AWS CDK utilise des informations d'identification provenant des mêmes fichiers source que les autres AWS outils et kits de développement logiciel, y compris les AWS Interface de ligne de commande. Cependant, le AWS Le CDK peut se comporter différemment de ces outils. Il utilise le AWS SDK pour JavaScript sous le capot. Pour plus de détails sur la configuration des informations d'identification pour AWS SDK pour JavaScript, voir Configuration des informations d'identification.
Vous pouvez éventuellement utiliser le --role-arn (ou -r) option pour spécifier l'ARN d'un rôle IAM qui doit être utilisé pour le déploiement. Ce rôle doit être assumé par AWS compte en cours d'utilisation.
Spécifiez la commande de l'application
De nombreuses fonctionnalités de la CLI CDK nécessitent une ou plusieurs AWS CloudFormation les modèles soient synthétisés, ce qui nécessite à son tour l'exécution de votre application. Le 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 app clé à l'intérieur du fichier cdk.json. Il se trouve dans le répertoire principal de votre AWS Projet CDK. La CLI CDK fournit une commande appropriée lors de la création d'un nouveau projet avec cdk init. Voici le cdk.json à partir d'un produit frais TypeScript projet, par exemple.
{ "app": "npx ts-node bin/hello-cdk.ts" }
La CLI CDK recherche cdk.json dans le répertoire de travail actuel lorsque vous tentez 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 commandes CDK CLI.
La CLI CDK recherche également la clé de l'application dans ~/.cdk.json (c'est-à-dire dans votre répertoire personnel) s'il ne le trouve pas dans ./cdk.json. L'ajout de la commande app ici peut être utile si vous travaillez habituellement avec du code CDK 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 de cdk.json, utilisez le --app (ou -a) option pour le 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és, tels que cdk.out, comme 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 commandes de la CLI CDK (par exemple, cdk deploy) fonctionnent sur des piles définies dans votre application. Si votre application ne contient qu'une seule pile, la CLI CDK suppose que vous voulez dire cette pile si vous ne spécifiez pas explicitement de pile.
Dans le cas contraire, vous devez spécifier la pile 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 des identifiants correspondant à un modèle.
-
?correspond à n'importe quel caractère -
*correspond à un nombre quelconque de caractères (*(à lui seul, correspond à toutes les piles) -
**correspond à tout ce qui se trouve dans une hiérarchie
Vous pouvez également utiliser --all option pour spécifier toutes les piles.
Si votre application utilise Canalisations CDK, la CLI CDK considère vos piles et vos étapes comme une hiérarchie. En outre, le --all option et * les caractères génériques ne correspondent qu'aux piles de haut niveau. Pour faire correspondre toutes les piles, utilisez **. Utilisez également ** pour indiquer toutes les piles selon 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 vous ne le faites pas, votre shell essaiera peut-être d'étendre le modèle aux noms des fichiers du répertoire actuel. Au mieux, cela ne donnera pas les résultats escomptés ; au pire, vous pourriez déployer des piles que vous n'aviez pas l'intention de déployer. Ce n'est pas strictement nécessaire sous Windows car cmd.exe n'étend pas les caractères génériques, mais c'est quand même 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. La CLI CDK prend en compte les dépendances entre les piles lorsqu'elle décide de l'ordre dans lequel les traiter. Par exemple, supposons qu'une pile utilise une valeur produite par une autre (comme l'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
addDependency()
méthode.
Bootstrap votre AWS environment
Le déploiement de piles à l'aide du CDK nécessite une assistance spéciale AWS Ressources CDK à approvisionner. Le cdk bootstrap la 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. Voir AWS Démarrage du CDK pour plus de détails.
cdk bootstrap
S'il est émis sans argument, comme illustré ici, le cdk bootstrap La 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 par défaut et la région 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 dans votre environnement local AWS profil. 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 (account/region combinaison) sur laquelle vous déployez une telle pile doivent être démarrées séparément.
Vous pouvez encourir AWS frais pour lesquels AWS Le CDK stocke dans les ressources bootstrapées. De plus, si vous utilisez --bootstrap-customer-key, et AWS Une clé KMS sera créée, ce qui entraîne également des frais par environnement.
Note
Les versions précédentes du modèle bootstrap créaient une clé KMS par défaut. Pour éviter les frais, redémarrez le strap en utilisant --no-bootstrap-customer-key.
Note
CDK CLI v2 ne prend pas en charge le modèle de bootstrap d'origine, surnommé le modèle legacy, utilisé par défaut avec CDK v1.
Important
Le modèle bootstrap moderne accorde efficacement les autorisations impliquées par --cloudformation-execution-policies à n'importe quel AWS compte dans le --trust liste. Par défaut, cela étend les autorisations de lecture et d'écriture sur n'importe quelle ressource du compte bootstrapped. 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, lancez cdk init.
mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>
Les langues prises en charge (<LANGUAGE>) sont les suivantes :
| Code | Language |
|---|---|
|
|
TypeScript |
|
|
JavaScript |
|
|
Python |
|
|
Java |
|
|
C# |
|
|
Go |
<TEMPLATE>est un modèle facultatif. Si le modèle souhaité est appli, la valeur par défaut, vous pouvez l'omettre. Les modèles disponibles sont les suivants :
| Modèle | Description |
|---|---|
|
|
Crée un espace vide AWS Application CDK. |
|
|
Crée un AWS Application CDK avec une pile contenant une file d'attente Amazon SQS et une rubrique Amazon SNS. |
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.
Répertorier les piles
Pour voir la liste des identifiants des piles dans votre AWS Application CDK, entrez l'une des commandes équivalentes suivantes :
cdk list cdk ls
Si votre candidature contient Canalisations CDK piles, la CLI CDK affiche les noms des piles sous forme de chemins en fonction de leur emplacement dans la hiérarchie des pipelines. (Par exemple, PipelineStack, PipelineStack/Prod, et PipelineStack/Prod/MyService).
Si votre application contient de nombreuses piles, vous pouvez spécifier les ID de pile complets ou partiels des piles à répertorier. Pour plus d'informations, voir Spécifier les piles.
Ajoutez le --long drapeau pour voir plus d'informations sur les piles, y compris les noms des piles et leurs environnements (AWS compte et région).
Synthétiser des piles
Le cdk synthesize commande (presque toujours abrégée) synth) synthétise une pile définie dans votre application en CloudFormation modèle.
cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
Note
La CLI CDK exécute 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 cdk.out annuaire. Le cdk synth La commande imprime simplement les modèles générés pour une ou plusieurs piles spécifiées.
Voir cdk synth --help pour toutes 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 le --context ou -c possibilité de passer contexte d'exécution valeurs de votre application CDK.
# 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 à toutes. Si vous le souhaitez, vous pouvez spécifier des valeurs différentes pour chaque pile en préfixant le nom de la pile à 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 format YAML. Ajoutez le --json drapeau pour l'afficher au format JSON à la place.
cdk synth --json MyStack
Spécifiez le répertoire de sortie
Ajoutez le --output (-o) option pour écrire les modèles synthétisés dans un répertoire autre que cdk.out.
cdk synth --output=~/templates
Déployez des piles
Le cdk deploy la sous-commande déploie une ou plusieurs piles spécifiées sur votre AWS compte.
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
Note
La CLI CDK exécute votre application et synthétise de nouvelles données AWS CloudFormation modèles avant de déployer quoi que ce soit. Par conséquent, la plupart des options de ligne de commande peuvent être utilisées avec cdk synth (par exemple, --context) peut également être utilisé avec cdk deploy.
Voir cdk deploy --help pour toutes les options disponibles. Quelques-unes des options les plus utiles sont abordées dans la section suivante.
Ignorer la synthèse
Le cdk deploy La commande synthétise normalement les piles de votre application avant le déploiement pour 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 votre dernier cdk synth, vous pouvez supprimer l'étape de synthèse redondante lors du déploiement. Pour ce faire, précisez le nom de votre projet cdk.out répertoire dans le --app option.
cdk deploy --app cdk.out StackOne StackTwo
Désactiver la restauration
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 capacité car il synthétise et déploie AWS CloudFormation modèles.
La restauration garantit que vos ressources sont dans un état constant à tout moment, ce qui est vital pour les piles de production. Cependant, pendant que vous êtes encore en train de développer votre infrastructure, certaines défaillances sont inévitables, et l'annulation des déploiements ayant échoué peut vous ralentir.
Pour cette raison, la CLI CDK vous permet de désactiver la restauration en ajoutant --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 avec 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 votre AWS ressources directement au lieu de générer un AWS CloudFormation ensemble de modifications et déploiement de celui-ci. Le déploiement revient à AWS CloudFormation déploiement si l'échange à chaud n'est pas possible.
Actuellement, le hot swapping prend en charge les fonctions Lambda, les machines à états Step Functions et les images de conteneurs Amazon ECS. Le --hotswap le drapeau désactive également le rollback (c'est-à-dire qu'il implique --no-rollback).
Important
Hot-swapping n'est pas recommandé pour les déploiements en production.
Mode montre
Le mode veille de la CLI CDK (cdk deploy --watch, ou cdk watch en bref) surveille en permanence les fichiers sources et les actifs de votre application CDK pour détecter les modifications. Il effectue immédiatement un déploiement des piles spécifiées lorsqu'un changement est détecté.
Par défaut, ces déploiements utilisent --hotswap flag, qui accélère le déploiement des modifications apportées aux fonctions Lambda. Il revient également au déploiement via AWS CloudFormation si vous avez modifié la configuration de l'infrastructure. Avoir cdk watch toujours exécuter à fond AWS CloudFormation déploiements, ajoutez le --no-hotswap drapeau pour cdk watch.
Toutes les modifications apportées pendant cdk watch effectue déjà un déploiement sont combinés en un seul déploiement, qui commence dès que le déploiement en cours est terminé.
Le mode montre utilise "watch" clé de voûte 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 le "include" et "exclude" entrées dans "watch" clé. Les suivants cdk.json Le fichier montre un exemple de ces entrées.
{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }
cdk watch exécute le "build" commande depuis 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 qui ne figure pas dans votre application CDK), ajoutez-le ici.
Git-style caractères génériques, les deux * et **, peut être utilisé dans "watch" et "build" clés. Chaque chemin est interprété par rapport au répertoire parent de cdk.json. La valeur par défaut de include est **/*, c'est-à-dire tous les fichiers et répertoires du répertoire racine du projet. exclude est facultatif.
Important
Le mode Watch n'est pas recommandé pour les déploiements en production.
Spécifiez AWS CloudFormation paramètres
La CLI CDK permet de spécifier AWS CloudFormation paramètres lors du déploiement. Vous pouvez les fournir sur la ligne de commande en suivant --parameters drapeau.
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Pour définir plusieurs paramètres, utilisez plusieurs --parameters drapeaux.
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. Sinon, la même valeur est transmise à toutes les piles.
cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket
Par défaut, AWS CDK conserve les valeurs des paramètres des déploiements précédents et les utilise dans les déploiements ultérieurs s'ils ne sont pas spécifiés explicitement. Utilisez le --no-previous-parameters drapeau pour exiger que tous les paramètres soient spécifiés.
Spécifier le fichier de sorties
Si votre stack déclare AWS CloudFormation sorties, celles-ci sont normalement affichées à l'écran à la fin du déploiement. Pour les écrire dans un fichier au format JSON, utilisez --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 susceptibles d'affecter votre niveau de sécurité, la CLI CDK vous invite par défaut à approuver les modifications liées à la sécurité avant de les déployer. Vous pouvez spécifier le niveau de modification qui nécessite une approbation :
cdk deploy --require-approval <LEVEL>
<LEVEL>, les valeurs suivantes sont possibles :
| Durée | Signification |
|---|---|
|
|
L'approbation n'est jamais requise |
|
|
Nécessite une approbation pour toute modification de la pile |
|
|
Nécessite une approbation si les modifications impliquent un élargissement des autorisations ou des règles des groupes de sécurité |
Le réglage peut également être configuré dans cdk.json dossier.
{ "app": "...", "requireApproval": "never" }
Comparez les piles
Le cdk diff la 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 une AWS CloudFormation modèle, 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 piles de votre application avec le déploiement existant, procédez comme suit :
cdk diff MyStack
Pour comparer les piles de votre application avec celles enregistrées CloudFormation modèle :
cdk diff --template ~/stacks/MyStack.old MyStack
Importer des ressources existantes dans une pile
Vous pouvez utiliser le cdk import commande pour placer les ressources sous la gestion de CloudFormation pour un particulier AWS Pile CDK. Ceci est utile si vous migrez vers AWS CDK, ou déplacent des ressources entre les piles ou modifient leur identifiant logique. cdk import les usages CloudFormation importations de ressources. Consultez les liste des ressources qui peuvent être importées ici.
Pour importer une ressource existante dans AWS Pile CDK, suivez les étapes suivantes :
-
Assurez-vous que la ressource n'est actuellement gérée par aucun autre CloudFormation empiler. Si c'est le cas, définissez d'abord la politique de suppression sur
RemovalPolicy.RETAINdans la pile 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 permettra de s'assurer que la ressource n'est plus gérée par CloudFormation mais ne le supprime pas. -
Exécutez un
cdk diffpour vous assurer qu'aucune modification n'est en attente AWS Pile CDK 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 constructions pour les ressources que vous souhaitez importer dans votre pile. Par exemple, si vous souhaitez importer un compartiment Amazon S3, ajoutez quelque chose comme
new 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 seau, veillez à inclure AWS Les clés KMS, les politiques relatives au cycle de vie et tout autre élément pertinent concernant le bucket. Dans le cas contraire, les opérations de mise à jour ultérieures risquent de ne pas donner les résultats escomptés.
Vous pouvez choisir d'inclure ou non le nom physique du compartiment. Nous vous recommandons généralement de ne pas inclure de noms de ressources dans votre AWS Définitions des ressources CDK 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, l'interface de ligne de commande vous invite à transmettre les noms réels des ressources que vous importez. Ensuite, l'importation commence.
-
Quand
cdk importrapporte 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 dans votre AWS Application CDK, 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 L'application CDK correspond à l'état actuel de la ressource, vous pouvez démarrer un CloudFormation opération de détection de 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 commande de la CLI CDK peuvent être stockées dans le cdk.json fichier ou dans le .cdk.json fichier dans votre répertoire utilisateur. Vous trouverez ci-dessous une référence alphabétique aux paramètres de configuration pris en charge.
| Clé | Remarques | Option CLI CDK |
|---|---|---|
|
|
Commande qui exécute l'application CDK. |
|
|
|
Si |
|
|
|
Remplace l'ID du AWS Clé KMS utilisée pour chiffrer le compartiment de déploiement Amazon S3. |
|
|
|
Commande qui compile ou génère l'application CDK avant la synthèse. Non autorisé dans |
|
|
|
La commande permettant de lancer un navigateur Web pour le |
|
|
|
Voir Valeurs contextuelles et AWS CDK. Les valeurs de contexte d'un fichier de configuration ne seront pas effacées par |
|
|
|
Si |
|
|
|
Le langage à utiliser pour initialiser de nouveaux projets. |
|
|
|
Si |
|
|
|
Si |
|
|
|
Le nom du répertoire dans lequel l'assemblage cloud synthétisé sera émis (par défaut). |
|
|
|
Le fichier vers lequel AWS CloudFormation les sorties des piles déployées seront écrites (en |
|
|
|
Si |
|
|
|
Tableau JSON spécifiant les noms de packages ou les chemins locaux des packages qui étendent le CDK |
|
|
|
Nom de la valeur par défaut AWS profil utilisé pour spécifier les informations d'identification de la région et du compte. |
|
|
|
Si réglé sur |
|
|
|
Niveau d'approbation par défaut pour les modifications nécessitant une approbation manuelle. Voir Approuver les modifications liées à la sécurité. |
|
|
|
Si |
|
|
|
Si |
|
|
|
|
|
|
|
Le nom du compartiment Amazon S3 utilisé pour déployer des actifs tels que des fonctions Lambda et des images de conteneurs (voir Bootstrap votre AWS environnement). |
|
|
|
Le nom de la pile bootstrap (voir Bootstrap votre AWS environnement). |
|
|
|
Si |
|
|
|
Objet JSON contenant |
|