Construit ta premiere API serverless avec API Gateway et Lambda en utilisant la CDK et TypeScript
Le serverless est l’une des approches les plus populaires pour créer des applications rapide,scalable et économiques. Dans cet article, je vous montre comment créer une simple Api avec deux endpoints en moins de 10 minutes,en utilisant AWS Lambda et API Gateway , et en déployant l’infrastructure avec AWS CDK en TypeScript.
Objectif du tutoriel
Nous allons: créer une api avec deux routes:
- GET /hello —-> retourne un message “Hello from aws lambda”.
- GET /users —-> retourne une liste fictive des utilisateurs.
Cette API peut servir de point de départ pour vos projets serverless ou pour montrer vos compétences AWS.
Prérequis
Avant de commencer, il vous faut:
- Node.js
- AWS CLI configurée:
aws configure- AWS CDK installé:
npm install -g aws-cdk- un compte aws actif
1. Initialiser le projet CDK
creez un dossier pour votre projet:
mkdir serverless-api-demo
cd serverless-api-demoinitialisez un projet CDK TypeScript:
cdk init app --language typescriptCDK créé la structure suivante:
/bin --------------> point d'entrée
/lib --------------> définition des stacks
cdk.json -------------> configuration CDK
tsconfig.json
package.json2. Créer la fonction Lambda
Créer un dossier /lambda/ et un ficher hello.ts
mkdir lambda
touch lambda/hello.tsAjouter ce code simple dans le fichier hello.ts
//lambda/hello.ts
//hello fonction
export const helloFunction = async()=> {
return {
statusCode: 200,
body: JSON.stringify({message: "hello world from aws lambda "}),
}
};
// get users fonction
export const getUsersFunction = async()=>{
const users = [
{
id : 1,
name: "lonfo"
},
{
id : 2,
name : "ainix"
},
{
id : 3,
name: "pascal"
}
];
return {
statusCode: 200,
body: JSON.stringify( users),
};
}ce fichier contient deux fonctions lambda helloFunction et getUsersFunction
Conseil
chaque fonction aurait pu être placée dans un fichier distinct, ce qui correspond à l’approche conseillée.
3. Déclarer la fonction Lambda dans CDK
ouvrez le fichier lib/serverless-api-demo-stack.ts et remplacez son contenu par :
import * as cdk from 'aws-cdk-lib/core';
import { Construct } from 'constructs';
import * as nodeJsLambda from 'aws-cdk-lib/aws-lambda-nodejs';
import * as apigateway from 'aws-cdk-lib/aws-apigateway';
export class ServerlessApiDemoStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Hello Lambda Function
const helloLambda = new nodeJsLambda.NodejsFunction(this, 'HelloHandler', {
entry: 'lambda/hello.ts',
handler: 'helloFunction',
functionName: 'helloFunction',
});
// Get Users Lambda Function
const getUsersLambda = new nodeJsLambda.NodejsFunction(this, 'GetUsersHandler', {
entry: 'lambda/hello.ts',
handler: 'getUsersFunction',
functionName: 'getUsersFunction',
});
// create API Gateway and integrate with Lambda functions
const api = new apigateway.RestApi(this, 'ServerlessApiDemoApi', {
restApiName: 'Serverless API Demo Service',
});
// Hello endpoint
const helloIntegration = new apigateway.LambdaIntegration(helloLambda);
api.root.addResource('hello').addMethod('GET', helloIntegration);
// Get Users endpoint
const getUsersIntegration = new apigateway.LambdaIntegration(getUsersLambda);
api.root.addResource('users').addMethod('GET', getUsersIntegration);
}
}En resumé
- création des fonctions lambda
helloLambdaetgetUsersLambda - création de l’API gateway
api - creation des routes
/helloet/users, association respective aux lambdahelloLambda,getUsersLambdacomme d’eclancheurs.
4. Déployer la Lambda
avant de deployer:
cdk bootstrap
cdk synth //pour générer le template Cloudformation du projet
cdk deploy 5. Tester les fonctions
Apres le deploiement dans la console on a lien pour appeler les fonctions lambda.
// remplacer xxxxxxxxxxx par la donneé contue dans votre url
curl https://xxxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/hello |jq
curl https://xxxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/users |jq
6. Nettoyer
cdk destroycela supprime les fontions lambda les ressource Api Gateway et la stack CDK.
Conclusion
Dans cet article nous avons :
- crée un projet aws cdk en Ts
- ecrit deux fonctions lambda
- crée une API Gateway avec deux endpoints
helloetusers - connecter nos endpoins aux fonctions lambda
- déployer notre stack cdk
- tester nos fonctions lambda via les endpoints
- Code disponible Gitlab
Api Gateway est un service tres important pour la creation des applications serverless et elle englobe plusieurs notions( validation des données, transformation ou maping des request ou response …)
API Gateway Doc la prochaine étape pourrait être l’ajout d’une BD DynamoDb pour la sauvegarde des données.

Commentaires