Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déploiement de fonctions Lambda avec le AWS CDK
AWS Cloud Development Kit (AWS CDK) Il s'agit d'un framework d'infrastructure en tant que code (IaC) que vous pouvez utiliser pour définir une infrastructure AWS cloud en utilisant le langage de programmation de votre choix. Pour définir votre propre infrastructure cloud, vous devez d'abord écrire une application (dans CDK l'une des langues prises en charge) contenant une ou plusieurs piles. Ensuite, vous le synthétisez dans un AWS CloudFormation modèle et déployez vos ressources sur votre Compte AWS. Suivez les étapes décrites dans cette rubrique pour déployer une fonction Lambda qui renvoie un événement depuis un point de terminaison Amazon API Gateway.
La bibliothèque AWS Construct, incluse dans leCDK, fournit des modules que vous pouvez utiliser pour modéliser les ressources qui Services AWS fournissent. Pour les services populaires, la bibliothèque fournit des constructions organisées avec des valeurs par défaut intelligentes et les bonnes pratiques. Vous pouvez utiliser le module aws_lambda pour définir votre fonction et les ressources de support en quelques lignes de code.
Prérequis
Avant de commencer ce didacticiel, installez le AWS CDK en exécutant la commande suivante.
npm install -g aws-cdk
Étape 1 : Configurez votre AWS CDK projet
Créez un répertoire pour votre nouvelle AWS CDK application et initialisez le projet.
Note
Le modèle AWS CDK d'application utilise le nom du répertoire du projet pour générer des noms pour les classes et les fichiers sources. Dans cet exemple, le répertoire est nommé hello-lambda
. Si vous utilisez un nom répertoire différent, votre application ne correspondra pas à ces instructions.
AWS CDK v2 inclut des constructions stables pour tous Services AWS dans un seul package appeléaws-cdk-lib
. Ce package est installé en tant que dépendance lorsque vous initialisez le projet. Lorsque vous travaillez avec certains langages de programmation, le package est installé lorsque vous créez le projet pour la première fois.
Étape 2 : définir la AWS CDK pile
Une CDK pile est un ensemble d'une ou plusieurs constructions qui définissent les AWS ressources. Chaque CDK pile représente une AWS CloudFormation pile dans votre CDK application.
Pour définir votreCDK, Stack, suivez les instructions de votre langage de programmation préféré. Cette pile définit les éléments suivants :
-
Nom logique de la fonction :
MyFunction
-
Emplacement du code de fonction, spécifié dans la
code
propriété. Pour plus d'informations, consultez la section Code du gestionnaire dans la AWS Cloud Development Kit (AWS CDK) APIréférence. -
Le nom logique REST API est le suivant :
HelloApi
-
Nom logique du point de terminaison API Gateway :
ApiGwEndpoint
Notez que toutes les CDK piles de ce didacticiel utilisent le runtime Node.js pour la fonction Lambda. Vous pouvez utiliser différents langages de programmation pour la CDK pile et la fonction Lambda afin de tirer parti des points forts de chaque langage. Par exemple, vous pouvez utiliser TypeScript for the CDK stack pour tirer parti des avantages du typage statique pour votre code d'infrastructure. Vous pouvez utiliser la fonction Lambda JavaScript pour tirer parti de la flexibilité et du développement rapide d'un langage typé dynamiquement.
Étape 3 : Création du code de fonction Lambda
-
À partir de la racine de votre projet (
hello-lambda
), créez le/lib/lambda-handler
répertoire pour le code de la fonction Lambda. Ce répertoire est spécifié dans lacode
propriété de votre AWS CDK pile. -
Créez un nouveau fichier appelé
index.js
dans le/lib/lambda-handler
répertoire. Collez le code suivant dans le fichier. La fonction extrait des propriétés spécifiques de la API demande et les renvoie sous forme de JSON réponse.exports.handler = async (event) => { // Extract specific properties from the event object const { resource, path, httpMethod, headers, queryStringParameters, body } = event; const response = { resource, path, httpMethod, headers, queryStringParameters, body, }; return { body: JSON.stringify(response, null, 2), statusCode: 200, }; };
Étape 4 : Déployer la AWS CDK pile
-
À la racine de votre projet, exécutez la commande cdk synth :
cdk synth
Cette commande synthétise un AWS CloudFormation modèle à partir de votre CDK pile. Le modèle est un YAML fichier d'environ 400 lignes, similaire au suivant.
Note
Si le message d'erreur suivant s'affiche, assurez-vous que vous êtes bien à la racine du répertoire de votre projet.
--app is required either in command-line, in cdk.json or in ~/.cdk.json
Exemple AWS CloudFormation modèle
Resources: MyFunctionServiceRole3C357FF2: 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: HelloLambdaStack/MyFunction/ServiceRole/Resource MyFunction1BAA52E7: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Fn::Sub: cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region} S3Key: ab1111111cd32708dc4b83e81a21c296d607ff2cdef00f1d7f48338782f92l3901.zip Handler: index.handler Role: Fn::GetAtt: - MyFunctionServiceRole3C357FF2 - Arn Runtime: nodejs20.x ...
-
Exécutez la commande cdk deploy :
cdk deploy
Patientez pendant que vos ressources sont créées. Le résultat final inclut le point URL de terminaison de votre API passerelle. Exemple :
Outputs: HelloLambdaStack.ApiGwEndpoint77F417B1 =
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Étape 5 : tester la fonction
Pour appeler la fonction Lambda, copiez le point de terminaison API Gateway et collez-le dans un navigateur Web ou exécutez une curl
commande :
curl -s
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
La réponse est une JSON représentation des propriétés sélectionnées à partir de l'objet d'événement d'origine, qui contient des informations sur la demande envoyée au point de terminaison de la API passerelle. Exemple :
{
"resource": "/",
"path": "/",
"httpMethod": "GET",
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "en-US,en;q=0.9",
"CloudFront-Forwarded-Proto": "https",
"CloudFront-Is-Desktop-Viewer": "true",
"CloudFront-Is-Mobile-Viewer": "false",
"CloudFront-Is-SmartTV-Viewer": "false",
"CloudFront-Is-Tablet-Viewer": "false",
"CloudFront-Viewer-ASN": "16509",
"CloudFront-Viewer-Country": "US",
"Host": "abcd1234.execute-api.us-east-1.amazonaws.com",
...
Étape 6 : Nettoyer vos ressources
Le point de terminaison API Gateway est accessible au public. Pour éviter des frais inattendus, exécutez la commande cdk destroy pour supprimer la pile et toutes les ressources associées.
cdk destroy
Étapes suivantes
Pour plus d'informations sur l'écriture d' AWS CDK applications dans la langue de votre choix, consultez les rubriques suivantes :