Wie füge ich Python-Pakete mit kompilierten Binärdateien zu meinem Bereitstellungspaket hinzu und mache das Paket mit Lambda kompatibel?
Ich habe pip verwendet, um ein Python-Paket zu installieren, das kompilierten Code enthält, und jetzt gibt meine AWS Lambda-Funktion den Fehler „Unable to import module“ zurück.
Kurzbeschreibung
Python-Pakete, die kompilierten Code enthalten, wie NumPy und Pandas, sind standardmäßig nicht immer mit Lambda-Laufzeiten kompatibel. Wenn Sie diese Pakete mit Pip installieren, laden die Pakete ein module name-Paket für die Architektur des lokalen Computers herunter und kompilieren es. Wenn Sie kein Linux-Betriebssystem (OS) verwenden, ist Ihr Bereitstellungspaket dadurch nicht mit Lambda-Python-Laufzeiten kompatibel.
Um Ihr Bereitstellungspaket oder Ihre Bereitstellungsebene mit Lambda auf einem Nicht-Linux-Betriebssystem kompatibel zu machen, führen Sie den Befehl „pip install“ mit manylinux2014 als Wert für den --platform parameter aus.
Hinweis: macOS --platform-Tags funktionieren nicht. Beispielsweise installieren die win_amd64 und macosx_10_6_intel-Tags kein Bereitstellungspaket, das mit Lambda kompatibel ist.
Behebung
**Hinweis:**Das folgende Beispielverfahren zeigt, wie Pandas für die Lambda Python 3.9-Runtime installiert wird, die auf der x86\ _64-Architektur ausgeführt wird.
-
Öffnen Sie eine Befehlszeile. Führen Sie dann den folgenden Pip-Befehl aus, um zu bestätigen, dass Sie eine Version von Pip verwenden, die Version 19.3.0 oder neuer ist:
pip --version
Wenn Sie eine Version von Pip verwenden, die älter als Pip-Version 19.3.0 ist, führen Sie ein Upgrade auf die neueste Version von Pip durch:
python3.9 -m pip install --upgrade pip
-
Installieren Sie die WHL-Datei des vorkompilierten Python-Pakets als Abhängigkeit im Projektverzeichnis Ihrer Lambda-Funktion:
**Wichtig:**Ersetzen Sie my-lambda-function durch den Namen des Projektverzeichnisses Ihrer Funktion.
pip install \ --platform manylinux2014_x86_64 \ --target=my-lambda-function \ --implementation cp \ --python-version 3.9 \ --only-binary=:all: --upgrade \ pandas
-
Öffnen Sie das Projektverzeichnis Ihrer Lambda-Funktion. Wenn Sie macOS verwenden, führen Sie den folgenden Befehl aus:
cd my-lambda-function
-
Erstellen Sie in einem Texteditor eine neue Datei mit dem Namen lambda_function.py. Kopieren Sie dann den folgenden Beispielcode und fügen Sie ihn in die Datei ein:
import numpy as np import pandas as pd def lambda_handler(event, context): df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=["a", "b", "c"]) number = np.pi print(df2) print(number)
Speichern Sie diese Datei im Projektverzeichnis Ihrer Lambda-Funktion.
-
Erstellen Sie ein ZIP-Dateiarchiv für das Lambda-Bereitstellungspaket, das alle installierten Bibliotheken und den Quellcode enthält:
zip -r ../my-deployment-package.zip .
Verwenden Sie das Dateiarchiv my-deployment-package.zip, um entweder eine neue Python 3.9 Lambda-Funktion zu erstellen oder eine bestehende zu aktualisieren. Anweisungen finden Sie unter Working with .zip file archives for Python Lambda functions.
**Hinweis:**Sie können ein ähnliches Verfahren verwenden, um eine Lambda-Schicht zu erstellen, die für mehrere Funktionen verwendet werden kann. Mit dem folgenden Befehl wird beispielsweise eine neue Lambda-Schicht erstellt, um Pandas für die Lambda Python 3.9-Laufzeit zu installieren, die auf der arm64-Architektur ausgeführt wird:
pip install \ --platform manylinux2014_aarch64 \ --target=./python/lib/python3.9/site-packages \ --implementation cp \ --python-version 3.9 \ --only-binary=:all: --upgrade \ pandas
Ähnliche Informationen
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 4 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 4 Jahren