2016-12-14 2 views
2

Ich habe ein paar AWS Lambda-Funktionen. Alle diese Funktionen verwenden einige allgemeine Hilfsfunktionen. Ich habe diese Hilfsfunktionen in einer separaten Datei namens helper_functions.py platziert. Ich möchte dieses Modul in alle meine AWS Lambda-Funktionen importieren. Ich kann keinen Platz zum Speichern dieses Moduls finden (helper_functions.py). Wenn ich also eine Änderung in diesem Modul vornimmt, muss ich an meinen Lambda-Funktionen nichts ändern.Importieren Sie ein Python-Modul in mehrere AWS Lambdas

Einige der Optionen, die ich gedacht sind:

  1. Hochladen des Moduls auf AWS S3 und es dann in jedem Lambda Funktion im Start von S3 und mit den Funktionen zu laden. (Wenn möglich)

  2. ein Skript schreiben (was ich noch nicht herausgefunden), die das Modul zusammen mit den Lambda Funktionen Python-Datei in einem Zip und lädt sie auf AWS Lambda Pakete

Bitte schlagen Sie eine bessere Lösung vor, um das Modul zu verwalten und viel effizienter zu importieren.

+1

Lambda-Paket hat eine Größenbeschränkung. Sie sollten alle Module, die in diese Größe passen, in das Zip-Paket einschließen. Die restlichen Module können Sie in s3 speichern und von dort importieren. – MYGz

+0

Wenn ich das Modul in alle Lambda-Pakete einfüge und dann etwas im Modul ändern möchte, muss ich alle Lambda-Pakete aktualisieren, oder? – Sibtain

+0

einschließlich Module aus Zip-Paketen wird effizienter sein, denke ich. Sie können ein kleines Skript schreiben, um die Module in allen Paketen zu aktualisieren. Überprüfen Sie diese: http://docs.aws.amazon.com/cli/latest/reference/lambda/update-function-code.html – MYGz

Antwort

2

Ich kämpfte mit diesem für eine lange Zeit. Hier ist meine Lösung (möglicherweise gibt es einen besseren Weg sein):

Setup Ihre Hilfsfunktion in Ihrem Dateisystem wie folgt aus:

pathToSomewhere/my_helper/helper_functions.py pathToSomewhere/my_helper/__init__.py pathToSomewhere/setup.py

Wo __init__.py ist:

from .helper_functions import * 

und setup.py ist

from setuptools import setup 

setup(name='my_helper', 
     version='0.10000', 
     description='My helper functions', 
     url='http://github.com/user/example', 
     license='Proprietary', 
     author='Null', 
     author_email='[email protected]', 
     packages=['my_helper'], 
     install_requires=['boto3'], 
     zip_safe=False) 

Packen wir jetzt my_helper. Von pathToSomewhere/ Laufe:

python setup.py sdist 

Ich nehme an, Sie wissen bereits, wie eine virtuelle Umgebung für den Betrieb Ihrer Lambda-Funktion erstellen und hochladen. Wenn nicht, lass es mich wissen.

Jetzt installieren wir my_helper in das virtuelle env Ihrer Lambda-Funktion. Lassen Sie uns Ihre virtuelle Umgebung übernehmen wird worker_env genannt

./worker-env/bin/pip install file://pathToSomewhere/my_helper 

zip Jetzt bis worker-env und dem tatsächlichen Lambda-Skript und laden das.

+0

Danke für die Antworten! Aber derzeit bin ich einen Schritt weiter und mache die kontinuierliche Lieferung mit AWS Codepipeline, die wirklich cool ist und einfach ist, Ihre serverlosen Anwendungen zu packen und bereitzustellen. Aktivieren Sie [this] (http://docs.aws.amazon.com/lambda/latest/dg/automation-deployment.html), um loszulegen. – Sibtain