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 adaptadorpsycopg2
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 proporcionadapandas
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
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
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad por región, consulta Servicios de AWS por región
. Para ver puntos de enlace específicos, consulta la página de puntos de enlace y cuotas del servicio y elige el enlace del servicio.
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:
Una función Lambda con el motor de ejecución de Python 3.8 creada a partir de un archivo.zip.
pandas
Las bibliotecaspsycopg2
y se instalan en este paquete de implementación.zip mediante pip.Una función Lambda con el tiempo de ejecución de Python 3.8 creada a partir de un Dockerfile. El Dockerfile instala las
pandas
bibliotecaspsycopg2
y en la imagen contenedora 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
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
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clonar el repositorio. | Para clonar el GitHub repositorio en su máquina local, ejecute los siguientes comandos:
| AWS general |
Configure su implementación. | Edite el
| AWS general |
Tarea | Descripción | Habilidades 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:
| AWS general |
Implemente el código. | Para implementar la AWS CDK aplicación, ejecute el siguiente comando:
| AWS general |
Tarea | Descripción | Habilidades 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:
Como Lambda no encuentra las bibliotecas de PostgreSQL necesarias en la imagen predeterminada, no puede utilizarlas. | AWS general |
Pruebe la función Lambda creada a partir del Dockerfile. | Para utilizar la Para probar la función Lambda que se creó a partir del Dockerfile, haga lo siguiente:
El código siguiente muestra el Dockerfile que crea la AWS CDK plantilla:
El Dockerfile toma la imagen AWS Lambda proporcionada para el entorno de ejecución de Python 3.8 e instala postgresql-devel | 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