AWS Lambda - Présentation

AWS Lambdaest un service qui effectue un calcul sans serveur, ce qui implique un calcul sans serveur. Le code est exécuté en fonction de la réponse d'événements dans les services AWS tels que l'ajout / la suppression de fichiers dans le compartiment S3, la mise à jour des tables Amazon Dynamo dB, la requête HTTP de la passerelle d'API Amazon, etc.

Pour travailler avec AWS Lambda, il suffit de pousser le code dans le service AWS Lambda. Toutes les autres tâches et ressources telles que l'infrastructure, le système d'exploitation, la maintenance du serveur, la surveillance du code, les journaux et la sécurité sont prises en charge par AWS.

AWS Lambdaprend en charge des langages tels que Java, NodeJS, Python, C # et Go. Notez qu'AWS Lambda fonctionnera uniquement avec les services AWS.

Qu'est-ce qu'AWS Lambda?

La définition d'AWS Lambda telle que donnée par sa documentation officielle est la suivante:

AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans provisionnement ni gestion de serveurs. AWS Lambda exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de quelques demandes par jour à des milliers par seconde. Vous ne payez que pour le temps de calcul que vous consommez - il n'y a pas de frais lorsque votre code n'est pas en cours d'exécution.

Comment fonctionne AWS Lambda?

Le schéma fonctionnel qui explique le fonctionnement d'AWS Lambda en cinq étapes faciles est illustré ci-dessous:

Step 1 − Chargez le code AWS lambda dans l'un des langages pris en charge par AWS lambda, à savoir NodeJS, Java, Python, C # et Go.

Step 2 − Ce sont quelques services AWS sur lesquels AWS lambda peut être déclenché.

Step 3 −AWS Lambda qui contient le code de téléchargement et les détails de l'événement sur lequel le déclencheur s'est produit. Par exemple, événement d'Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, application mobile, etc.

Step 4 − Exécute AWS Lambda Code uniquement lorsqu'il est déclenché par les services AWS dans les scénarios tels que -

  • L'utilisateur télécharge des fichiers dans le compartiment S3
  • L'URL du point de terminaison http get / post est atteinte
  • les données sont ajoutées / mises à jour / supprimées dans les tables dynamo dB
  • notification push
  • collecte de flux de données
  • hébergement de site Web
  • envoi d'e-mails
  • application mobile, etc.

Step 5 − N'oubliez pas qu'AWS ne facture que lorsque le code AWS lambda s'exécute, et pas autrement.

Avantages de l'utilisation d'AWS Lambda

AWS Lambda offre de nombreux avantages lorsque vous y travaillez. Cette section les aborde en détail -

Facilité de travail avec le code

AWS Lambda vous donne l'infrastructure pour télécharger votre code. Il s'occupe de maintenir le code et déclenche le code chaque fois que l'événement requis se produit. Il vous permet de choisir la mémoire et le délai requis pour le code.

AWS Lambda peut également exécuter des requêtes parallèles selon les déclencheurs d'événements.

Provision de journal

AWS Lambda donne les détails du nombre de fois qu'un code a été exécuté et du temps pris pour l'exécution, la mémoire consommée, etc. AWS CloudWatch collecte tous les journaux, ce qui aide à comprendre le flux d'exécution et au débogage du code.

Facturation basée sur l'utilisation

La facturation AWS Lambda est effectuée en fonction de l'utilisation de la mémoire, de la demande effectuée et de l'exécution, qui est facturée par incréments de 100 ms minimum. Donc pour une exécution de 500ms, la facturation se fera toutes les 100ms. Si vous spécifiez que votre code lambda AWS doit être exécuté dans 500 ms et que le temps d'exécution n'est que de 200 ms, AWS ne vous facturera que le temps nécessaire, c'est-à-dire 200 ms d'exécution au lieu de 500 ms. AWS facture toujours le temps d'exécution utilisé. Vous n'avez pas besoin de payer si la fonction n'est pas exécutée.

Prise en charge multilingue

AWS Lambda prend en charge les langages courants tels que Node. js, Python, Java, C # et Go. Ce sont des langages largement utilisés et tout développeur trouvera facile d'écrire du code pour AWS Lambda.

Facilité de création et de déploiement de code

Il existe de nombreuses options disponibles pour Lambda pour la création et le déploiement de code. Pour écrire votre code, vous pouvez utiliser l'éditeur en ligne AWS, Visual Studio IDE ou Eclipse IDE. Il prend également en charge le framework sans serveur, ce qui facilite l'écriture et le déploiement du code AWS Lambda. Outre la console AWS, nous avons AWS-cli pour créer et déployer du code.

Autres caractéristiques

Vous pouvez utiliser AWS Lambda gratuitement en vous connectant à l'offre gratuite AWS. Il vous offre un service gratuit pendant 1 an. Jetez un œil aux services gratuits proposés par l'offre gratuite d'AWS.

Inconvénients de l'utilisation d'AWS Lambda

Malgré de nombreux avantages, AWS Lambda présente les inconvénients suivants:

  • Il ne convient pas aux petits projets.

  • Vous devez analyser soigneusement votre code et décider de la mémoire et du délai. Dans le cas où votre fonction a besoin de plus de temps que ce qui est alloué, elle se terminera selon le délai spécifié et le code ne sera pas entièrement exécuté.

  • Étant donné qu'AWS Lambda repose entièrement sur AWS pour l'infrastructure, vous ne pouvez pas installer de logiciel supplémentaire si votre code l'exige.

Événements qui déclenchent AWS Lambda

Les événements pouvant déclencher AWS Lambda sont les suivants:

  • Entrée dans un objet S3
  • Insertion, mise à jour et suppression de données dans la table Dynamo DB
  • Notifications push de SNS
  • Appels GET / POST à ​​API Gateway
  • Modification des en-têtes au niveau du visualiseur ou de la demande / réponse d'origine dans CloudFront
  • Entrées de journal dans le flux de données AWS Kinesis
  • Historique des journaux dans CloudTrail

Cas d'utilisation d'AWS Lambda

AWS Lambda est un service de calcul principalement utilisé pour exécuter des processus d'arrière-plan. Il peut se déclencher lorsqu'il est utilisé avec d'autres services AWS. La liste des services AWS où nous pouvons utiliser AWS Lambda est donnée ci-dessous -

Objet S3 et AWS Lambda

Amazon S3 transmet les détails de l'événement à AWS Lambda lorsqu'il y a un téléchargement de fichier dans S3. Les détails du téléchargement ou de la suppression du fichier ou du déplacement du fichier sont transmis à AWS Lambda. Le code dans AWS Lambda peut effectuer les étapes nécessaires lorsqu'il reçoit les détails de l'événement. Par exemple, création d'une vignette de l'image insérée dans S3.

DynamoDB et AWS Lambda

DynamoDB peut déclencher AWS Lambda lorsque des données sont ajoutées, mises à jour et supprimées dans la table. L'événement AWS Lambda contient tous les détails de la table AWS DynamoDB concernant l'insertion / la mise à jour ou la suppression.

API Gateway et AWS Lambda

API Gateway peut déclencher AWS Lambda sur les méthodes GET / POST. Nous pouvons créer un formulaire et partager des détails avec le point de terminaison API Gateway et l'utiliser avec AWS Lambda pour un traitement ultérieur, par exemple, en créant une entrée des données dans la table DynamoDB.

SNS et AWS Lambda

SNS est utilisé pour la notification push, l'envoi de SMS, etc. Nous pouvons déclencher AWS lambda lorsqu'une notification push se produit dans SNS. Nous pouvons également envoyer des SMS au numéro de téléphone d'AWS Lambda lorsqu'il reçoit le déclencheur.

Événements planifiés et AWS Lambda

Les événements planifiés peuvent être utilisés pour les tâches cron. Il peut déclencher AWS Lambda pour qu'il exécute la tâche à un rythme régulier.

CloudTrail et AWS Lambda

CloudTrail peut être utile pour surveiller les journaux sur le compte. Nous pouvons utiliser AWS Lambda pour traiter davantage les journaux CloudTrail.

Kinesis et AWS Lambda

Kinesis est utilisé pour capturer / stocker les données de suivi en temps réel provenant des clics sur le site Web, des journaux, des flux de médias sociaux et un déclencheur pour AWS Lambda peut effectuer un traitement supplémentaire sur ces journaux.

CloudFront et Lambda @ Edge

CloudFront est un réseau de diffusion de contenu sur lequel vous pouvez héberger votre site Web et Lambda @ Edge peut être utilisé pour traiter les en-têtes provenant de la demande du lecteur, de la demande d'origine, de la réponse d'origine et de la réponse du lecteur. La modification des en-têtes comprend des tâches telles que la modification des données de cookie, la réécriture d'URL, utilisées pour les tests AB pour modifier la réponse renvoyée à l'utilisateur, l'ajout d'informations d'en-têtes supplémentaires à des fins de sécurité, etc.