Blog

So installieren Sie eine beliebige Python-Binärabhängigkeit in AWS Lambda

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
2 Minuten

Wenn Sie eine AWS Lambda-Funktion in Python entwickeln, benötigen Sie möglicherweise Pakete, die Binärbibliotheken enthalten. In diesem Blog zeigen wir Ihnen, wie Sie das offizielle Docker-Python-Image verwenden, um sicherzustellen, dass Sie einen funktionierenden Lambda haben.

Wenn Sie Ihren Code auf einem Mac oder Windows-Betriebssystem entwickeln, ist es ziemlich schwierig, die richtigen Python-Pakete zu installieren, von denen Ihr Code abhängt. Es gibt sogar Github-Repositories mit vorkompilierten Binärdateien, die Sie blind in Ihre Zip-Datei kopieren. Dies ist ein unerwünschter Prozess, da er von der Standardmethode der Entwicklung und Installation von Python-Software abweicht.

Glücklicherweise stellt uns Docker ein offizielles Python-Image auf der Basis von 64-Bit-Linux zur Verfügung, das zur AWS Lambda-Laufzeitumgebung passt. Indem wir den Installations- und Kompilierungsprozess innerhalb von Docker durchführen, haben wir einen Standard-Workflow, der ein Artefakt liefert, das unserer Ziel-Laufzeitumgebung entspricht!

In diesem Beispiel haben wir die folgende Quellverzeichnisstruktur:

├── Dockerfile
├── requirements.txt
├── src
│   ├── my_postgres_function.py

in die wir das Python-Postgresql-Paket psycopg2 einbinden wollen. Diese Abhängigkeit wird in der Datei requirements.txt deklariert.

Wir können die bereitgestellte Zip-Datei für AWS Lambda erhalten, indem wir die folgende Standard-Dockerdatei verwenden:

FROM python:3.6
RUN apt-get update && apt-get install -y zip
WORKDIR /lambda

# Add the requiremts
ADD requirements.txt /tmp
RUN pip install --quiet -t /lambda -r /tmp/requirements.txt &&     find /lambda -type d | xargs chmod ugo+rx &&     find /lambda -type f | xargs chmod ugo+r

# Add your source code
ADD src/ /lambda/
RUN find /lambda -type d | xargs chmod ugo+rx &&     find /lambda -type f | xargs chmod ugo+r

# compile the lot.
RUN python -m compileall -q /lambda

RUN zip --quiet -9r /lambda.zip .

FROM scratch
COPY --from=0 /lambda.zip /

Um Ihre Zip-Datei zu erstellen, geben Sie einfach ein:

docker build -t my-lambda .

Um die Zip-Datei zu entpacken, brauchen Sie ein wenig Docker Foo:

ID=$(docker create my-lambda /bin/true)     # create a container from the image
docker cp $ID:/ .               # copy the file from the /

Fazit

Durch die Verwendung des offiziellen Docker-Python-Images und der mehrstufigen Build-Funktionalität verfügen wir über eine Standard-Dockerdatei, mit der wir jedes in Python geschriebene AWS Lambda erstellen können, das die Property-Binary-Abhängigkeiten enthält.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.