2016-03-17 18 views
12

Hat jemand eine vollständig kompilierte Version von Pandas, die mit AWS Lambda kompatibel ist?Pandas & AWS Lambda

Nach ein paar Stunden Suche kann ich nicht finden, was ich suche und die Dokumentation zu diesem Thema ist nicht existent.

Ich brauche Zugriff auf das Paket in einer Lambda-Funktion, aber ich konnte nicht erfolgreich das Paket zur Kompilierung für die Verwendung in einer Lambda-Funktion kompilieren.

Anstelle der Kompilation kann jeder reproduzierbare Schritte zum Erstellen der Binärdateien bereitstellen?

Leider konnte ich keine der Leitfäden zu den Themen erfolgreich reproduzieren, da sie meistens Pandas mit scipy kombinieren, die ich nicht brauche und eine zusätzliche Lastschicht hinzufügt.

+0

Überprüfen Sie die Antwort auf http://stackoverflow.com/a/43766512/345606 um Rat einschließlich Python-Pakete, wie Pandas, die Code kompiliert haben. – Kevin

Antwort

7

Nach einigem tüftelt und viel von googeln konnte ich alle Arbeit und Aufbau ein Repo machen, die nur in der Zukunft geklont werden können.

SCHLUSSELERKENNTNISSE:

  1. Alle statischen Pakete auf einer Amazon EC2 Linux-Instanz
  2. Der Python-Code, um die Bibliotheken in den lib/Ordnern vor der Ausführung laden muss kompiliert werden.

Github Repo: https://github.com/moesy/AWS-Lambda-ML-Microservice-Skeleton

+0

@Moe bitte [markieren Sie eine der Antworten als akzeptiert] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – peralmq

+0

@dsvensson nehmen Sie bitte einen zweiten Blick auf die Repo es baut die Binärdateien aus der Quelle. – Moe

13

Ich glaube, Sie sollten in der Lage sein, die neueste Pandas-Version (oder wahrscheinlich, die auf Ihrem Rechner) zu verwenden. Sie können einen Lambda-Paket mit Pandas selbst wie diese schaffen,

  1. Zuerst finden, wo die Pandas Paket auf Ihrem Rechner installiert ist, dh ein Python-Terminal öffnen und

    import pandas 
    pandas.__file__ 
    

    Typ, der etwas gedruckt werden soll, wie '/usr/local/lib/python3.4/site-packages/pandas/__init__.py'

  2. Kopieren Sie nun den Pandas-Ordner von diesem Ort (in diesem Fall '/usr/local/lib/python3.4/site-packages/pandas) und legen Sie ihn in Ihr Repository.
  3. Paket Ihre Lambda-Code mit Pandas wie folgt aus:

    zip -r9 my_lambda.zip pandas/ 
    zip -9 my_lambda.zip my_lambda_function.py 
    

Sie können auch Ihren Code S3 einsetzen und machen Sie Ihren Lambda den Code aus S3 verwenden.

aws s3 cp my_lambda.zip s3://dev-code//projectx/lambda_packages/ 

Here's the repo that will get you started