GOOGLE ADS

jeudi 14 avril 2022

AWS lambda (python) : Dockerfile pour installer psycopg2 ?

J'essaie d'utiliser ce didacticiel pour télécharger un conteneur Docker sur AWS ECR pour Lambda. Mon problème est que mon script python utilise psycopg2, et je n'ai pas compris comment installer psycopg2 dans l'image Docker. Je sais que j'ai besoin postgres-develde la libqbibliothèque et de gcc pour la compilation, mais cela ne fonctionne toujours pas.

Mes exigences.txt :

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

Dockerfile :

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"]

Après avoir construit, exécuté l'image et testé la fonction lambda localement, j'obtiens ce message d'erreur :

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

Je pense donc que le conteneur a la mauvaise version de postgres(-devel). Mais je ne sais pas comment installer la bonne version? Des conseils pour déployer un script psycopg2 sur docker pour une utilisation lambda ?


Solution du problème

C'est peut-être un peu vieux et trop tard pour répondre, mais je pense que je poste ce qui a fonctionné pour moi.

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" ]

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...