Python >> Tutoriel Python >  >> Python

Premiers pas avec AWS Lambda et Python 2.7

Amazon Web Services (AWS) Lambd est un service de calcul « sans serveur » qui exécute du code Python arbitraire en réponse à des événements définis par le développeur, tels que des appels d'API entrants ou des téléchargements de fichiers vers AWS S3. Notez qu'AWS Lambda n'a rien à voir avec le lambda mot-clé en Python qui est utilisé pour créer des fonctions anonymes, c'est juste le nom du produit qui entre en collision avec un nom de fonctionnalité du langage Python existant.

Dans ce didacticiel, nous allons apprendre à écrire et à exécuter rapidement une fonction Lambda qui exécute du code Python 2.7 simple et gère des variables d'environnement. Le code peut ensuite être modifié pour créer des applications Python beaucoup plus compliquées.

Remarque  :AWS a mis fin à la prise en charge des fonctions Python 2.7 Lambda en 2021 et Python 2.7 ne reçoit plus de prise en charge, vous devriez donc vraiment utiliser Python 3.8 ou une version ultérieure.

Outils dont nous avons besoin

Nous n'avons besoin d'aucun outil d'environnement de développement local pour parcourir cette procédure pas à pas autre qu'un navigateur Web, car tout le travail se fera sur AWS.

Obtenez un nouveau compte Amazon Web Services gratuit ou utilisez votre compte AWS existant.

Premiers pas avec Lambda

Accédez à la page d'accueil d'AWS Lambda dans votre navigateur Web. Connectez-vous à votre compte ou inscrivez-vous pour un nouveau compte qui est livré avec un niveau gratuit afin que vous n'ayez pas à payer.

Si vous n'êtes pas redirigé directement vers la page de la console Lambda après vous être connecté, vous verrez la console principale. AWS a un nombre ridicule de services (qui semble augmenter chaque semaine), donc la meilleure façon de se déplacer est de sélectionner la zone de texte de recherche et de rechercher "lambda" comme indiqué dans la capture d'écran suivante.

Appuyez sur le bouton "Créer une fonction Lambda" et vous verrez la page "Sélectionner un Blueprint".

Choisissez "Fonction vide". L'écran suivant donne la possibilité de sélectionner un "déclencheur", qui est la façon dont la fonction Lambda est exécutée. Un déclencheur est un événement qui est intégré à d'autres services AWS et qui peut être exposé en externe via une API ou un appareil tel qu'Alexa.

Cependant, nous n'allons pas configurer de déclencheur pour cette fonction, car nous pouvons tester manuellement le Lambda plus tard avant de le connecter à un déclencheur. Laissez l'icône du déclencheur vide et cliquez sur le bouton "Suivant" pour passer à l'écran suivant.

Nous sommes maintenant sur l'écran où nous pouvons entrer notre configuration spécifique et le code pour notre nouveau Lambda.

Écrire notre code Python

Commencez par saisir un nom pour votre fonction Lambda, tel que "my_first_python_lambda" et une description. Le champ de description est facultatif, mais il est pratique lorsque vous commencez à utiliser Lambda régulièrement pour garder toutes vos fonctions droites. Dans le menu déroulant Runtime, sélectionnez Python 2.7 comme langage d'exécution.

Sous le menu déroulant Runtime, vous verrez une grande zone de texte pour écrire du code. Nous pouvons également choisir de télécharger un fichier ZIP avec notre application Python, ce qui est pratique pour plus que de simples tests Lambdas. Cependant, pour notre simple application starterLambda, vous pouvez copier ou saisir le code suivant (ou le copier à partir de ce dépôt GitHub). Assurez-vous de remplacer ce qui se trouve déjà dans la zone de texte.

import os


def lambda_handler(event, context):
    what_to_print = os.environ.get("what_to_print")
    how_many_times = int(os.environ.get("how_many_times"))

    # make sure what_to_print and how_many_times values exist
    if what_to_print and how_many_times > 0:
        for i in range(0, how_many_times):
            print(what_to_print)
        return what_to_print
    return None

Le code ci-dessus a le lambda_handler requis définition de fonction qui fournit un point d'ancrage au service Lambda pour savoir par où commencer l'exécution du code Python. Pensez à lambda_handler en tant que main fonction lorsque vous réutilisez ce service.

Notre code Python attend et lit deux variables d'environnement, puis le code imprime un message de zéro à plusieurs fois, en fonction du montant défini dans le how_many_times variable. Si un message est imprimé alors la fonction renvoie le what_to_print string, si rien n'est imprimé alors None est renvoyé.

Juste en dessous de la zone de texte de saisie de code, des paires clé-valeur de variable d'environnement peuvent être définies. Notre code utilisera deux variables d'environnement, nommées what_to_print et how_many_times .

Entrez les clés nommées what_to_print et how_many_times puis entrez leurs valeurs. Utilisez un message de chaîne pour what_to_print la valeur de et un nombre entier entier supérieur à 0 pour how_many_times . La gestion des erreurs de notre code Python n'est pas très robuste donc une valeur autre qu'un nombre dans le how_many_times causera une erreur au script lors de son exécution.

Notre code et nos variables d'environnement sont en place et nous avons juste besoin de définir quelques paramètres supplémentaires spécifiques à AWS avant de pouvoir tester la fonction Lambda.

Exécuter Lambda

Faites défiler sous les variables d'environnement jusqu'à la section "Gestionnaire de fonction Lambda et rôle". Cette section contient les derniers éléments de configuration requis. Conservez le gestionnaire par défaut, qui doit être lambda_function.lambda_handler . Sélectionnez "Créer un nouveau rôle à partir de modèle(s)" dans le menu déroulant puis pour le champ "Nom du rôle", saisissez "dynamodb_permissions". Sous "Modèles de politique", sélectionnez les "Autorisations de microservice simples".

Les "autorisations de microservice simples" donnent à notre Lambda un accès àAWS DynamoDB. Nous n'utiliserons pas DynamoDB dans ce didacticiel, mais il est très utile en tant que stockage permanent ou temporaire lorsque vous travaillez avec Lambda.

Maintenant que notre code et notre configuration sont en place, cliquez sur le bouton "Suivant" dans le coin inférieur droit de la page.

L'écran de révision nous montrera nos paramètres de configuration. Faites défiler vers le bas et cliquez sur le bouton "Créer une fonction" pour continuer.

Nous devrions voir un message de réussite sur la page suivante juste en dessous du bouton "Enregistrer et tester".

Appuyez sur le bouton "Tester" pour exécuter le Lambda. Lambda nous demande certaines données pour simuler un événement qui déclencherait notre fonction. Sélectionnez l'exemple de modèle d'événement "Hello World", qui contient quelques exemples de clés. Notre Lambda n'utilisera pas ces clés lors de son exécution, donc peu importe ce qu'elles sont. Cliquez sur le bouton "Enregistrer et tester" en bas du modal.

Faites défiler jusqu'à la section "Résultat de l'exécution" où nous pouvons voir notre sortie.

Nous obtenons la sortie du journal qui nous montre la valeur de retour de notre fonction. Dans ce cas, il s'agit du message de chaîne de what_to_print . Nous pouvons également voir ci-dessous que notre fonction d'impression a produit une sortie cinq fois.

Quelle est la prochaine ?

Génial, vous venez de configurer, d'écrire et d'exécuter votre premier code Python 2.7 sur AWS Lambda ! La véritable puissance de Lambda apparaît lorsque vous y connectez un déclencheur afin que votre code s'exécute en fonction des événements. Nous y reviendrons dans le prochain tutoriel.

Que pouvez-vous faire d'autre avec Python et Lambda ? Consultez la page AWS Lambda pour plus d'exemples et de didacticiels.

Des questions? Contactez-moi via Twitter@fullstackpythonor @mattmakai. Je suis également sur GitHub avec le nom d'utilisateur mattmakai.

Quelque chose ne va pas avec ce message ? Forksource de cette page sur GitHub.