[AWS / Lambda] Laden einer externen Python-Bibliothek

Überblick

AWS Lambda kann im Ausgangszustand keine externen Bibliotheken wie Pandas und Numpy laden. Es gibt zwei Möglichkeiten, es zu laden: Die erste besteht darin, die installierten Bibliotheken und ausführbaren Dateien in einer Zip-Datei zusammenzufassen und auf Lambda hochzuladen, und die zweite darin, es als Ebene mit Lambda zu laden. Die letztere Methode wird empfohlen, aber in diesem Artikel haben wir diese Methoden als Tipps zusammen mit dem Aspekt der Codeverwaltung zusammengefasst.

Umgebung

MacOS Catalina Docker installiert AWS CLI installiert

Einführung

Da es für das Code-Management nicht gut ist, Lambda im Browser zu entwickeln, werden wir die lokale Entwicklung ermöglichen. Mit anderen Worten, es erfolgt in lokaler Form, sodass es jederzeit von gitHub verwaltet und Codeänderungen auf Lambda hochgeladen werden können. Daher habe ich mit docker-lambda eine Bereitstellungsumgebung erstellt. (Bitte klonen Sie, wenn Sie es verwenden möchten) https://github.com/shoda888/local2lambda

Zuerst brauchen wir ein Docker-Image, damit wir es erstellen können. (Nur zum ersten Mal) $ docker build -t shoda888/local2pylambda .

Wenn Sie danach den im Voraus erstellten Lambda-Funktionsnamen in die Variable funcname von "deploy.sh" eingeben und Folgendes ausführen, wird der Upload automatisch ausgeführt. $ sh deploy.sh

Schreiben Sie lambda_function.py neu und implementieren Sie.sh erneut, um festzustellen, ob es sich geändert hat.

So laden Sie die Bibliothek in einer Zip-Datei auf Lambda hoch

Geben Sie require.txt einfach einen Bibliotheksnamen und deploy.sh (Pandas, Numpy, Anfragen usw.). Im Arbeitsverzeichnis wird eine große Anzahl von Bibliotheksverzeichnissen erstellt. Das Hochladen von Pandas ist zu schwer und dauert ca. 5 Minuten. Wenn ich es auf Lambda überprüfe, ist der Upload erfolgreich, aber eine Warnung wird angezeigt.

Das Bereitstellungspaket für die Lambda-Funktion "*******" ist zu groß, um die Inline-Code-Bearbeitung zu ermöglichen. Sie können die Funktion jedoch aufrufen.

スクリーンショット 2019-12-07 15.27.14.png

Es scheint, dass die Funktion noch aufgerufen werden kann.

So organisieren Sie eine Bibliothek in einer Ebene

Es ist eine gute Idee, die Datei require.txt leer zu lassen, da es mühsam ist, die Bibliothek jedes Mal zu komprimieren und hochzuladen. Ich denke, dass es bequem und wiederverwendbar ist, wenn die Bibliothek in einer Ebene zusammengestellt wird. (Die Verwaltung von Bibliotheksversionen kann jedoch in Zukunft problematisch sein.) Mal sehen, wie man die Bibliothek in einer Ebene organisiert.

Für reine Python-Bibliotheken

Im Fall einer reinen Python-Bibliothek kann beispielsweise eine Bibliothek, die zu 100% aus Python besteht (siehe Abbildung), problemlos eine Zip-Datei für die Ebene auf Ihrem Mac erstellen, ohne die Amazon Linux- oder Ubuntu-Umgebung mit EC2 vorzubereiten.  purepython.png

Wenn Sie ask_sdk_core als Beispiel installieren möchten, ist dies alles. (Beispiel für Python3.7)

$ mkdir -p build/python/lib/python3.7/site-packages
$ pip3 install ask_sdk_core -t build/python/lib/python3.7/site-packages/
$ cd build
$ zip -r ask_sdk.zip .

Fügen Sie die generierte ask_sdk.zip zur Ebene hinzu und passen Sie die Ebene im Lambda an, um die Bibliothek zu laden. スクリーンショット 2019-12-07 17.22.29.png layer.png

Für nicht reine Python-Bibliotheken

Wie Numpy und Pandas. Es scheint besser, eine Amazon Linux-Umgebung mit EC2 zu erstellen und zu komprimieren. (Ich hatte das Gefühl, dass ich Layer schon einmal mit Ubuntu gemacht habe, aber kann Ubuntu verwendet werden?)

Viele Leute haben dies bereits getan, daher werden die Artikel anderer Leute sehr hilfreich sein. [Pandas als Lambda-Schicht hinzufügen] (https://qiita.com/thimi0412/items/4c725ec2b26aef59e5bd) Gemeinsame Bibliothek mit AWS Lambda-Ebenen

Das Folgende ist Youtube, aber Layer wird mit Ubuntu erstellt. (Einfach zu verstehen) [AWS Lambda Layers for Pandas library] (https://youtu.be/zrrH9nbSPhQ)

Zusammenfassung

Nachdem es möglich geworden ist, Lambda zu entwickeln, während der Code lokal verwaltet wird, wird die Methode zum Laden der externen Bibliothek als Tipps zusammengefasst.

Recommended Posts

[AWS / Lambda] Laden einer externen Python-Bibliothek
Wie benutzt man Python Lambda?
Verwendung von Anfragen (Python Library)
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
python3 So installieren Sie ein externes Modul
Zugriff auf RDS von Lambda (Python)
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Zusammenfassung des Schreibens von AWS Lambda
Verwendung der C-Bibliothek in Python
[Version 2020] So installieren Sie Python3 auf EC2 von AWS
So installieren Sie Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So installieren Sie Python
Installieren einer externen Bibliothek für Python
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
So konfigurieren Sie Layer auf Lambda mit AWS SAM
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Ich möchte Lambda mit Python auf Mac AWS!
[Neueste Version 2020.8] So installieren Sie Python
So installieren Sie Python [Windows]
python3: Verwendung der Flasche (2)
[Python] Scraping in AWS Lambda
[Python] Verwendung von Liste 1
So aktualisieren Sie Pythons Tkinter auf 8.6
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
So ändern Sie die Python-Version
Wie man in Python entwickelt
[Python] Wie man Skalar beurteilt
[Python] Verwendung von input ()
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
So starten Sie AWS Batch über die Python-Client-App
Ausführen externer Shell-Skripte und -Befehle in Python
Stellen Sie externe Module (numpy, scipy, Anfragen usw.) für AWS Lambda bereit
[Python] Ermöglicht den Import von pip3-Paketen in AWS Lambda
So erhalten Sie Informationen von Organisationen, Cost Explorer eines anderen AWS-Kontos bei Lambda (Python)
So installieren Sie Python mit Anaconda
[Python] Wie man MP3-Daten fFT
Python: So verwenden Sie Async mit
Zusammenfassung bei Verwendung von AWS Lambda (Python)
Einführung in die Python Numerical Calculation Library NumPy
[Python] Verwendung der Pandas-Serie
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
[Lambda] [Python] Von Lambda auf Twitter posten!
Schreiben Sie die AWS Lambda-Funktion in Python
Führen Sie Python planmäßig auf AWS Lambda aus
So erhalten Sie die Python-Version
Erste Schritte mit Python
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
[Python] So tauschen Sie Array-Werte aus
So verpacken Sie C in Python