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 CLI des connecteurs
L'interface AWS Cloud Development Kit (AWS CDK) de ligne de commande (AWS CDK CLI), également connu sous le nom de CDK Toolkit, est le principal outil d'interaction 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 CDK CLI.
L'interface CDK CLI 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 à installer une version correspondante du CDK CLI dans le cadre de 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.
CDK CLI commands
Tous CDK CLI les commandes commencent parcdk
, qui est suivie d'une sous-commande (list
,synthesize
,deploy
, etc.). Certaines sous-commandes ont une version plus courte (ls
synth
,, 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, consultezAWS CDK CLI Référence des commandes .
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 un CDK CLI le commandement 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 notés comme ayant du [array]
type dans CDK CLI aider. Par exemple :
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Aide intégrée
L'interface CDK CLI dispose d'une aide 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 lié cdk version
à l'affichage de la version du CDK CLI. Fournissez ces informations lorsque vous demandez de l'aide.
Rapport sur les versions
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 de base
-
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.
Se désinscrire des rapports de version
Vous pouvez désactiver le signalement des versions en utilisant le CDK CLI ou en configurant le cdk.json
fichier de votre projet.
Pour désactiver les rapports de version à l'aide du CDK CLI
-
Utilisez l'
--no-version-reporting
option avec n'importe quel CDK CLI commande permettant de ne pas recevoir une seule commande. Voici un exemple de désinscription lors de la synthèse du modèle :$
cdk synth --no-version-reporting
Étant donné que AWS CDK les modèles synthétisent automatiquement lorsque vous exécutez
cdk deploy
, vous devez également les utiliser--no-version-reporting
avec lacdk deploy
commande.
Pour désactiver les rapports de version en configurant le cdk.json
fichier
-
versionReporting
Réglez surfalse
in./cdk.json
ou~/.cdk.json
. Cela vous permet de vous désinscrire par défaut. Voici un exemple :{ "app": "...", "versionReporting": false }
Après la configuration, vous pouvez annuler ce comportement et l'activer en
--version-reporting
spécifiant une commande individuelle.
Note
Lorsque vous vous désabonnez des rapports de version, les données sur les structures que vous utilisez ne AWS CDK seront pas collectées ni ne rapporteront de données. De ce fait, ils ne AWS CDK seront pas en mesure d'identifier si vous avez été concerné par des problèmes de sécurité et ne vous enverront pas de notifications à ce sujet.
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 CDK CLI, voir Configurez 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.
-
AWS
config
Fichier 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 leregion
paramètre. Cela définit la valeur par défaut Région AWS AWS CDK et CDK CLI à utiliser pour les AWS demandes. -
L'interface CDK CLI utilise 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' Services AWS 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. Lesso_session
paramètre du profil fait référence à lasso-session
section nommée. Lasso-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-sessionmy-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 Services AWS, vous devez disposer d'une session active sur le portail d' AWS accès pour CDK CLI pour utiliser l'authentification IAM Identity Center pour résoudre les informations d'identification. En fonction de la durée de session que vous avez configurée, votre accès finira par expirer et le CDK CLI rencontrera une erreur d'authentification. 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
. Spécifiez également ce profil lors de l'émission de cdk commandes à l'aide de l'--profileoption ou de la variable d'NAME
AWS_PROFILE
environnement.
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
L'interface CDK CLI doit 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. L'interface CDK CLI recherche ces informations dans l'ordre suivant.
-
La variable d'
AWS_DEFAULT_REGION
environnement. -
Un profil nommé défini dans le AWS
config
fichier standard et spécifié à l'aide de l'--profile
option surcdk
les commandes. -
[default]
Section du AWSconfig
fichier standard.
En plus de spécifier l' AWS authentification et une région dans la [default]
section, vous pouvez également ajouter une ou plusieurs [profile
sections, où NAME
]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 du CDK CLI nécessitent la synthèse d'un ou AWS CloudFormation de plusieurs modèles, ce qui nécessite à son tour 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. L'interface CDK CLI fournit une commande appropriée lors de la création d'un nouveau projet aveccdk init
. Voici l'cdk.json
extrait d'un nouveau TypeScript projet, par exemple.
{ "app": "npx ts-node bin/hello-cdk.ts" }
L'interface CDK CLI recherche 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 l'émettre CDK CLI commandes.
L'interface CDK CLI recherche également la clé de l'application ~/.cdk.json
(c'est-à-dire dans votre répertoire personnel) si elle 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
Nombreux CDK CLI les commandes (par exemple,cdk deploy
) fonctionnent sur les piles définies dans votre application. Si votre application ne contient qu'une seule pile, CDK CLI suppose que vous voulez dire cela 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, le CDK CLI considère vos piles et vos niveaux 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. Dans le meilleur des cas, cela ne donnera pas les résultats escomptés ; dans le pire des cas, 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. L'interface CDK CLI tient 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 arguments, 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
CDK CLI v2 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
--languageLANGUAGE
Les langues prises en charge (LANGUAGE
) sont les suivantes :
Code |
Langue |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
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 |
---|---|
|
Crée une AWS CDK application vide. |
|
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, CDK CLI affiche les noms des piles sous forme de chemins en fonction de leur emplacement dans la hiérarchie du pipeline. (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
L'interface CDK CLI 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 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'-c
option --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
L'interface CDK CLI exécute 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, le CDK CLI vous permet de désactiver le rollback 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 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
L'interface CDK CLIle mode veille (ou cdk deploy --watch 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'--hotswap
indicateur, 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-hotswap
indicateur à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 watch
exé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. exclude
est facultatif.
Important
Le mode Watch n'est pas recommandé pour les déploiements de production.
Spécifiez AWS CloudFormation les paramètres
L'interface CDK CLI prend en charge la spécification AWS CloudFormation des paramètres lors du déploiement. Vous pouvez les fournir sur la ligne de commande après 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-parameters
indicateur 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 niveau de sécurité, le CDK CLI vous 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
, les valeurs suivantes sont possibles :
Durée |
Signification |
---|---|
|
L'approbation n'est jamais requise |
|
Nécessite une approbation pour IAM toute security-group-related modification |
|
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é :
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 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 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
)
Valeurs par défaut pour de nombreuses CDK CLI les indicateurs de ligne de commande peuvent être stockés 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 | CDK CLI option |
---|---|---|
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. (Le CDK CLI place les valeurs de contexte mises en cache danscdk.context.json .) |
--context |
debug |
Sitrue , 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 |
Dans false le cas contraire, 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 |
Si ce paramètre est défini sur"events" , 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 |