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
Louis Hourcade, Amazon Web Services
Resumen
Psycopgpsycopg2 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 Lambda para ejecutar código de aplicaciones o servicios de backend. Lambda es un servicio de computación sin servidor y basado en eventos que ejecuta código sin necesidad de aprovisionar ni administrar servidores.
De forma predeterminada, cuando se crea una función nueva que utiliza un tiempo de ejecución de Python compatible con Lambda, el entorno de tiempo de ejecución de Lambda se crea a partir de una imagen base de Lambdapandas o psycopg2 no se incluyen en la imagen base. Para usar una biblioteca, debe agruparla en un paquete personalizado y adjuntarla a Lambda.
Hay varias formas de agrupar y adjuntar una biblioteca, incluidas las siguientes:
Implemente la función de Lambda desde un archivo .zip.
Implemente la función de Lambda a partir de una imagen de contenedor personalizada.
Cree una capa de Lambda y adjúntela a su función de Lambda.
Este patrón muestra las dos primeras opciones.
Con un paquete de implementación .zip, agregar la biblioteca pandas a la función de Lambda es relativamente sencillo. Cree una carpeta en su máquina Linux, agregue el script de Lambda junto con la biblioteca pandas y las dependencias de la biblioteca a la carpeta, comprima la carpeta y proporciónela como origen para su función de Lambda.
Aunque el uso de un paquete de implementación .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 implementación .zip para agregar la biblioteca psycopg2 a la función de Lambda. A continuación, el patrón muestra cómo implementar Lambda desde un Dockerfile y editar la imagen de Lambda para que la biblioteca psycopg2 funcione.
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 recursos utilizados por este patrón AWS
AWS Cloud Development Kit (AWS CDK) instalado globalmente mediante la ejecución
npm install -g aws-cdkUn cliente Git
Python
Docker
Limitaciones
Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte Servicios de AWS by Region
. Para ver los puntos de conexión específicos, consulte la página Service endpoints and quotas y elija el enlace del servicio.
Versiones de producto
Versión de tiempo de ejecución de Python compatible con Lambda
Versión 2.9.3 de Psycopg2
Versión 1.5.2 de pandas
Arquitectura
Información general de la solución
Para ilustrar los desafíos a los que puede enfrentarse al utilizar la biblioteca psycopg2 en Lambda, el patrón implementa dos funciones de Lambda:
Una función de Lambda con el tiempo de ejecución de Python creada a partir de un archivo .zip. Las bibliotecas
psycopg2ypandasse instalan en este paquete de implementación .zip mediante pip. Una función de Lambda con el tiempo de ejecución de Python creada a partir de un Dockerfile. El Dockerfile instala las bibliotecas
psycopg2ypandasen la imagen de contenedor de Lambda.
La primera función de Lambda instala la biblioteca pandas 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 bibliotecas pandas y psycopg2 en Lambda.
Tools (Herramientas)
Servicios de AWS
AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que lo ayuda a definir y aprovisionar la infraestructura en 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 bases de datos de PostgreSQL para el lenguaje Python diseñado para aplicaciones de varios subprocesos. Este patrón emplea Psycopg2. 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 |
Configurar su implementación. | Edite el
| AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Bootstrap tu. 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 |
Implementar el código. | Para implementar la AWS CDK aplicación, ejecute el siguiente comando:
| AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Probar la función de Lambda creada a partir del archivo .zip. | Para probar la función de 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 utilizar la biblioteca | AWS general |
Probar la función de Lambda creada a partir del Dockerfile. | Para utilizar la biblioteca Para probar la función de 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 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:
Un rol de AWS Identity and Access Management (IAM) para las funciones de Lambda.
Una función de Lambda con el tiempo de ejecución de Python. La función se implementa desde el paquete de implementación
Constructs/lambda/lambda_deploy.zip.Una función de Lambda con el tiempo de ejecución de Python. La función se implementa desde el Dockerfile de la carpeta
Constructs.
El script de ambas funciones de Lambda comprueba si las bibliotecas pandas y psycopg2 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 de implementación lambda_deploy.zip se crea con el script de bash Constructs/lambda/build.sh. Este script crea una carpeta, copia el script de Lambda, instala las bibliotecas pandas y psycopg2 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 motor de ejecución de Python. El Dockerfile instala las bibliotecas pandas y psycopg2 sobre la imagen predeterminada.