GOOGLE ADS

Montag, 2. Mai 2022

AWS Lambda (Python): Dockerfile zum Installieren von psycopg2?

Ich versuche, dieses Tutorial zu verwenden, um einen Docker-Container in AWS ECR for Lambda hochzuladen. Mein Problem ist, dass mein Python-Skript psycopg2 verwendet und ich nicht herausfinden konnte, wie psycopg2 im Docker-Image installiert wird. Ich weiß, dass ich postgres-develfür die libqBibliothek und gcc zum Kompilieren brauche, aber es funktioniert immer noch nicht.

Meine Anforderungen.txt:

pandas==1.3.0
requests==2.25.1
psycopg2==2.9.1
pgcopy==1.5.0

Dockerdatei:

FROM public.ecr.aws/lambda/python:3.8
WORKDIR /app
COPY my_script.py.
COPY some_file.csv.
COPY requirements.txt.
RUN yum install -y postgresql-devel gcc*
RUN pip install -r requirements.txt
CMD ["/app/my_script.handler"]

Nach dem Erstellen, Ausführen des Images und lokalem Testen der Lambda-Funktion erhalte ich diese Fehlermeldung:

psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above

Ich denke also, dass der Container die falsche Version von postgres(-devel) hat. Aber ich bin mir nicht sicher, wie ich die richtige Version installieren soll? Irgendwelche Tipps zum Bereitstellen eines psycopg2-Skripts in Docker für die Lambda-Nutzung?


Lösung des Problems

Dies könnte ein wenig alt und zu spät sein, um zu antworten, aber ich denke, ich poste, was für mich funktioniert hat.

FROM public.ecr.aws/lambda/python:3.8
COPY. ${LAMBDA_TASK_ROOT}
RUN yum install -y gcc python27 python27-devel postgresql-devel
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD [ "app.handler" ]

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...