Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Importe la biblioteca psycopg2 para interactuar con su base de AWS Lambda datos PostgreSQL - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Importe la biblioteca psycopg2 para interactuar con su base de AWS Lambda datos PostgreSQL

Creado por Louis Hourcade (AWS)

Resumen

Psycopg es un adaptador de base de datos PostgresSQL para Python. Los desarrolladores utilizan la psycopg2 biblioteca para escribir aplicaciones de Python que interactúan con las bases de datos de PostgreSQL.

En Amazon Web Services (AWS), los desarrolladores también utilizan AWS Lambdapara ejecutar código para aplicaciones o servicios de backend. Lambda es un servicio de cómputo sin servidor y basado en eventos que ejecuta código sin necesidad de aprovisionar o administrar servidores.

De forma predeterminada, cuando se crea una función nueva que utiliza un entorno de ejecución de Python (versión 3.9, 3.8 o 3.7), el entorno de ejecución de Lambda se crea a partir de una imagen base de Lambda proporcionada por. AWS Las bibliotecas, como pandas opsycopg2, no se incluyen en la imagen base. Para usar una biblioteca, debe agruparla en un paquete personalizado y adjuntarla a Lambda.

Existen varias formas de agrupar y adjuntar una biblioteca, incluidas las siguientes:

  • Implemente la función Lambda desde un archivo de archivos.zip.

  • Implemente la función Lambda a partir de una imagen de contenedor personalizada.

  • Cree una capa Lambda y adjúntela a su función Lambda.

Este patrón muestra las dos primeras opciones.

Con un paquete de despliegue .zip, añadir la pandas biblioteca a la función Lambda es relativamente sencillo. Cree una carpeta en su máquina Linux, añada el script Lambda junto con la pandas biblioteca y las dependencias de la biblioteca a la carpeta, comprima la carpeta y suminístrela como fuente para su función Lambda.

Aunque el uso de un paquete de despliegue .zip es una práctica habitual, ese enfoque no funciona para la biblioteca. psycopg2 Este patrón muestra primero el error que se produce si se utiliza un paquete de despliegue .zip para añadir la psycopg2 biblioteca a la función Lambda. A continuación, el patrón muestra cómo implementar Lambda desde un Dockerfile y editar la imagen Lambda para que la biblioteca funcione. psycopg2

Para obtener información sobre los tres recursos que implementa el patrón, consulte la sección Información adicional.

Requisitos previos y limitaciones

Requisitos previos

  • Un activo Cuenta de AWS con permisos suficientes para implementar los AWS recursos que utiliza este patrón

  • AWS Cloud Development Kit (AWS CDK) instalado globalmente mediante la ejecución npm install -g aws-cdk

  • Un cliente Git

  • Python

  • Docker

Limitaciones

Versiones de producto

  • Versión de tiempo de ejecución de AWS Lambda: Python 3.8 (el patrón se puede adaptar a otras versiones de Python).

  • Psycopg2 versión 2.9.3

  • Pandas versión 1.5.2

Arquitectura

Descripción general de la solución

Para ilustrar los desafíos a los que puede enfrentarse al utilizar la psycopg2 biblioteca en Lambda, el patrón implementa dos funciones de Lambda:

La primera función de Lambda instala la pandas biblioteca y sus dependencias en un archivo.zip, y Lambda puede usar esa biblioteca.

La segunda función de Lambda demuestra que, al crear una imagen de contenedor para la función de Lambda, puede ejecutar las pandas bibliotecas psycopg2 y en Lambda.

Herramientas

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

Otras herramientas

  • Docker es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores.

  • pandas es una herramienta de código abierto basada en Python para el análisis y la manipulación de datos.

  • Psycopg es un adaptador de base de datos PostgreSQL para el lenguaje Python diseñado para aplicaciones multiproceso. Este patrón usa Psycopg 2.

  • Python es un lenguaje de programación informático de uso general.

Repositorio de código

El código de este patrón está disponible en el repositorio import-psycopg2 - -. in-lambda-to-interact with-postgres-database GitHub

Prácticas recomendadas

Este patrón le proporciona un ejemplo práctico de cómo crear una función Lambda AWS CDK a partir de un Dockerfile. Si reutiliza este código en su aplicación, asegúrese de que los recursos implementados cumplan con todos los requisitos de seguridad. Utilice herramientas como Checkov, que analiza las configuraciones de la infraestructura de la nube para detectar errores de configuración antes de implementar la infraestructura.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Para clonar el GitHub repositorio en su máquina local, ejecute los siguientes comandos:

git clone https://github.com/aws-samples/import-psycopg2-in-lambda-to-interact-with-postgres-database.git cd AWS-lambda-psycopg2
AWS general

Configure su implementación.

Edite el app.py archivo con información sobre su Cuenta de AWS:

aws_acccount = "AWS_ACCOUNT_ID" region = "AWS_REGION" # Select the CPU architecture you are using to build the image (ARM or X86) architecture = "ARM"
AWS general

Clone el repositorio y configure la implementación

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Para clonar el GitHub repositorio en su máquina local, ejecute los siguientes comandos:

git clone https://github.com/aws-samples/import-psycopg2-in-lambda-to-interact-with-postgres-database.git cd AWS-lambda-psycopg2
AWS general

Configure su implementación.

Edite el app.py archivo con información sobre su Cuenta de AWS:

aws_acccount = "AWS_ACCOUNT_ID" region = "AWS_REGION" # Select the CPU architecture you are using to build the image (ARM or X86) architecture = "ARM"
AWS general
TareaDescripciónHabilidades requeridas

Bootstrap su. Cuenta de AWS

Si aún no ha iniciado su entorno de AWS, ejecute los siguientes comandos con las AWS credenciales de su AWS cuenta:

cdk bootstrap aws://<tooling-account-id>/<aws-region>
AWS general

Implemente el código.

Para implementar la AWS CDK aplicación, ejecute el siguiente comando:

cdk deploy AWSLambdaPyscopg2
AWS general

Inicie su cuenta de AWS e implemente la aplicación

TareaDescripciónHabilidades requeridas

Bootstrap su. Cuenta de AWS

Si aún no ha iniciado su entorno de AWS, ejecute los siguientes comandos con las AWS credenciales de su AWS cuenta:

cdk bootstrap aws://<tooling-account-id>/<aws-region>
AWS general

Implemente el código.

Para implementar la AWS CDK aplicación, ejecute el siguiente comando:

cdk deploy AWSLambdaPyscopg2
AWS general
TareaDescripciónHabilidades requeridas

Pruebe la función Lambda creada a partir del archivo.zip.

Para probar la función Lambda que se creó a partir del archivo.zip, haga lo siguiente:

  1. Inicie sesión en la consola y abra la consola Lambda en. https://console.aws.amazon.com/lambda/

  2. Seleccione la función lambda-from-zip Lambda.

  3. Cree un evento de prueba para invocar la función.

  4. Cuando se invoca, la función debería generar un error que incluya el siguiente mensaje:

    "errorMessage": Unable to import module 'lambda_code': libpq.so.5: cannot open shared object, "stackTrace": [] "errorType": Runtime.ImportModuleError",
  5. Abre la CloudWatch consola de Amazon en https://console.aws.amazon.com/cloudwatch/. Los CloudWatch registros muestran que la pandas biblioteca se ha importado correctamente, pero que la importación de la psycopg2 biblioteca ha fallado.

Como Lambda no encuentra las bibliotecas de PostgreSQL necesarias en la imagen predeterminada, no puede utilizarlas. psycopg2

AWS general

Pruebe la función Lambda creada a partir del Dockerfile.

Para utilizar la psycopg2 biblioteca en la función de Lambda, debe editar la imagen de máquina de Amazon (AMI) de Lambda.

Para probar la función Lambda que se creó a partir del Dockerfile, haga lo siguiente:

  1. Inicie sesión en la consola y abra la consola Lambda.

  2. Seleccione la función lambda-from-docker Lambda.

  3. Cree un evento de prueba para invocar la función.

  4. Cuando se invoca, la función debería ejecutarse correctamente.

El código siguiente muestra el Dockerfile que crea la AWS CDK plantilla:

# Start from lambda Python3.8 image FROM public.ecr.aws/lambda/python:3.8 # Copy the lambda code, together with its requirements COPY lambda/requirements.txt ${LAMBDA_TASK_ROOT} COPY lambda/lambda_code.py ${LAMBDA_TASK_ROOT} # Install postgresql-devel in your image RUN yum install -y gcc postgresql-devel # install the requirements for the Lambda code RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" # Command can be overwritten by providing a different command in the template directly. CMD ["lambda_code.handler"]

El Dockerfile toma la imagen AWS Lambda proporcionada para el entorno de ejecución de Python 3.8 e instala postgresql-devel, que contiene las bibliotecas necesarias para compilar aplicaciones que interactúan directamente con el servidor de administración de PostgreSQL. El Dockerfile también instala las bibliotecas y, que se indican en el archivo. pandas psycopg2 requirements.txt

AWS general

Pruebe las funciones de Lambda desde la consola de administración de AWS

TareaDescripciónHabilidades requeridas

Pruebe la función Lambda creada a partir del archivo.zip.

Para probar la función Lambda que se creó a partir del archivo.zip, haga lo siguiente:

  1. Inicie sesión en la consola y abra la consola Lambda en. https://console.aws.amazon.com/lambda/

  2. Seleccione la función lambda-from-zip Lambda.

  3. Cree un evento de prueba para invocar la función.

  4. Cuando se invoca, la función debería generar un error que incluya el siguiente mensaje:

    "errorMessage": Unable to import module 'lambda_code': libpq.so.5: cannot open shared object, "stackTrace": [] "errorType": Runtime.ImportModuleError",
  5. Abre la CloudWatch consola de Amazon en https://console.aws.amazon.com/cloudwatch/. Los CloudWatch registros muestran que la pandas biblioteca se ha importado correctamente, pero que la importación de la psycopg2 biblioteca ha fallado.

Como Lambda no encuentra las bibliotecas de PostgreSQL necesarias en la imagen predeterminada, no puede utilizarlas. psycopg2

AWS general

Pruebe la función Lambda creada a partir del Dockerfile.

Para utilizar la psycopg2 biblioteca en la función de Lambda, debe editar la imagen de máquina de Amazon (AMI) de Lambda.

Para probar la función Lambda que se creó a partir del Dockerfile, haga lo siguiente:

  1. Inicie sesión en la consola y abra la consola Lambda.

  2. Seleccione la función lambda-from-docker Lambda.

  3. Cree un evento de prueba para invocar la función.

  4. Cuando se invoca, la función debería ejecutarse correctamente.

El código siguiente muestra el Dockerfile que crea la AWS CDK plantilla:

# Start from lambda Python3.8 image FROM public.ecr.aws/lambda/python:3.8 # Copy the lambda code, together with its requirements COPY lambda/requirements.txt ${LAMBDA_TASK_ROOT} COPY lambda/lambda_code.py ${LAMBDA_TASK_ROOT} # Install postgresql-devel in your image RUN yum install -y gcc postgresql-devel # install the requirements for the Lambda code RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" # Command can be overwritten by providing a different command in the template directly. CMD ["lambda_code.handler"]

El Dockerfile toma la imagen AWS Lambda proporcionada para el entorno de ejecución de Python 3.8 e instala postgresql-devel, que contiene las bibliotecas necesarias para compilar aplicaciones que interactúan directamente con el servidor de administración de PostgreSQL. El Dockerfile también instala las bibliotecas y, que se indican en el archivo. pandas psycopg2 requirements.txt

AWS general

Recursos relacionados

Información adicional

En este patrón, la AWS CDK plantilla proporciona una AWS pila con tres recursos:

  • Una función AWS Identity and Access Management (IAM) para las funciones Lambda.

  • Una función Lambda con un tiempo de ejecución de Python 3.8. La función se implementa desde el paquete de Constructs/lambda/lambda_deploy.zip implementación.

  • Una función Lambda con un tiempo de ejecución de Python 3.8. La función se despliega desde el Dockerfile de la carpeta Constructs

El script de ambas funciones de Lambda comprueba si las psycopg2 bibliotecas pandas y se han importado correctamente:

import pandas print("pandas successfully imported") import psycopg2 print("psycopg2 successfully imported") def handler(event, context): """Function that checks whether psycopg2 and pandas are successfully imported or not""" return {"Status": "psycopg2 and pandas successfully imported"}

El paquete lambda_deploy.zip de despliegue se crea con el script Constructs/lambda/build.sh bash. Este script crea una carpeta, copia el script Lambda, instala las psycopg2 bibliotecas pandas and y genera el archivo.zip. Para generar el archivo.zip usted mismo, ejecute este script bash y vuelva a implementar la pila. AWS CDK

El Dockerfile comienza con la imagen base AWS proporcionada para Lambda con un entorno de ejecución de Python 3.8. El Dockerfile instala las psycopg2 bibliotecas pandas y sobre la imagen predeterminada.

Este patrón muestra una forma de usar la psycopg2 biblioteca en Lambda: crear funciones a partir de un Dockerfile y agregar las dependencias necesarias a la imagen de Lambda. Para ver otras formas de lograrlo, consulta el repositorio awslambda-psycopg2. GitHub

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.