[PYTHON] Définissez la fonction Lambda et laissez-la fonctionner avec les événements S3!

Qu'est-ce que Lambda?

L'un des services fournis par AWS, c'est un service qui peut exécuter le traitement sans gestion de serveur.

Par exemple, si vous n'utilisez pas Lambda, le processus ne sera exécuté qu'après avoir créé un serveur avec EC2, installé le middleware et la langue requis pour exécuter le processus et défini l'environnement.

Cependant, avec Lambda, il est possible de s'exécuter en écrivant simplement le processus sans provisionner un tel serveur.

Cette volonté ★ Pas besoin de gérer et de maintenir le serveur lui-même ★ Étant donné que vous êtes facturé uniquement pour le temps d'exécution du traitement, vous pouvez réduire considérablement les coûts en fonction de la fréquence de traitement. ★ Il est très pratique pour l'architecture principale AWS car il peut être facilement lié à d'autres services AWS. Il y a un mérite.

Qu'est-ce qu'un déclencheur?

Il est nécessaire de définir un déclencheur pour exécuter le processus écrit. Il peut être lié à tous les services AWS et est généralement exécuté lorsqu'une alarme se produit sur CloudWatch, lorsque des données existent dans le flux de données Kinesis ou lorsqu'un fichier est placé sur S3.

En d'autres termes, Lambda est un service qui fonctionne si vous n'écrivez que ** conditions à exécuter ** et ** processus à exécuter **.

Je veux vraiment le définir!

Écrivons maintenant un processus pour télécharger le fichier vers s3 et confirmons qu'il a été téléchargé.

1. Connectez-vous à la console AWS et cliquez sur «Créer une fonction» sur l'écran Lambda.

Lambda définira la fonction pour chaque région. Il n'y a pas de problème avec S3, mais lors de la liaison avec des services affectés par d'autres régions, sélectionnez la même région. image.png

2. Sélectionnez "Créer à partir de 1" et définissez "Nom de la fonction", "Runtime" et "Rôle d'exécution".

Cette fois, nous utiliserons python 3.7. Le rôle doit être "Créer un nouveau rôle avec des autorisations Lambda de base". Il n'y a aucun problème à utiliser les rôles existants. Dans ce cas, Lambda doit avoir l'autorisation d'écrire des groupes de journaux dans CloudWatch pour les services de condition de déclenchement et la sortie de journal.

«Runtime» désigne la langue de traitement. Depuis le 02/05/2020, les langues pouvant être sélectionnées sont les suivantes. ・ Java 11/8 ・ .NET Core2.1 (C # / PowerShell) ・ GO 1.x · Parce que. js 12. x / 10. X ・ Python 3,8 / 3,7 / 3,6 / 2,7

3. Définissez les conditions d'exécution avec "Add Trigger"

Cette fois, exécutons-le lorsqu'un objet est créé dans s3. Lorsque le support de déclenchement est réglé sur s3, les cinq éléments suivants sont disponibles. ·seau -Type d'événement (si le fichier est PUT ..., si le fichier est supprimé ... etc.) -Prefix (chemin du répertoire après le bucket, nom du fichier, etc.) ・ Suffixe (nom de fichier, extension, etc.) -Activer le déclencheur (le déclencheur avec les paramètres ci-dessus fonctionnera dès que vous le vérifierez. Allumons-le après avoir testé le processus) image.png

4. Réglez le code de fonction

Par défaut, le processus est décrit dans un fichier appelé lambda_function.py.

import json

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

lambda_handler est une fonction qui est automatiquement exécutée lorsque la condition de déclenchement définie dans Lambda est remplie. Modifiez après `` # TODO implémenter '' et écrivez le processus que vous souhaitez exécuter.

Cette fois, je vais essayer d'afficher le chemin et le nom du fichier où le fichier a été placé dans s3.

import json

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
 print (le bucket + '+ key +' a été créé dans le bucket! ')

Le «événement» passé en argument à lambda_handler contient les informations d'événement qui l'ont déclenché sous forme de tableau. Ce qui précède obtient le nom du compartiment et le chemin du fichier et l'affiche.

5. Exécution / confirmation

La fonction elle-même peut être exécutée en plaçant le fichier dans le chemin spécifié par le déclencheur. En plus de cela, il est possible d'exécuter la fonction Lambda de manière pseudo en définissant la valeur à saisir dans «événement» à partir du «test» dans l'image ci-dessous au format json. tempsnip.png

De plus, il est possible de sélectionner la fonction cible dans le groupe de journaux CloudWatch et de la vérifier dans le journal d'exécution de la fonction. tempsnip.png

J'ai pu confirmer que la fonction Lambda a été exécutée correctement! !! tempsnip.png

À la fin

Lambda utilise l'environnement AWS, et si vous souhaitez effectuer un traitement simple, il est fortement recommandé en termes de coût et de gestion. J'étais un peu inquiet car il n'y a pas d'espace pour écrire une explication de ce que fait la fonction, alors décrivons en détail le nom de la fonction facile à comprendre et les commentaires dans le processus, et ayons une vie Lambda confortable! !!

Recommended Posts

Définissez la fonction Lambda et laissez-la fonctionner avec les événements S3!
Associez Python Enum à une fonction pour la rendre appelable
Étapes pour configurer Pipenv, créer une application CRUD avec Flask et la conteneuriser avec Docker
Configurer un serveur Samba avec Docker
[AWS] Associez Lambda et S3 à boto3
[AWS lambda] Déployer, y compris diverses bibliothèques avec lambda (générer un zip avec un mot de passe et le télécharger vers s3) @ Python
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Configurer un serveur HTTPS simple avec asyncio
Configurer un serveur local avec le téléchargement Go-File-
[Piyopiyokai # 1] Jouons avec Lambda: création d'une fonction Lambda
Configurer un serveur local avec le téléchargement Go-File-
Notez que j'étais accro à la configuration de TensowFlow
Configurer un environnement de développement Python avec Sublime Text 2
[Vagrant] Configurer un serveur API simple avec python
Configurer un environnement de développement Python avec Visual Studio Code
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Créez un script de déploiement avec fabric et cuisine et réutilisez-le
Traitez le fichier gzip UNLOADed avec Redshift avec Python de Lambda, gzipez-le à nouveau et téléchargez-le sur S3
Créer une liste d'utilisateurs Cognito dans S3 avec SQS Déployer des fonctions de traitement de file d'attente et des API sur Lambda avec SAM
Comment définir un raccourci pour basculer entre pleine largeur et demi-largeur dans IBus
Déplacer régulièrement les journaux CloudWatch vers S3 avec Lambda
Définir les événements CloudWatch dans la fonction AWS Lambda (WebAPI) déployée via zappa
Créez un fichier temporaire avec django sous forme de zip et renvoyez-le
[Python 3.8 ~] Comment définir intelligemment des fonctions récursives avec des expressions lambda
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
J'ai créé un chat chat bot avec Tensor2Tensor et cette fois cela a fonctionné
Obtenez une liste des paramètres de caméra qui peuvent être définis avec cv2.VideoCapture et faites-en un type de dictionnaire
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)