Il s'agit du guide du développeur AWS CDK v2. L'ancien CDK v1 est entré en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriel : Créez votre premier AWS Appli CDK
Commencez à utiliser le AWS Cloud Development Kit (AWS CDK) en utilisant l'interface de ligne de commande AWS CDK (AWS CDK CLI) pour développer votre première application CDK, démarrer votre AWS environnement et déployer votre application sur. AWS
Conditions préalables
Avant de commencer ce didacticiel, suivez toutes les étapes de configuration décrites dans la section Premiers pas avec le AWS CDK.
À propos de ce didacticiel
Dans ce didacticiel, vous allez créer et déployer une application simple sur AWS l'utilisation du AWS CDK. L'application se compose d'une fonction AWS Lambda qui renvoie un Hello World! message lorsqu'elle est invoquée. La fonction sera invoquée via une URL de fonction Lambda qui sert de point de terminaison HTTP (S) dédié pour votre fonction Lambda.
Dans le cadre de ce didacticiel, vous allez effectuer les opérations suivantes :
-
Créez votre projet : créez un projet CDK à l'aide de la commande CDK CLI
cdk init. -
Configurez votre AWS environnement : configurez l' AWS environnement dans lequel vous allez déployer votre application.
-
Démarrez votre AWS environnement : préparez votre AWS environnement pour le déploiement en le démarrant à l'aide de la commande CDK CLI.
cdk bootstrap -
Développez votre application : utilisez les constructions de la bibliothèque AWS Construct pour définir votre fonction Lambda et les ressources URL de votre fonction Lambda.
-
Préparez votre application pour le déploiement : utilisez l'interface de ligne de commande CDK pour créer votre application et synthétiser un AWS CloudFormation modèle.
-
Déployez votre application : utilisez la
cdk deploycommande CDK CLI pour déployer votre application et provisionner vos AWS ressources. -
Interagissez avec votre application : interagissez avec votre fonction Lambda déployée AWS en l'invoquant et en recevant une réponse.
-
Modifiez votre application : modifiez votre fonction Lambda et déployez-la pour implémenter vos modifications.
-
Supprimer votre application : supprimez toutes les ressources que vous avez créées à l'aide de la
cdk destroycommande CDK CLI.
Étape 1 : Créez votre projet CDK
Au cours de cette étape, vous allez créer un nouveau projet CDK. Un projet CDK doit se trouver dans son propre répertoire, avec ses propres dépendances de modules locaux.
- Pour créer un projet CDK
-
-
À partir du répertoire de départ de votre choix, créez et naviguez jusqu'à un répertoire nommé
hello-cdk:$ mkdir hello-cdk && cd hello-cdkImportant
Assurez-vous de nommer le répertoire de votre projet
hello-cdk, exactement comme indiqué ici. La CLI CDK utilise ce nom de répertoire pour nommer les éléments de votre code CDK. Si vous utilisez un nom de répertoire différent, vous rencontrerez des problèmes au cours de ce didacticiel. -
Dans le
hello-cdkrépertoire, initialisez un nouveau projet CDK à l'aide de la commande CDK CLI.cdk initSpécifiez leappmodèle et votre langage de programmation préféré avec l'--languageoption :Exemple
-
La cdk init commande crée une structure de fichiers et de dossiers dans le hello-cdk répertoire afin de faciliter l'organisation du code source de votre application CDK. Cette structure de fichiers et de dossiers s'appelle votre projet CDK. Prenez un moment pour explorer votre projet CDK.
Si vous l'avez Git installé, chaque projet que vous créez à l'aide de cdk init celui-ci est également initialisé en tant que Git référentiel.
Lors de l'initialisation du projet, la CLI CDK crée une application CDK contenant une seule pile CDK. L'instance de l'application CDK est créée à l'aide de la App construction. Voici une partie de ce code provenant de votre fichier d'application CDK :
Exemple
La pile CDK est créée à l'aide de la Stack construction. Voici une partie de ce code provenant de votre fichier de pile CDK :
Exemple
Étape 2 : Configurez votre AWS environment
Au cours de cette étape, vous configurez l' AWS environnement de votre pile CDK. Ce faisant, vous spécifiez l'environnement dans lequel votre pile CDK sera déployée.
Tout d'abord, déterminez l' AWS environnement que vous souhaitez utiliser. Un AWS environnement se compose d'un AWS compte et d'une AWS région.
Lorsque vous utilisez la AWS CLI pour configurer les informations d'identification de sécurité sur votre machine locale, vous pouvez ensuite utiliser la AWS CLI pour obtenir des informations d' AWS environnement pour un profil spécifique.
- Pour utiliser l' AWS interface de ligne de commande afin d'obtenir votre identifiant de AWS compte
-
-
Exécutez la commande AWS CLI suivante pour obtenir l'identifiant de AWS compte associé à votre
defaultprofil :$ aws sts get-caller-identity --query "Account" --output text -
Si vous préférez utiliser un profil nommé, indiquez le nom de votre profil à l'aide de l'
--profileoption :$ aws sts get-caller-identity --profile your-profile-name --query "Account" --output text
-
- Pour utiliser la AWS CLI afin d'obtenir votre AWS région
-
-
Exécutez la commande AWS CLI suivante pour obtenir la région que vous avez configurée pour votre
defaultprofil :$ aws configure get region -
Si vous préférez utiliser un profil nommé, indiquez le nom de votre profil à l'aide de l'
--profileoption :$ aws configure get region --profile your-profile-name
-
Vous allez ensuite configurer l' AWS environnement de votre pile CDK en modifiant l'HelloCdkStackinstance dans votre fichier d'application. Pour ce didacticiel, vous allez coder en dur les informations relatives à votre AWS environnement. Cela n'est pas recommandé pour les environnements de production. Pour plus d'informations sur les autres méthodes de configuration des environnements, voir Configuration des environnements à utiliser avec le AWS CDK.
- Pour configurer l'environnement de votre pile CDK
-
-
Dans votre fichier d'application, utilisez la
envpropriété de laStackconstruction pour configurer votre environnement. Voici un exemple :Exemple
-
Étape 3 : Bootstrap votre AWS environment
Au cours de cette étape, vous initialisez l' AWS environnement que vous avez configuré à l'étape précédente. Cela prépare votre environnement pour les déploiements de CDK.
Pour démarrer votre environnement, exécutez la commande suivante depuis la racine de votre projet CDK :
$ cdk bootstrap
En démarrant depuis la racine de votre projet CDK, vous n'avez pas à fournir d'informations supplémentaires. La CLI CDK obtient des informations sur l'environnement de votre projet. Lorsque vous démarrez en dehors d'un projet CDK, vous devez fournir des informations sur l'environnement avec la cdk bootstrap commande. Pour plus d'informations, consultez Bootstrap votre environnement à utiliser avec le AWS CDK.
Étape 4 : Créez votre application CDK
Dans la plupart des environnements de programmation, vous créez ou compilez du code après avoir apporté des modifications. Cela n'est pas nécessaire avec le AWS CDK puisque l'interface de ligne de commande du CDK effectuera automatiquement cette étape. Cependant, vous pouvez toujours générer manuellement si vous souhaitez détecter les erreurs de syntaxe et de saisie. Voici un exemple :
Exemple
Étape 5 : Répertoriez les piles de CDK dans votre application
À ce stade, vous devriez disposer d'une application CDK contenant une seule pile CDK. Pour vérifier, utilisez la cdk list commande CDK CLI pour afficher vos piles. La sortie doit afficher une seule pile nommée HelloCdkStack :
$ cdk list HelloCdkStack
Si vous ne voyez pas ce résultat, vérifiez que vous vous trouvez dans le bon répertoire de travail de votre projet et réessayez. Si vous ne voyez toujours pas votre pile, répétez l'étape 1 : créez votre projet CDK et réessayez.
Étape 6 : Définissez votre fonction Lambda
Au cours de cette étape, vous importez le aws_lambda module depuis la AWS bibliothèque de constructions et vous utilisez la construction Function L2.
Modifiez votre fichier de pile CDK comme suit :
Exemple
Regardons la Function construction de plus près. Comme toutes les constructions, la Function classe prend trois paramètres :
-
scope — Définit votre
Stackinstance en tant que parent de laFunctionconstruction. Toutes les constructions qui définissent les AWS ressources sont créées dans le cadre d'une pile. Vous pouvez définir des constructions à l'intérieur des constructions, en créant une hiérarchie (arbre). Ici, et dans la plupart des cas, la portée estthis(selfen Python). -
Id — L'identifiant de construction de
Functionvotre application AWS CDK. Cet identifiant, associé à un hachage basé sur l'emplacement de la fonction dans la pile, permet d'identifier la fonction de manière unique lors du déploiement. Le AWS CDK fait également référence à cet ID lorsque vous mettez à jour la construction dans votre application et que vous redéployez pour mettre à jour la ressource déployée. Ici, votre identifiant de construction estHelloWorldFunction. Les fonctions peuvent également avoir un nom, spécifié avec lafunctionNamepropriété. Ceci est différent de l'ID de construction. -
props — Ensemble de valeurs qui définissent les propriétés de la fonction. Vous définissez ici les
codepropriétésruntimehandler, et.Les accessoires sont représentés différemment dans les langues prises en charge par le AWS CDK.
-
Dans TypeScript et JavaScript,
propsse trouve un argument unique et vous transmettez un objet contenant les propriétés souhaitées. -
En Python, les accessoires sont transmis en tant qu'arguments de mots clés.
-
En Java, un Builder est fourni pour transmettre les accessoires. Il y en a deux : l'un pour
FunctionPropset l'autreFunctionpour vous permettre de construire la construction et ses accessoires en une seule étape. Ce code utilise cette dernière option. -
En C#, vous instanciez un
FunctionPropsobjet à l'aide d'un initialiseur d'objet et vous le transmettez comme troisième paramètre.Si les accessoires d'une construction sont facultatifs, vous pouvez omettre complètement le
propsparamètre.
-
Toutes les constructions utilisent ces trois mêmes arguments, il est donc facile de rester orienté lorsque vous en découvrez de nouveaux. Et comme vous vous en doutez, vous pouvez sous-classer n'importe quelle construction pour l'étendre à vos besoins, ou si vous souhaitez modifier ses valeurs par défaut.
Étape 7 : Définissez l'URL de votre fonction Lambda
Dans cette étape, vous utilisez la méthode d'addFunctionUrlassistance de la Function construction pour définir l'URL d'une fonction Lambda. Pour générer la valeur de cette URL lors du déploiement, vous allez créer une AWS CloudFormation sortie à l'aide de la CfnOutput construction.
Ajoutez ce qui suit à votre fichier de pile CDK :
Exemple
Avertissement
Pour simplifier ce didacticiel, l'URL de votre fonction Lambda est définie sans authentification. Une fois déployé, cela crée un point de terminaison accessible au public qui peut être utilisé pour invoquer votre fonction. Lorsque vous aurez terminé ce didacticiel, suivez l'étape 12 : Supprimez votre application pour supprimer ces ressources.
Étape 8 : Synthétiser un modèle CloudFormation
Au cours de cette étape, vous préparez le déploiement en synthétisant un CloudFormation modèle à l'aide de la commande CDK CLIcdk synth. Cette commande effectue une validation de base de votre code CDK, exécute votre application CDK et génère un CloudFormation modèle à partir de votre pile CDK.
Si votre application contient plusieurs piles, vous devez spécifier les piles à synthétiser. Étant donné que votre application contient une seule pile, la CLI CDK détecte automatiquement la pile à synthétiser.
Si vous ne synthétisez pas de modèle, l'interface de ligne de commande CDK effectuera automatiquement cette étape lors du déploiement. Nous vous recommandons toutefois d'exécuter cette étape avant chaque déploiement pour vérifier l'absence d'erreurs de synthèse.
Avant de synthétiser un modèle, vous pouvez éventuellement créer votre application pour détecter les erreurs de syntaxe et de saisie. Pour obtenir des instructions, consultez Étape 4 : Création de votre application CDK.
Pour synthétiser un CloudFormation modèle, exécutez la commande suivante depuis la racine de votre projet :
$ cdk synth
Note
Si le message d'erreur suivant s'affiche, vérifiez que vous êtes bien dans le hello-cdk répertoire et réessayez :
--app is required either in command-line, in cdk.json or in ~/.cdk.json
En cas de succès, la CLI CDK affichera un modèle au YAML format —formaté stdout et enregistrera un CloudFormation modèle au JSON format —dans le cdk.out répertoire de votre projet.
Voici un exemple de sortie du CloudFormation modèle :
Resources: HelloWorldFunctionServiceRole<unique-identifier>: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: lambda.amazonaws.com Version: "2012-10-17" ManagedPolicyArns: - Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/ServiceRole/Resource HelloWorldFunction<unique-identifier>: Type: AWS::Lambda::Function Properties: Code: ZipFile: " \ exports.handler = async function(event) { \ return { \ statusCode: 200, \ body: JSON.stringify('Hello World!'), \ }; \ }; \ " Handler: index.handler Role: Fn::GetAtt: - HelloWorldFunctionServiceRole<unique-identifier> - Arn Runtime: nodejs20.x DependsOn: - HelloWorldFunctionServiceRole<unique-identifier> Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/Resource HelloWorldFunctionFunctionUrl<unique-identifier>: Type: AWS::Lambda::Url Properties: AuthType: NONE TargetFunctionArn: Fn::GetAtt: - HelloWorldFunction<unique-identifier> - Arn Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/FunctionUrl/Resource HelloWorldFunctioninvokefunctionurl<unique-identifier>: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunctionUrl FunctionName: Fn::GetAtt: - HelloWorldFunction<unique-identifier> - Arn FunctionUrlAuthType: NONE Principal: "*" Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/invoke-function-url CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:<unique-identifier> Metadata: aws:cdk:path: HelloCdkStack/CDKMetadata/Default Condition: CDKMetadataAvailable Outputs: myFunctionUrlOutput: Value: Fn::GetAtt: - HelloWorldFunctionFunctionUrl<unique-identifier> - FunctionUrl Parameters: BootstrapVersion: Type: AWS::SSM::Parameter::Value<String> Default: /cdk-bootstrap/<unique-identifier>/version Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip] Rules: CheckBootstrapVersion: Assertions: - Assert: Fn::Not: - Fn::Contains: - - "1" - "2" - "3" - "4" - "5" - Ref: BootstrapVersion AssertDescription: CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.
Note
Chaque modèle généré contient une AWS::CDK::Metadata ressource par défaut. L'équipe AWS CDK utilise ces métadonnées pour mieux comprendre l'utilisation du AWS CDK et trouver des moyens de l'améliorer. Pour plus de détails, notamment pour savoir comment désactiver les rapports de version, consultez la section Rapports de version.
En définissant une construction L2 unique, le AWS CDK crée un CloudFormation modèle complet contenant vos ressources Lambda, ainsi que les autorisations et la logique de collage requises pour que vos ressources interagissent au sein de votre application.
Étape 9 : Déployez votre pile CDK
Dans cette étape, vous utilisez la cdk deploy commande CDK CLI pour déployer votre pile CDK. Cette commande récupère votre CloudFormation modèle généré et le déploie via AWS CloudFormation, ce qui provisionne vos ressources dans le cadre d'une CloudFormation pile.
À partir de la racine de votre projet, exécutez les opérations suivantes. Confirmez les modifications si vous y êtes invité :
$ cdk deploy ✨ Synthesis time: 2.69s HelloCdkStack: start: Building <unique-identifier>:current_account-current_region HelloCdkStack: success: Built <unique-identifier>:current_account-current_region HelloCdkStack: start: Publishing <unique-identifier>:current_account-current_region HelloCdkStack: success: Published <unique-identifier>:current_account-current_region This deployment will make potentially sensitive changes according to your current security approval level (--require-approval broadening). Please confirm you intend to make the following modifications: IAM Statement Changes ┌───┬───────────────────────────────────────┬────────┬──────────────────────────┬──────────────────────────────┬───────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┼───────────────────────────────────────┼────────┼──────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${HelloWorldFunction.Arn} │ Allow │ lambda:InvokeFunctionUrl │ * │ │ ├───┼───────────────────────────────────────┼────────┼──────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${HelloWorldFunction/ServiceRole.Arn} │ Allow │ sts:AssumeRole │ Service:lambda.amazonaws.com │ │ └───┴───────────────────────────────────────┴────────┴──────────────────────────┴──────────────────────────────┴───────────┘ IAM Policy Changes ┌───┬───────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────┐ │ │ Resource │ Managed Policy ARN │ ├───┼───────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────┤ │ + │ ${HelloWorldFunction/ServiceRole} │ arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole │ └───┴───────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Do you wish to deploy these changes (y/n)? y
De mêmecdk synth, vous n'êtes pas obligé de spécifier la pile AWS CDK puisque l'application ne contient qu'une seule pile.
Pendant le déploiement, la CLI CDK affiche les informations de progression au fur et à mesure du déploiement de votre pile. Lorsque vous avez terminé, vous pouvez accéder à la AWS CloudFormation console HelloCdkStack pile. Vous pouvez également accéder à la console Lambda pour afficher votre HelloWorldFunction ressource.
Une fois le déploiement terminé, la CLI CDK affichera l'URL de votre point de terminaison. Copiez cette URL pour passer à l'étape suivante. Voici un exemple :
... HelloCdkStack: deploying... [1/1] HelloCdkStack: creating CloudFormation changeset... ✅ HelloCdkStack ✨ Deployment time: 41.65s Outputs: HelloCdkStack.myFunctionUrlOutput = https://<api-id>.lambda-url.<Region>.on.aws/ Stack ARN: arn:aws:cloudformation:<Region:account-id>:stack/HelloCdkStack/<unique-identifier> ✨ Total time: 44.34s
Étape 10 : Interagissez avec votre application sur AWS
Au cours de cette étape, vous interagissez avec votre application AWS en invoquant votre fonction Lambda via l'URL de la fonction. Lorsque vous accédez à l'URL, votre fonction Lambda renvoie le Hello World! message.
Pour invoquer votre fonction, accédez à l'URL de la fonction via votre navigateur ou depuis la ligne de commande. Voici un exemple :
$ curl https://<api-id>.lambda-url.<Region>.on.aws/ "Hello World!"%
Étape 11 : Modifier votre candidature
Au cours de cette étape, vous modifiez le message que la fonction Lambda renvoie lorsqu'elle est invoquée. Vous effectuez une différence à l'aide de la cdk diff commande CDK CLI pour prévisualiser vos modifications et déployer pour mettre à jour votre application. Vous interagissez ensuite avec votre application AWS pour voir votre nouveau message.
Modifiez l'myFunctioninstance dans votre fichier de pile CDK comme suit :
Exemple
À l'heure actuelle, vos modifications de code n'ont entraîné aucune mise à jour directe de votre ressource Lambda déployée. Votre code définit l'état souhaité de votre ressource. Pour modifier votre ressource déployée, vous allez utiliser la CLI CDK pour synthétiser l'état souhaité dans un nouveau AWS CloudFormation modèle. Vous déploierez ensuite votre nouveau CloudFormation modèle en tant qu'ensemble de modifications. Les ensembles de modifications n'apportent que les modifications nécessaires pour atteindre le nouvel état souhaité.
Pour prévisualiser vos modifications, exécutez la cdk diff commande. Voici un exemple :
$ cdk diff Stack HelloCdkStack Hold on while we create a read-only change set to get a diff with accurate replacement information (use --method=template to use a less accurate but faster template-only diff) Resources [~] AWS::Lambda::Function HelloWorldFunction HelloWorldFunction<unique-identifier> └─ [~] Code └─ [~] .ZipFile: ├─ [-] exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; └─ [+] exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; ✨ Number of stacks with differences: 1
Pour créer cette différence, l'interface de ligne de commande CDK interroge le compte de votre AWS compte pour obtenir le dernier AWS CloudFormation modèle de la HelloCdkStack pile. Ensuite, il compare le dernier modèle avec le modèle qu'il vient de synthétiser à partir de votre application.
Pour implémenter vos modifications, exécutez la cdk deploy commande. Voici un exemple :
$ cdk deploy ✨ Synthesis time: 2.12s HelloCdkStack: start: Building <unique-identifier>:current_account-current_region HelloCdkStack: success: Built <unique-identifier>:current_account-current_region HelloCdkStack: start: Publishing <unique-identifier>:current_account-current_region HelloCdkStack: success: Published <unique-identifier>:current_account-current_region HelloCdkStack: deploying... [1/1] HelloCdkStack: creating CloudFormation changeset... ✅ HelloCdkStack ✨ Deployment time: 26.96s Outputs: HelloCdkStack.myFunctionUrlOutput = https://<unique-identifier>.lambda-url.<Region>.on.aws/ Stack ARN: arn:aws:cloudformation:<Region:account-id>:stack/HelloCdkStack/<unique-identifier> ✨ Total time: 29.07s
Pour interagir avec votre application, répétez l'étape 10 : Interagissez avec votre application sur AWS. Voici un exemple :
$ curl https://<api-id>.lambda-url.<Region>.on.aws/ "Hello CDK!"%
Étape 12 : Supprimez votre candidature
Dans cette étape, vous utilisez la cdk destroy commande CDK CLI pour supprimer votre application. Cette commande supprime la CloudFormation pile associée à votre pile CDK, qui inclut les ressources que vous avez créées.
Pour supprimer votre application, exécutez la cdk destroy commande et confirmez votre demande de suppression de l'application. Voici un exemple :
$ cdk destroy Are you sure you want to delete: HelloCdkStack (y/n)? y HelloCdkStack: destroying... [1/1] ✅ HelloCdkStack: destroyed
Étapes suivantes
Félicitations ! Vous avez terminé ce didacticiel et avez utilisé le AWS CDK pour créer, modifier et supprimer des ressources dans le AWS Cloud avec succès. Vous êtes maintenant prêt à commencer à utiliser le AWS CDK.
Pour en savoir plus sur l'utilisation du AWS CDK dans votre langage de programmation préféré, voir Utilisation de la bibliothèque AWS CDK.
Pour obtenir des ressources supplémentaires, consultez les rubriques suivantes :
-
Essayez l'atelier CDK
pour une visite plus approfondie impliquant un projet plus complexe. -
Consultez la référence de l'API pour commencer à explorer les constructions CDK disponibles pour vos services préférés AWS .
-
Visitez Construct Hub
pour découvrir des constructions créées par AWS et d'autres. -
Découvrez des exemples
d'utilisation du AWS CDK.
Le AWS CDK est un projet open source. Pour contribuer, consultez la section Contribution au kit de développement AWS cloud (AWS CDK).