So erstellen Sie ein AWS Lambda Python 3.6-Bereitstellungspaket mit Docker

Kürzlich habe ich Docker verwendet, um ein AWS Lambda-Bereitstellungspaket in Python 3.6 zu erstellen, das Pandas, Numpy und SQLalchemy verwendet. Ich dachte, ich würde schnell mitteilen, wie dies für andere getan wird, die diesen Workflow auf andere Pakete und Projekte ausweiten möchten.

Wie im Titel erwähnt, ist für diese Methode Docker erforderlich. Sie müssen es also installieren, wenn Sie es noch nie zuvor verwendet haben. Machen Sie sich keine Sorgen, wenn Sie Docker noch nie zuvor verwendet haben. Der Einstieg ist ziemlich einfach und Sie müssen nicht so viel wissen, um viel zu erreichen. Hier ist ein kurzes Tutorial, mit dem ich mir einfache Befehle merken kann.

Sobald Sie Docker installiert haben, starten Sie ein Terminal und geben Sie den folgenden Befehl ein:

docker run -it dacut / amazon-linux-python-3.6

Das Image wird zuerst lokal auf Ihrem Computer gesucht. Wenn es nicht gefunden wird, wird es natürlich in Docker Hub gesucht, abgerufen und der Container in Ihrer Shell gestartet. Das Image, das wir ziehen, ist eine Amazon Linux-Instanz, auf der Python 3.6 installiert ist. Dies ist genau das, was wir zum Erstellen unseres Bereitstellungspakets benötigen, da AWS Lambda-Funktionen mit Python 3.6 in einer Amazon Linux-Umgebung ausgeführt werden.

Wenn der Download abgeschlossen ist, werden Sie feststellen, dass sich Ihre Eingabeaufforderung geändert hat, und Sie befinden sich im Stammverzeichnis der Amazon Linux-Umgebung. Wenn Sie dies tun, werden Sie feststellen, dass Sie sich nicht in Ihrer lokalen Umgebung befinden. Und wenn Sie auf einem Mac wie mir arbeiten, können Sie uname ausführen, um zu überprüfen, ob Sie eine Linux-Umgebung verwenden:

Erstellen Sie jetzt ein neues Verzeichnis und kopieren Sie es auf eine CD (in diesem Beispiel nenne ich mein Verzeichnis "Lambda"). Führen Sie nun im neu erstellten Verzeichnis Folgendes aus:

pip3 install  -t ./

Dadurch wird Ihr Paket im aktuellen Verzeichnis installiert. Wenn Sie mehrere Pakete haben, können Sie die Paketnamen einfach durch Leerzeichen trennen und alles in derselben Zeile ausführen. Führen Sie nach der Installation aller Pakete im selben Verzeichnis Folgendes aus:

# Sie können die ZIP-Datei beliebig benennen
zip -r lambda.zip *

Dadurch werden alle Ihre Pakete in eine ZIP-Datei komprimiert. Der nächste Schritt besteht darin, diese ZIP-Datei einfach von Ihrem Docker-Container auf Ihren lokalen Computer zu kopieren. Der Befehl docker cp führt dies aus, Sie benötigen jedoch zuerst die ID des aktuellen Containers. Führen Sie in einem anderen Terminalfenster Folgendes aus:

Docker ps -a

In der ersten Spalte wird die Container-ID für ein bestimmtes Bild angezeigt. Wenn Sie dies wissen, können Sie einfach Folgendes ausführen, um nur diese ID zurückzugewinnen:

Docker ps -a | grep "dacut" | awk '{print $ 1}'

Dies listet zuerst die Container auf, der Befehl grep filtert dann nach jenen mit dem Namen "dacut", der für das von uns gezogene Bild eindeutig ist, und schließlich gibt der Befehl awk nur die erste Spalte zurück, die die von uns gewünschte Container-ID ist. Angesichts all dessen können wir endlich den folgenden Befehl ausführen, um die ZIP-Datei auf unseren lokalen Computer zu kopieren:

Docker cp $ (Docker ps -a | grep "dacut" | awk '{print $ 1}'): / lambda / lambda.zip 

Mit anderen Worten lautet das Format:

docker cp :  

Jetzt haben Sie die Zip-Datei in einem Verzeichnis auf Ihrem lokalen Computer. cd in dieses lokale Verzeichnis und füge deine lambda_function.py hinzu, indem du einfach Folgendes ausführst:

zip -ur lambda.zip 

Und fertig! Sie haben jetzt ein Python 3.6-Bereitstellungspaket, das für die Bereitstellung in AWS bereitsteht!

Viel Spaß beim Codieren!