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 à l'aide du 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 de cloud, écrivez d'abord une application (dans l'un des langages pris en charge par le CDK) 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 le CDK, fournit des modules que vous pouvez utiliser pour modéliser les ressources Services AWS fournies. 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 pile CDK est un ensemble d'une ou de plusieurs constructions qui définissent AWS les ressources. Chaque pile CDK représente une AWS CloudFormation pile dans votre application CDK.
Pour définir votre CDK, suivez les instructions de votre langage de programmation préféré. Cette pile définit les éléments suivants :
-
Le nom logique de la fonction :
MyFunction
-
L’emplacement du code de fonction, spécifié dans la propriété
code
. Pour plus d’informations, consultez Handler code dans la Référence de l’API AWS Cloud Development Kit (AWS CDK) . -
Le nom logique de l’API REST :
HelloApi
-
Le nom logique du point de terminaison d’API Gateway :
ApiGwEndpoint
Notez que toutes les piles CDK de ce tutoriel utilisent l’environnement d’exécution Node.js pour la fonction Lambda. Vous pouvez utiliser différents langages de programmation pour la pile CDK et la fonction Lambda afin de tirer parti des points forts de chaque langage. Par exemple, vous pouvez utiliser la pile CDK TypeScript 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éer le code de la fonction Lambda
-
À partir de la racine de votre projet (
hello-lambda
), créez le répertoire/lib/lambda-handler
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 répertoire/lib/lambda-handler
. Collez le code suivant dans le fichier. La fonction extrait des propriétés spécifiques de la requête d’API et les renvoie sous forme de réponse JSON.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, effectuez la commande cdk synth :
cdk synth
Cette commande synthétise un AWS CloudFormation modèle à partir de votre pile de CDK. Le modèle est un fichier YAML d’environ 400 lignes, semblable à ce qui suit.
Note
Si vous obtenez l’erreur suivante, assurez-vous que vous êtes à 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 que vos ressources soient créées. Le résultat final inclut l’URL de votre point de terminaison d’API Gateway. Exemple :
Outputs: HelloLambdaStack.ApiGwEndpoint77F417B1 =
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Étape 5 : tester de la fonction
Pour invoquer la fonction Lambda, copiez le point de terminaison d’API Gateway et collez-le dans un navigateur Web ou exécutez une commande curl
:
curl -s
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
La réponse est une représentation JSON des propriétés sélectionnées à partir de l’objet d’événement d’origine, qui contient des informations sur la requête envoyée au point de terminaison d’API Gateway. 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 d’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 :