Présentation rapide d'AWS Lambda
Qu'est ce que c'est
AWS Lambda: il s'agit d'un service informatique qui vous permet d'exécuter du code pour presque n'importe quel type d'application ou de service de serveur, le tout sans administration. AWS Lambda effectue toute l'administration pour vous, y compris la maintenance du serveur et du système d'exploitation, l'allocation des ressources et la mise à l'échelle automatique, la surveillance du code et la journalisation. Tout ce que vous avez à faire est de soumettre votre code dans l'une des langues prises en charge par AWS Lambda.
Pourquoi l'utiliser?
- L'argent. Vous ne payez que pour la durée d'exécution du service.
- La vitesse. Lambda elle-même se lève et fonctionne très rapidement.
- Commodité. Lambda possède de nombreuses fonctionnalités pour l'intégration avec les services AWS.
- Performance. En parallèle, elle peut être réalisée, selon les régions, d'un maximum de 1000 à 3000 copies. Et si vous le souhaitez, cette limite peut être augmentée en écrivant à l'appui.
Cette approche a ses inconvénients, vous ne pouvez pas contrôler le système d'exploitation sur lequel le code est exécuté, vous ne pouvez pas contrôler le CPU, la mémoire et les ressources. Tout cela est fait par AWS.
Tout ce que vous pouvez faire est de choisir une langue dans AWS Lambda pris en charge.
Que pouvez-vous?
Voici une brève liste des principales fonctionnalités d'AWS Lambda. Ensuite, nous considérerons tout dans l'ordre.
1. Déclencheurs
Les déclencheurs sont les «pathogènes» de lambda. D'une certaine manière, lambda peut être comparé à PHP, dans le sens où il
tourne et meurt pour nous. Ensuite, nous examinerons en détail le mécanisme de travail. Pour l'instant, vous devez comprendre que lambda est une fonction qui est exécutée à la demande des déclencheurs.
Voici une liste de tous les déclencheurs possibles:Passerelle API
AWS IoT
Kit de compétences Alexa
Alexa Smart Home
Équilibreur de charge d'application
Cloudfront
Événements Cloudwatch
Journaux Cloudwatch
CodeCommit
Déclencheur de synchronisation Cognito
Dynamodb
Kinesis
S3
SNS
SQS
Pour chacun d'eux, vous devrez configurer des paramètres uniques disponibles pour ces déclencheurs. Vous pouvez également configurer plusieurs déclencheurs sur un lambda. Cela dépend du type de déclencheur, que le lambda s'exécute de manière synchrone ou asynchrone.
Remarque: veuillez noter que la lambda peut être exécutée soit en utilisant l'AWS CLI, AWS SDK en mode manuel, en passant tous les paramètres nécessaires. Y compris s'il fonctionnera de manière synchrone ou non
Regardons un exemple:
1. API de passerelle - vous permet de tirer le lambda sur la demande http et nécessite de renvoyer le résultat à l'utilisateur Une telle opération ne peut pas être effectuée de manière asynchrone, car nécessite une réponse. Pour les opérations synchrones, certaines fonctions ne sont pas disponibles.
2. SQS - par exemple, si notre lambda traite les messages de SQS, vous n'avez pas besoin de renvoyer le résultat n'importe où et il peut être exécuté de manière asynchrone. Avec une exécution asynchrone, plusieurs nouvelles fonctionnalités apparaissent, par exemple, nous pouvons configurer l'exécution répétée en cas d'erreur, ou envoyer de telles demandes à la file d'attente
SQS «morte».
2. Autorisations aux services AWS
Ce sont des services AWS auxquels lambda a accès par défaut. Qu'est-ce que cela signifie? Vous pouvez toujours connecter le kit SDK AWS à la fonction que vous allez écrire, et sans les clés ou les paramètres d'autorisation, vous pouvez utiliser les services disponibles. Vous définissez tous les services disponibles dans le
rôle IAM que vous utilisez pour ce lambda.
Chaque langue utilisée possède son propre SDK qui peut communiquer avec les principaux services AWS.
Remarque: pour chaque lambda, vous configurez le rôle IAM à partir de la personne qui exécutera le lambda
Vous pouvez configurer un réseau virtuel pour votre lambda, par exemple, pour vous
connecter en toute sécurité à
RDS .
4. Éditeur en ligne
AWS Lambda offre également la possibilité de modifier le code de votre fonction directement à partir de l'interface de votre navigateur.

5. Enregistrement
Toutes les demandes de lambda sont enregistrées dans
CloudWatch , les données sur l'exécution et la mémoire y sont également enregistrées, ces données peuvent être très utiles pour fixer des limites. De plus, le code a la possibilité de consigner vos propres données (par exemple, dans Node.js via console.log).
De plus, vous pouvez toujours voir des statistiques sur l'utilisation de lambda dans l'onglet
Surveillance .
6. Variables d'environnement
Vous avez la possibilité de transférer des variables d'environnement en toute sécurité dans du code, ce qui vous permet de configurer des parties importantes du système sans fournir de code. Il est possible de
crypter les variables d'environnement via des clés.Remarque: notez qu'il existe une liste de variables d'environnement prédéfinies
7. Code
Maintenant la partie la plus intéressante, la lambda elle-même se compose de plusieurs parties.1. Calques - le calque inférieur. Il est facultatif, mais si vous devez ajouter des bibliothèques pour utiliser le lambda, vous devez les mettre séparément du code principal, de sorte que vous économisez considérablement sur la quantité de code principal et la vitesse de la fonction elle-même.
Les couches dans AWS Lambda sont quelque peu similaires aux
couches de docker , en ce sens qu'elles sont permanentes par rapport à la fonction, et elles doivent être modifiées séparément. Ils peuvent également être réutilisés dans d'autres lambdas.
2. Environnement de fonction - le code doit nécessairement contenir une fonction qui sera directement exécutée à chaque lancement du lambda
(Handler) . À propos d'elle ci-dessous. Et devant elle est son environnement, que nous demandons. Le fait est que la gestion des ressources se fait de telle manière que cet environnement est stocké séparément de la fonction pendant un certain temps après son achèvement. Et au prochain démarrage, il reprend sans passer de temps et de ressources à l'initialisation. Ainsi, tout ce qui est possible doit être initialisé à la fonction elle-même, par exemple, la configuration, la connexion des bibliothèques, etc.
3. Gestionnaire - le code directement exécuté lui-même, selon la langue, est défini différemment. Par exemple, prenez Node.Js. Pour que votre code s'exécute, vous avez besoin de:
- fichier js - 1pc
- exports.yourFunction = () => {// Votre code} - 1pc
Par défaut, index.js est lancé et recherche une fonction appelée «gestionnaire». Ensuite, il l'exécute. Votre fonction peut être asynchrone dans le code. Cela n'affecte pas l'exécution synchrone de lambda.
Voici un exemple de code, je vais essayer de décrire ce qui s'y passe:
8. Versioning
Le service prend en charge le versionnage pratique. En bref, nous pouvons publier une version pour chaque copie téléchargée. Et ajoutez des alias qui pointent vers une version. Comment ça marche? Voir le tableau ci-dessous.

Et donc, voyons maintenant ce qui doit être fait pour obtenir ce que nous voyons dans le diagramme
Énoncer un
- Créez la première version de notre lambda. Avec la première version, nous créons un pointeur vers la version de "$ LATEST" . Il indique toujours la dernière version ajoutée.
- Ajoutez l'alias "Dev" . Ici, nous choisissons où lier, nous avons plusieurs options - créer un pointeur vers un numéro de version spécifique, dans notre cas "1" , lier le pointeur à "$ LATEST" , ou lier à un autre alias. Dans ce cas, nous nous attachons au pointeur "$ LATEST" , et maintenant notre alias "Dev" pointera toujours vers la dernière branche, afin que nous puissions toujours tester notre application avec la dernière version de lambda sur l'environnement de développement. Et si soudain nous devons vérifier comment cela fonctionne sur l'ancienne version, nous avons juste besoin de basculer l'alias dans le déclencheur ou de changer le lien dans l'alias vers la version sans toucher à notre application
- Ajoutez l' alias Stage et liez-le à la première version de notre lambda
- Ajoutez l'alias «Prod» et répétez ce que nous avons fait pour la «scène»
Remarque: ici, il est décrit comment travailler avec les alias dans la pratique. La partie pratique sur lambda sera dans le prochain article avec SQS
Et donc, maintenant nous avons quelque chose d'incompréhensible, en fait 3 alias se réfèrent à une version, ce n'est pas clair. Mais rien, tout est en ordreDeuxième état
- Créez une deuxième version de notre lambda (il est possible d'ajouter la deuxième sortie de «Hello world»). Ici, je tiens à noter qu'en ce moment, "$ LATEST" examinera immédiatement la deuxième version. Et puisque "Dev" est lié à "$ LATEST" , il examinera également la deuxième version.
- Ensuite, nous voulons que notre Stage examine la deuxième version. Maintenant, il est lié à la version "1" . Ici, nous devons changer manuellement la version indiquée par "Stage ".
- Réjouis-toi. Nous avons obtenu ce que nous considérons comme le deuxième état du graphique. C'est-à-dire que notre "Prod" regarde la première version, et "Dev" et "Stage" la seconde.
Troisième état
Maintenant, pour obtenir le troisième état, nous avons juste besoin d'ajouter quelques lignes de plus à notre code et il y aura une troisième version de notre lambda. Et
"Dev" va maintenant la regarder.
Résumer
Et alors qu'avons-nous?
Un petit. Vite. Relativement bon marché. Mise à l'échelle automatique. Versionné. Fonction.
Dans cet article, nous n'avons considéré que la partie théorique, la familiarité avec ce service. Identique à
SQS dans le dernier article. Dans le prochain article, nous examinerons comment ces deux services interagissent et, sous une forme pratique, nous apprendrons comment les configurer et les utiliser.