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-devel
für die libq
Bibliothek 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