Construit ta premiere API serverless avec API Gateway et Lambda  en utilisant la CDK et TypeScript

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.

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:

BASH
aws configure
Cliquez pour développer et voir plus
BASH
npm install -g aws-cdk
Cliquez pour développer et voir plus

1. Initialiser le projet CDK

creez un dossier pour votre projet:

BASH
mkdir serverless-api-demo
cd serverless-api-demo
Cliquez pour développer et voir plus

initialisez un projet CDK TypeScript:

BASH
cdk init app --language typescript
Cliquez pour développer et voir plus

CDK créé la structure suivante:

PGSQL
/bin    --------------> point d'entrée
/lib    --------------> définition des stacks
cdk.json -------------> configuration CDK
tsconfig.json
package.json
Cliquez pour développer et voir plus

2. Créer la fonction Lambda

Créer un dossier /lambda/ et un ficher hello.ts

BASH
mkdir lambda
touch lambda/hello.ts
Cliquez pour développer et voir plus

Ajouter ce code simple dans le fichier hello.ts

TYPESCRIPT
//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),
    };
}
Cliquez pour développer et voir plus

ce fichier contient deux fonctions lambda helloFunction et getUsersFunction

3. Déclarer la fonction Lambda dans CDK

ouvrez le fichier lib/serverless-api-demo-stack.ts et remplacez son contenu par :

TS
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);
  }
}
Cliquez pour développer et voir plus

En resumé

4. Déployer la Lambda

avant de deployer:

SH
cdk bootstrap
cdk synth   //pour générer le template Cloudformation du projet

cdk deploy 
Cliquez pour développer et voir plus

5. Tester les fonctions

Apres le deploiement dans la console on a lien pour appeler les fonctions lambda.

résuttal du déployment

SH
// remplacer xxxxxxxxxxx  par la donneé contue dans votre url

curl https://xxxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/hello |jq
Cliquez pour développer et voir plus

exécution du endpoint /hello

SH
curl https://xxxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/users |jq
Cliquez pour développer et voir plus

exécution du endpoint /users

6. Nettoyer

SH
cdk destroy
Cliquez pour développer et voir plus

cela supprime les fontions lambda les ressource Api Gateway et la stack CDK.

Commentaires

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci