Ecrire une fonction AWS Lambda en Python

Pour le moment, JavaScript / Node.js est le seul langage qui peut être utilisé comme fonction Lambda dans AWS Lambda. Mais il y a des gens qui veulent écrire en Python, alors j'ai exécuté un script écrit en Python.

Mais ce n'est pas difficile. Nous savons qu'un script qui s'exécute en tant que fonction Lambda peut exécuter des commandes externes. Nous avons également constaté dans une enquête précédente qu'il existe un runtime python dans l'environnement (voir les résultats de ls dans Uncovering AWS Lambda).

Il vous suffit donc de générer un script écrit en Python en utilisant JavaScript dans la fonction Lambda et de l'appeler en tant que commande externe en utilisant child_process ().

Faisons-le maintenant.

Cette fois, au lieu de générer un script dans la fonction Lambda, le script préparé à l'avance est enregistré dans S3, et il est acquis par un accès HTTP dans l'environnement de la fonction Lambda et exécuté. De plus, lors de l'extraction d'un fichier par HTTP, curl est utilisé car il n'y a pas de wget dans l'environnement de la fonction Lambda pour une raison quelconque.

Tout d'abord, préparez le script Python que vous souhaitez exécuter. Cette fois, je l'ai essayé et je l'ai fait ressembler à ça.

test.py


#! /usr/bin/python
print "Hello, Wordl!"

Donnez-le à S3 et rendez-le public pour activer l'accès HTTP.

Vient ensuite le code de la fonction Lambda qui est réellement enregistrée.

index.js


exports.handler = function(event, context) {
    var exec = require('child_process').exec;
    
    var cmd = "curl -s https://s3-ap-northeast-1.amazonaws.com/<nom du bucket>/test.py > /tmp/test.py;chmod 755 /tmp/test.py;/tmp/test.py"
    var child = exec(cmd, function(error, stdout, stderr) {
        if (!error) {
            console.log('standard out: ' + stdout);
            console.log('standard error: ' + stderr);
            context.done();
        } else {
            console.log("error code: " + error.code + ", err: " + error);
            context.done(error,'lambda');
        }
    });
};

Oui, comme vous l'avez peut-être remarqué, le script précédent est le même. Je change juste la commande externe pour l'exécuter. Les commandes qui sont réellement exécutées exécutent simplement ce qui suit dans l'ordre.

  1. Obtenez un script Python à exécuter en utilisant curl et enregistrez-le dans / tmp
  2. Accorder l'autorisation d'exécution
  3. Exécutez

Invoquons maintenant la fonction Lambda.

2014-11-26T11:51:47.683Z	a0862c9f-7562-11e4-8f05-ebd8b45899f3	standard out: Hello, Wordl!

Oh, il a été exécuté correctement et "Hello, World!" Était sorti!

Donc, que cela soit réellement utile ou non, j'ai exécuté un script écrit en Python avec la fonction Lambda.

** Avertissement Il s'agit d'une opinion individuelle, quelle que soit l'entreprise ou l'organisation à laquelle elle appartient. ** **

Recommended Posts

Ecrire une fonction AWS Lambda en Python
[Python] Scraping dans AWS Lambda
Ecrire Python dans MySQL
Ecrire des filtres Pandec en Python
Créer une fonction en Python
Écrire une distribution bêta en Python
Ecrire python dans Rstudio (réticulé)
Fonction ntile (décile) en python
Modélisation de fonctions non linéaires en Python
Dessiner la fonction Yin en python
Fonction immédiate (lie) en python
Déployer la fonction Python 3 avec Serverless Framework sur AWS Lambda
[Python] Retry processing (Exponential Backoff) mémo dans AWS Lambda
Ecrire une dichotomie en Python
Récapitulatif si vous utilisez AWS Lambda (Python)
Définition du type d'argument de fonction en python
fonction python ①
Ecrire un schéma JSON avec Python DSL
Ecrire un serveur HTTP / 2 en Python
Ecrire des algorithmes A * (A-star) en Python
Mesurer le temps d'exécution de la fonction en Python
Exécutez Python selon la planification sur AWS Lambda
[Python] Faire de la fonction une fonction lambda
Ecrire le code de test du sélénium en python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Synthèse de fonctions et application en Python
Notifier HipChat avec AWS Lambda (Python)
Ecrire un test unitaire de langage C en Python
fonction python ②
Définir les événements CloudWatch dans la fonction AWS Lambda (WebAPI) déployée via zappa
Bonnes pratiques pour la journalisation au format JSON sur AWS Lambda / Python
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
J'ai comparé Node.js et Python lors de la création d'une miniature à l'aide d'AWS Lambda
Écrire de la documentation dans Sphinx avec Python Livereload
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Utiliser l'impression dans l'expression lambda Python2
Précautions lors du décapage d'une fonction en python
Ecrire le test dans la docstring python
Obtention d'informations d'identification AWS temporaires en PHP, Python
Ecrire une courte définition de propriété en Python
Ecrire le fichier O_SYNC en C et Python
Ecrire un programme de chiffrement Caesar en Python
Lire et écrire des fichiers JSON avec Python
Ecrire une méthode de cupidité simple en Python
Fonction Lambda pour effectuer une sauvegarde AMI (python)
[Python] Exécutez Headless Chrome sur AWS Lambda
Ecrire un module python dans fortran en utilisant f2py
Ecrire un plugin Vim simple en Python 3
Connectez-vous à s3 avec AWS Lambda Python
Comment écrire Ruby to_s en Python
Résumé de l'écriture d'AWS Lambda
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda