
Partager:
Adam est un développeur et un consultant qui aime l'ultra-course, les blogs, et qui aide les autres à apprivoiser la technologie pour accomplir des choses étonnantes avec un désir insatiable de mentorat et d'aide.
Python sans serveur avec AWS Lambda
Temps de lecture : 8 minutes
L'utilisation de Python dans les environnements sans serveur peut être plus automatisée que ce que j'ai partagé dans mon précédent précédent en utilisant PHP et Bref. Chez AWS, il existe déjà des environnements préexistants qui facilitent le déploiement initial sans utiliser d'outils supplémentaires. Cependant, l'utilisation d'outils tels que le framework Serverless a toujours de la valeur.
Cet exemple va créer un fichier AWS Lambda pour Python en utilisant Serverless. Ensuite, nous ajouterons une passerelle API pour la rendre disponible à l'aide d'un client HTTP ou d'un navigateur de votre choix.
Conditions préalables
Voici les éléments dont vous aurez besoin pour suivre tous les exemples :
Node.js pour l'installation de Serverless
Serverless pour faciliter la création et la gestion d'environnements
Account AWS et clés d'accès pour un utilisateur ayant accès à AWS S3 ainsi qu'à AWS Lambda
Approche de la console AWS
Pour la création de fonctions de base, la console AWS peut être utilisée pour naviguer dans la zone de gestion Lambda et cliquer sur Create Function en haut à droite. Suite à cela, vous nommerez et sélectionnerez l'environnement souhaité.
AWS Console Lambda Python Function Creation
Cadre sans serveur
Bien que la console AWS puisse effectuer les tâches essentielles de création d'une fonction, nous utiliserons le Serverless Framework En utilisant le cadre Serverless, nous obtenons des scripts pour automatiser toute répétition potentielle du processus, ainsi qu'un code de démarrage pour une validation immédiate. Ainsi, notre première étape consiste à installer ce framework sur le système de développement que vous utilisez. Nous recommandons de l'installer globalement, afin de pouvoir l'utiliser de n'importe où via le CLI.
Références AWS
Une fois Serverless installé, assurez-vous d'avoir également configuré les identifiants AWS nécessaires pour que Serverless interagisse avec les différents services AWS (S3, Lambda, et potentiellement EC2 ou les bases de données selon les besoins). Dans cet exemple, nous n'utiliserons que S3 et Lambda. Vous pouvez en savoir plus à ce sujet sur serverless.com.
Créer une base
Serverless vous guidera à travers quelques invites pour l'aider à créer une structure de départ. Pour ce faire, appelez Serverless depuis le répertoire du projet via CLI.
Suivre les invites
Serverless commencera à vous guider dans la création d'un nouveau projet, le type de projet que vous souhaitez créer (Node.js, Python, ou Autre), un nom pour ce projet, et si vous souhaitez activer les services Serverless ajoutés (nécessitant un compte Serverless). Une fois complétée, la structure de base sera générée.
AWS Lambda Python Project Creation With Serverless
Exemple de fichier YML
A titre d'exemple, voici un fichier de départ serverless.yml créé par le processus :
service: app
provider:
name: aws
runtime: python3.8
functions:
hello:
handler: handler.helloDans le fichier, observez le nom du service, que vous pouvez modifier pour qu'il corresponde aux conventions de dénomination de vos fonctions. Par défaut, il portera le nom que vous avez spécifié lors de la création du projet.
Suite à cela, nous pouvons voir les informations du fournisseur pour AWS Lambda avec le runtime Python.
Vient ensuite la section décrivant les détails de la fonction. Le gestionnaire initial est inclus pour les tests en tant que fonction ou HTTP (ce qui nécessite une étape supplémentaire présentée plus loin).
Déploiement sur AWS Lambda
Pour les cas d'utilisation Function ou HTTP, le projet par défaut serverless fournit suffisamment de squelette pour être déployé directement sur AWS Lambda et testé en utilisant Serverless. En s'appuyant sur la configuration des identifiants AWS ajoutée précédemment, Serverless se déploiera directement sur Lambda en utilisant le contenu de serverless.yml comme critères.
IMPORTANT : L'exemple d'application, tel quel, ne comporte aucune authentification ou vérification. Toute personne ayant accès à l'URL fournie après le déploiement peut y accéder. Cela pourrait entraîner des frais inattendus sur vos comptes. Par conséquent, veuillez sécuriser l'application si vous avez l'intention de la laisser active.
Test de la fonction
Dans le cas d'une fonction, il y a deux façons de tester. La première consiste à utiliser la console AWS, tandis que la seconde consiste à utiliser Serverless via CLI à partir du système utilisé pour le déploiement.
Console AWS
Dans la console AWS, sélectionnez l'élément Lambda dans la liste des services de calcul.
AWS Console-Lambda Dashboard
Sur le tableau de bord Lambda, vous pouvez sélectionner la fonction créée et créer un nouveau test en cliquant sur Configure test events. Vous pouvez également cliquer sur le bouton Test pour recevoir la même invite.
Lambda Create Test
Pour tester le squelette créé, ajoutez un nom et modifiez légèrement le JSON dans le corps.
Configure Test Events
En cliquant sur le bouton Create au bas de la boîte de dialogue, vous pouvez alors cliquer sur le bouton Test pour exécuter le test. L'exécution devrait se traduire par l'apparition d'une zone de dialogue verte que vous pouvez développer pour afficher les résultats.
Lambda Test Results
Exécution de fonctions sans serveur
Comme indiqué ci-dessus, vous pouvez également utiliser la CLI Serverless pour tester la fonction en utilisant la commande suivante depuis la racine de l'application locale :
Exemple de résultat :
Serverless Lambda Function Execution
Test d'une fonction HTTP
Vous pouvez également tester en tant que fonction HTTP. Cependant, cela nécessite l'ajout d'un déclencheur API Gateway dans la console AWS Lambda. Le déclencheur aurait pu être spécifié dans le fichier serverless.yml mais pour cet exemple de base, il est bon que vous sachiez comment le faire manuellement.
Dans la page des propriétés de la fonction Lambda, cliquez sur Add Trigger dans la zone du concepteur. Dans l'invite suivante, sélectionnez API Gateway dans la liste.
Add an API Gateway Trigger
Ensuite, définissez le déclencheur à Create a new API et sélectionnez HTTP API avant de cliquer sur le bouton Add avant de cliquer sur le bouton
Define the API Gateway Trigger
Après avoir ajouté le déclencheur API Gateway, il est maintenant possible de demander l'URL fournie par le déclencheur à l'aide d'un client HTTP ou d'un navigateur standard.
Request the Function in a Browser
Et ensuite ?
Avec une fonction AWS Lambda créée, vous pouvez continuer à ajouter plus de code et à créer des apps Python plus robustes en exploitant les technologies sans serveur disponibles aujourd'hui. Surveillez les prochains articles montrant comment créer des fonctions utiles pour exploiter les API et les services de Vonage à l'aide d'AWS Lambda.