Accéder au contenu principal

Premiers pas avec AWS Lambda : Un tutoriel étape par étape

Découvrez les bases d'AWS Lambda, comment configurer votre première fonction et comment l'intégrer aux services AWS de base pour le déploiement d'applications sans serveur.
Actualisé 26 déc. 2024  · 12 min de lecture

AWS Lambda est un puissant service de calcul sans serveur qui vous permet d'exécuter du code sans gérer l'infrastructure, afin que vous puissiez vous concentrer uniquement sur l'écriture de code sans vous soucier du provisionnement ou de la maintenance des serveurs.

Dans ce tutoriel, nous allons explorer AWS Lambda, de la configuration de votre première fonction à son intégration avec d'autres services AWS. Que vous traitiez des flux de données ou construisiez des API, ce guide vous aidera à démarrer des déploiements sans serveur à l'aide d'AWS Lambda.

Qu'est-ce que AWS Lambda ?

AWS Lambda est une plateforme informatique sans serveur fournie par Amazon Web Services (AWS) qui permet aux développeurs d'exécuter du code sans provisionner ni gérer de serveurs. AWS Lambda facilite cela en allouant dynamiquement des ressources pour exécuter vos fonctions uniquement en cas de besoin, en vous facturant en fonction de l'utilisation plutôt que de la capacité de serveur pré-allouée.

Cette approche du développement d'applications supprime la nécessité de mettre en place une infrastructure traditionnelle, ce qui vous permet de vous concentrer uniquement sur l'écriture et le déploiement du code. 

AWS Lambda est piloté par les événements, ce qui signifie qu'il est déclenché par des événements spécifiques provenant d'autres services AWS, ce qui le rend idéal pour construire des solutions réactives, évolutives et rentables.

Les méthodes de déploiement traditionnelles nécessitent la mise en place et la gestion de serveurs, ce qui implique la mise à l'échelle, la mise à jour et l'application de correctifs. Ces tâches peuvent prendre du temps, être coûteuses et moins efficaces pour les charges de travail sporadiques. En revanche, ledéploiement sans serveurélimine ces frais généraux, offrant une mise à l'échelle automatique et une haute disponibilité dès le départ.

Caractéristiques de AWS Lambda

  • Architecture pilotée par les événements : Les fonctions AWS Lambda sont invoquées en réponse à des événements tels que des modifications de données, des requêtes HTTP ou des mises à jour de ressources AWS. 
  • Prise en charge d'un grand nombre d'exécutions : Lambda prend en charge différents moteurs d'exécution, notamment Python, Node.js, Java, Go, Ruby et .NET. Les développeurs peuvent également apporter leur propre runtime à l'aide de l'API AWS Lambda Runtime, ce qui en fait une plateforme polyvalente pour divers cas d'utilisation.
  • Évolution automatique : AWS Lambda fait automatiquement évoluer votre application en fonction de la demande. Qu'il s'agisse de traiter un seul événement ou des milliers simultanément, Lambda ajuste les ressources de calcul de manière dynamique.
  • Tarification à la carte : Les coûts sont déterminés par le nombre de demandes et le temps d'exécution de vos fonctions. Cela élimine le besoin d'investissements initiaux et garantit que vous ne payez que pour ce que vous utilisez.
  • Sécurité intégrée : Lambda works avec AWS Identity and Access Management (IAM), garantissant uncontrôle d'accès fin et des interactions sécurisées entre vos fonctions et d'autres services AWS.

Cas d'utilisation courants de Lambda

  • Traitement des flux de données : AWS Lambda s'intègreavec Amazon Kinesis pour produiress et analyser des données en continu en temps réel. Par exemple, vouspouvez surveiller les appareils IoT outraiter les fichiers journaux de manière dynamique.
  • Construire des API RESTful : Les fonctions Lambda peuvent être associées à AWS API Gateway pour créer des API évolutives pour les applications web et mobiles. Cette configuration est couramment utilisée pour gérer l'authentification des utilisateurs, interroger les bases de données ou générer du contenu dynamique.
  • Automatiser les flux de travail : Automatisez des flux de travail complexes en déclenchant des fonctions Lambda basées sur des événements provenant de services tels que S3, DynamoDB ou CloudWatch. Par exemple,vous pouvez redimensionner les images téléchargées sur S3 ou archiver automatiquement les anciens enregistrements de la base de données.
  • Gestion des événements dans les pipelines de données : Vous pouvez utiliser Lambda pour gérer des événements de données en temps réel, tels que le traitement de nouveaux téléchargements vers un bucket S3, la transformation de données avant le stockage ou l'enrichissement de flux de données avec des appels d'API externes.
  • Traitement backend sans serveur : Lambda est couramment utilisé pour décharger les tâches de backend telles que la validation des données , les processus ETL (Extract, Transform, Load)ou l'envoi de notifications via Amazon SNS ou SES.

Comment fonctionne AWS Lambda ?

AWS Lambda fonctionne sur un modèle axé sur les événements, ce qui signifie qu'il exécute du code en réponse à des déclencheurs ou à des événements spécifiques. La clé de la fonctionnalité de Lambda est son intégration avec d'autres services AWS et sa capacité à exécuter des fonctions à la demande. Plongeons dans les mécanismes du fonctionnement d'AWS Lambda, étape par étape :

Capture d'écran montrant le fonctionnement des services AWS Lambda. Exemple officiel tiré du site web d'AWS.

Un exemple de schéma d'architecture utilisant Lambda et d'autres services AWS de base. Source de l'image : AWS.

1. Déclencher des fonctions AWS Lambda

Les fonctions AWS Lambda sont initiées par des événements provenant de différents services AWS ou de systèmes externes. Parmi les exemples courants de sources d'événements, on peut citer

  • Passerelle API: Lorsqu'un utilisateur envoie une requête HTTP (par exemple, une requête GET ou POST) à votre point de terminaison API Gateway, Lambda peut exécuter une fonction pour traiter la requête - par exemple, un point de terminaison API RESTful pour créer un utilisateur dans une base de données.
  • Événements S3: Les fonctions Lambda peuvent répondre à des actions telles que le téléchargement, la suppression ou la modification d'un objet dans un bac S3. Par exemple, ils peuvent redimensionner des images ou convertir des formats de fichiers après qu'une image a été téléchargée dans un panier S3.
  • Flux DynamoDB: Toute modification apportée aux tableaux DynamoDB, comme les insertions, les mises à jour ou les suppressions, peut déclencher une fonction Lambda. Par exemple, le déclenchement d'un pipeline d'analyse lorsque de nouveaux tableaux sont ajoutés à un tableau DynamoDB.
  • Applications personnalisées: Vous pouvez invoquer les fonctions Lambda directement à l'aide de SDK, de CLI ou de requêtes HTTP, ce qui vous permet d'intégrer des systèmes externes.

2. Environnement d'exécution

Lorsqu'un événement déclenche une fonction Lambda, AWS crée automatiquement un environnement d'exécution pour exécuter le code. Cet environnement comprend

  • Votre code de fonction: Le code que vous avez écrit pour votre tâche spécifique.
  • Ressources allouées: L'unité centrale et la mémoire (configurables) sont attribuées dynamiquement en fonction des besoins de la fonction.
  • Dépendances: Toutes les bibliothèques ou paquets externes spécifiés lors du déploiement sont inclus.

3. Concurrence et mise à l'échelle

AWS Lambda prend en charge la mise à l'échelle automatique en exécutant plusieurs instances de votre fonction en parallèle. Il parvient à s'adapter de manière transparente sans aucune configuration. Voici comment fonctionne la concurrence :

  • Si votre fonction doit traiter 100 événements simultanément, Lambda créera autant d'environnements d'exécution que nécessaire (jusqu'à la limite de concurrence).

4. Intégration avec d'autres services AWS

AWS Lambda s'intègre profondément aux services AWS pour construire des solutions robustes et de bout en bout :

  • Interactions avec les bases de données: Lambda peut lire/écrire des données sur DynamoDB ou RDS pendant l'exécution.
  • Services de messagerie: Lambda peut déclencher des notifications via SNS ou envoyer des messages à des files d'attente SQS pour un traitement en aval.
  • Surveillance et journalisation: CloudWatch capture tous les journaux, les métriques et les détails des erreurs pour les fonctions Lambda, ce qui vous permet de surveiller et de résoudre les problèmes de performance.

Maintenant, commençons à configurer votre première fonction Lambda !

Configuration de AWS Lambda

Conditions préalables

  • Compte AWS : Assurez-vous que vous disposez d'un compte AWS actif. Inscrivez-vous ici.
  • Configuration de l'utilisateur IAM : Créez un utilisateur IAM avec des autorisations pour AWS Lambda. Feuillez suivre le guide IAM.

Mise en place de l'environnement de développement

  • Installez AWS CLI : Téléchargez et installez le logiciel AWS CLI. Configurez-le à l'aide de vos identifiants IAM.
  • Mettez en place Python ou Node.js : Install Python ou Node.js en fonction de votre runtime préféré. AWS Lambda prend en charge plusieurs runtimes. Nous utiliserons le moteur d'exécution Python dans ce tutoriel.

Étape 1 : Accédez à la console AWS Lambda

  1. Connectez-vous à la console de gestion AWS.
  2. Naviguez jusqu'au service Lambda.

Capture d'écran du tableau de bord de navigation dans la console AWS

Tableau de bord de navigation dans la console AWS.

Cliquez sur Lambda dans le menu de navigation pour voir le tableau de bord :

Capture d'écran du tableau de bord AWS Lambda dans la console AWS

Tableau de bord AWS Lambda dans la console AWS.

Étape 2 : Créer une nouvelle fonction

  1. Cliquez sur Créer une fonction.
  2. Choisissez "Auteur à partir de zéro".
  3. Donnez un nom à votre fonction.
  4. Sélectionnez une version d'exécution (par exemple, Python 3.11).
  5. Cliquez sur le bouton Créer une fonction cliquez sur le bouton "Créer une fonction".

Capture d'écran de l'écran Créer une nouvelle fonction AWS Lambda

Créez une nouvelle fonction AWS Lambda.

Cela prendra quelques secondes. Une fois la fonction créée, un message de réussite s'affiche en haut de la page.

Étape 3 : Ecrivez votre code de fonction

Capture d'écran de l'IDE du navigateur AWS Lambda pour une édition simple du code.

L'IDE du navigateur AWS Lambda pour une édition simple du code.

Étape 4 : Testez votre fonction Lambda

À ce stade, cette fonction renvoie simplement la chaîne de caractères "Hello from Lambda !".

Il n'y a pas de logique, pas de dépendances, rien. 

Nous avons un script Python appelé lambda_function.py qui contient la fonction nommée lambda_handler() qui renvoie une chaîne de caractères. 

Nous pouvons maintenant le tester en cliquant simplement sur le bouton Test.

Capture d'écran de Tester votre fonction lambda AWS dans l'écran du navigateur

Testez votre fonction lambda AWS dans le navigateur.

Vous pouvez supprimer le "JSON de l'événement" car notre fonction ne prend aucune entrée. Donnez un nom à l'événement et cliquez sur le bouton Invoke.

Capture d'écran du test réussi de la fonction AWS Lambda

Test réussi de la fonction AWS Lambda.

La fonction a été exécutée avec succès et le message a été renvoyé.

Oui, c'est bien ! Nous venons de déployer une fonction sans serveur à l'aide d'AWS Lambda. Il ne fait pas grand-chose pour l'instant, mais il est opérationnel. Chaque fois que cette fonction est invoquée, elle renvoie une simple chaîne de caractères.

Déclenchement de Lambda avec des événements

Comme indiqué, l'architecture AWS Lambda vous permet de déclencher des fonctions en réponse à des événements spécifiques provenant de divers services AWS, ce qui en fait un outil polyvalent pour l'automatisation des flux de travail et l'intégration des systèmes. 

Les événements tels que les téléchargements de fichiers vers un bucket S3, les mises à jour dans un tableau DynamoDB ou les appels d'API via API Gateway peuvent invoquer des fonctions Lambda, ce qui permet un traitement en temps réel et une exécution évolutive.

1. Mise en place d'un déclencheur S3

  1. Accédez à la console S3.
  2. Sélectionnez le seau S3.
  3. Sous Propriétés, ajoutez une notification d'événement pour déclencher votre fonction Lambda lors de la création d'un objet.Capture d'écran de l'écran Créer une notification d'événement dans le seau AWS S3Créer unenotification d'événement dans le seau AWS S3.Capture d'écran de Sélectionner la fonction Lambda à déclencher dans S3Sélectionnezla fonction Lambda à déclencher dans S3alt.alt

Exemples de cas d'utilisation :

    • Redimensionnez automatiquement les images téléchargées sur S3.
    • Convertissez des vidéos en plusieurs résolutions ou formats pour la diffusion en continu.
    • Vérifiez les formats, les tailles ou les métadonnées des fichiers lors du téléchargement.
    • Utilisez l'IA pour extraire le texte des documents téléchargés (par exemple, via Amazon Textract).

2. Intégration de la passerelle API

  1. Naviguez jusqu'au service API Gateway.

Capture d'écran du tableau de bord du service API Gateway dans la console AWS

Le tableau de bord du service API Gateway dans la console AWS.

  1. Créez une nouvelle API REST.

Capture d'écran de la création d'une nouvelle API REST via API Gateway

Créez une nouvelle API REST via API Gateway.

  1. Configurez une méthode (par exemple, POST) pour déclencher votre fonction Lambda.

Exemples de cas d'utilisation :

    • Créez une API sans serveur pour des réponses en temps réel.
    • Déclenchez une fonction Lambda pour créer et stocker des données utilisateur dans une base de données.
    • Traiter les demandes POST pour traiter et valider les commandes des clients en temps réel
    • Déclenchez une fonction Lambda pour interroger et renvoyer des données à partir d'une base de données ou d'une API.

Déployer et surveiller les lambdas AWS

Le déploiement des fonctions AWS Lambda est simple et peut être effectué à l'aide de différentes méthodes en fonction de vos besoins, comme la console de gestion AWS pour les déploiements manuels ou la CLI AWS pour les déploiements automatisés.

1. Déploiement manuel à l'aide de la console AWS

La console de gestion AWS fournit une interface web intuitive pour déployer les fonctions Lambda. Cette méthode est idéale pour les petits projets ou les changements rapides. Voici comment déployer une fonction Lambda à l'aide de la console :

  1. Créez ou modifiez une fonction :
    • Connectez-vous à la console de gestion AWS.
    • Naviguez jusqu'à AWS Lambda.
    • Cliquez sur Créer une fonction pour créer une nouvelle fonction ou sélectionnez une fonction existante à mettre à jour.
  2. Téléchargez votre code :
    • Choisissez Télécharger à partir de et sélectionnez le fichier .zip ou l'image du conteneur.
    • Vous pouvez éditer votre code de fonction directement dans l'éditeur de code intégré pour le développement à petite échelle.
  3. Configurez la fonction :
    • Définissez les variables d'environnement, l'allocation de mémoire et les délais d'attente en fonction de votre cas d'utilisation.
    • Ajoutez les autorisations nécessaires à l'aide des rôles AWS IAM pour permettre à la fonction d'interagir avec d'autres services AWS.
  4. Déployez les modifications :
    • Cliquez sur Déployer pour enregistrer et activer vos modifications.
    • Utilisez la fonction Test pour invoquer la fonction manuellement et vérifier qu'elle fonctionne comme prévu.

2. Déploiement automatisé à l'aide de la CLI AWS 

L'AWS CLI est un moyen efficace de déployer et de mettre à jour les fonctions Lambda pour l'automatisation ou les mises à jour fréquentes. Il garantit la cohérence et réduit les erreurs manuelles, en particulier dans les grands projets ou les pipelines CI/CD.

Étape 1 - Préparer le paquet de déploiement

Regroupez votre code et vos dépendances dans un fichier .zip. Par exemple :

zip -r my-deployment-package.zip .

Étape 2 - Déployer la fonction à l'aide de l'interface de programmation

Utilisez le update-function-code pour télécharger le nouveau code sur AWS Lambda :

aws lambda update-function-code \
    --function-name MyFunction \
    --zip-file fileb://my-deployment-package.zip

Étape 3 - Vérifier le déploiement

Après le déploiement, vérifiez l'état de la fonction à l'aide de :

aws lambda get-function --function-name MyFunction

Cette commande permet de récupérer la configuration de la fonction et de confirmer le déploiement.

Surveillance de Lambda avec CloudWatch

La surveillance est essentielle pour s'assurer que vos fonctions Lambda s'exécutent efficacement, gèrent les erreurs avec élégance et répondent aux attentes en matière de performances. AWS Lambda intègretes avec Amazon CloudWatch pourfournir des capacités de surveillance et de journalisation.

Amazon CloudWatch collecte et affiche automatiquement des indicateurs clés pour vos fonctions Lambda. Ces mesures vous aident à analyser les performances de votre fonction et à résoudre les problèmes.

Mesures à surveiller :

  1. Invocations: Couvre le nombre de fois que votre fonction est invoquée. Vous aide à comprendre les modèles de trafic et les tendances d'utilisation.
  2. Erreurs: Affiche le nombre d'erreurs pendant l'exécution de la fonction. Utilisez-le pour identifier les taux d'échec et déboguer les problèmes.
  3. Durée: Mesure le temps nécessaire à l'exécution de la fonction. Ceci est crucial pour optimiser les performances et gérer les coûts.
  4. Papillon d'étranglement: Indique le nombre d'invocations qui ont été limitées en raison de l'atteinte des limites de concurrence.

Accès aux métriques:

  • Accédez à la console CloudWatch Metrics.
  • Sélectionnez Lambda dans la liste des espaces de noms.
  • Choisissez la fonction que vous souhaitez surveiller pour afficher des mesures détaillées.

Meilleures pratiques AWS Lambda

Maintenant que vous avez déployé votre première fonction Lambda, il est utile de connaître quelques bonnes pratiques pour de futurs projets plus complexes. Dans cette section, je vous propose quelques bonnes pratiques à garder à l'esprit.

1. Optimiser la fonction de démarrage à froid

Les démarrages à froid se produisent lorsqu'une fonction Lambda est invoquée après avoir été inactive, ce qui entraîne une légère latence car AWS provisionne l'environnement d'exécution. Bien qu'AWS minimise ces frais généraux, vous pouvez prendre certaines mesures pour réduire le temps de démarrage à froid :

Utiliser des paquets de déploiement plus petits

  • Allégez votre paquetage de déploiement en n'y incluant que les dépendances nécessaires.
  • Utilisez des outils tels que AWS Lambda Layers pour partager des bibliothèques communes (par exemple, AWS SDK) entre les fonctions sans les inclure dans des packages individuels.
  • Compressez et minifiez le code lorsque c'est possible, en particulier pour les fonctions basées sur JavaScript ou Python.

Évitez les initialisations lourdes dans vos fonctions

Déplacez l'initialisation à forte intensité de ressources (par exemple, les connexions à la base de données, les clients API ou les bibliothèques tierces) en dehors du gestionnaire de fonction. Cela garantit que le code n'est exécuté qu'une seule fois par environnement et qu'il n'est pas réutilisé d'une invocation à l'autre.

Tirer parti de la concurrence provisionnée

Pour les fonctions critiques et sensibles aux temps de latence, utilisez Provisioned Concurrency pour que l'environnement d'exécution soit toujours prêt à répondre aux demandes. Bien qu'elle entraîne des coûts supplémentaires, elle garantit une faible latence pour les charges de travail prioritaires.

2. Maintenir les fonctions sans état

L'apatridie est un principe fondamental de l'architecture sans serveur, garantissant que votre application évolue de manière transparente :

Éviter de dépendre des données en mémoire

Les fonctions lambda sont éphémères, ce qui signifie que leur environnement d'exécution est temporaire et peut ne pas persister d'une invocation à l'autre. Au lieu de vous appuyer sur des variables en mémoire, stockez les informations d'état dans des systèmes externes tels que DynamoDB, S3 ou Redis.

Activer l'idempotence

Concevez vos fonctions de manière à ce qu'elles gèrent les événements dupliqués avec élégance. Utilisez des identifiants uniques pour les demandes et vérifiez les journaux ou les bases de données pour vous assurer que le même événement n'est pas traité plusieurs fois.

3. Utiliser les variables d'environnement

Les variables d'environnement sont un moyen sûr et pratique de configurer vos fonctions Lambda :

Stocker des informations sensibles

  • Stockez les clés d'API, les chaînes de connexion à la base de données et d'autres secrets sous forme de variables d'environnement. AWS Lambda chiffre ces variables au repos et les déchiffre pendant l'exécution.
  • Pour plus de sécurité, utilisez AWS Secrets Manager ou Systems Manager Parameter Store pour gérer les secrets de manière dynamique.

Simplifier la gestion de la configuration

Utilisez les variables d'environnement pour gérer des configurations telles que les niveaux de journalisation, les paramètres régionaux ou les URL de services tiers. Cela élimine le besoin de valeurs codées en dur, ce qui rend votre fonction plus portable d'un environnement à l'autre (par exemple, dev, staging, prod).

Conclusion

Ce tutoriel a fourni un guide pour démarrer avec AWS Lambda, de la compréhension de ses fonctionnalités et cas d'utilisation au déploiement et à la surveillance efficace des fonctions. Vous pouvez créer des applications sans serveur robustes et faciles à maintenir en respectant les meilleures pratiques, telles que l'optimisation des démarrages à froid, le maintien des fonctions sans état et l'utilisation de variables d'environnement.

AWS Lambda est un moyen de construire des architectures modernes, axées sur les événements, qui s'intègrent à l'écosystème AWS. Si vous souhaitez en savoir plus, je recommande de consulter les cours AWS de DataCamp.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Scientifique de données, fondateur et créateur de PyCaret

Sujets

Apprenez-en plus sur AWS grâce à ces cours !

Cours

AWS Cloud Technology and Services Concepts

3 hr
6.3K
Master AWS cloud technology with hands-on learning and practical applications in the AWS ecosystem.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus