Hello World Serverless : déployer une fonction AWS Lambda avec CDK + TypeScript

Le serverless est devenu l’une des approches les plus populaires pour construire des applications rapides,scalable et economiques. Avec AWS Lambda, il suffit d’écrire du code : Aws se charge du reste (serveurs,scalabilité…).

Mais un autre outil facilite encore plus l’expérience: AWS CDK, qui permet de décrire votre infrastructure en TypeScript, Java, Python,C# ou Go au lieu d’écrire du YAML ou du Json pour CloudFormation.

Dans cet article je vous montre comment déployer votre toute première fonction aws lambda en quelques minutes grâce à AWS CDK et TypeScript. Aucun préréquis compliqué, pas d’architecture difficile: juste un bon premier pas dans le monde du serverless.

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

resultat de la version intallée

1. Initialiser le projet CDK

Creez un dossier pour votre projet:

BASH
mkdir cdk-lambda-demo
cd cdk-lambda-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ée 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

export const handler = async()=> {
    return {
        statusCode: 200,
        body: JSON.stringify({message: "hello world from aws cdk "});
    }
};
Cliquez pour développer et voir plus

Cette fonction retourne juste un message en Json.

3. Déclarer la fonction Lambda dans CDK

Ouvrez le fichier lib/cdk-lambda-demo-stack.ts et remplacez son contenu par :

TS
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as lambdaNodejs from 'aws-cdk-lib/aws-lambda-nodejs';

export class CdkLambdaDemoStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

     new lambdaNodejs.NodejsFunction(
      this,
      'HelloHandler', { 
      entry: 'lambda/hello.ts', // path to the Lambda function code
      handler: 'handler',
      functionName: 'HelloHandler' // name of the exported handler function
    });
  }
}
Cliquez pour développer et voir plus

En résumé:

4. Déployer la Lambda

avant de deployer:

SH
npm install  # pour intaller les dependences du projet
cdk bootstrap
cdk synth   #pour générer le template Cloudformation du projet

cdk deploy # c'est tres évident
Cliquez pour développer et voir plus

5. Tester la fonction

depuis la cli:

SH
aws labda invoke\
-- function-name HelloHandler \
response.json
Cliquez pour développer et voir plus

puis

SH
cat response.json
Cliquez pour développer et voir plus

depuis la console aws :

resultat sur la console aws

6. Nettoyer

SH
cdk destroy
Cliquez pour développer et voir plus

Cela supprime la fontion lambda et la stack CDK.

Commentaires

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci