Conexión y Configuración de Lambda con AWS y Postgres

Clase 21 de 30Curso de Ciberseguridad para Desarrollo Web

Resumen

¿Cómo configurar la conexión a la base de datos al desarrollar una función Lambda?

Cuando estás desarrollando funciones Lambda, especialmente para aplicaciones en AWS, una de las partes más críticas es configurar correctamente la conexión a tu base de datos. En este caso en particular, discutiremos cómo establecer una conexión a una base de datos Postgres desde una función Lambda, asegurándonos de hacerlo de manera eficiente y segura.

¿Cómo crear la estructura del proyecto?

  1. Configura el directorio y los archivos necesarios:

    • Crea un nuevo directorio database dentro de tu proyecto de seguimiento de GitHub (GitHub Tracker).
    • Dentro de este directorio, crea un archivo database.go.
  2. Implementación de lógica de conexión:

    • El paquete de database debe incluir la lógica necesaria para conectarse a una base de datos. Aunque es transversal a todas las bases de datos, este ejemplo se centrará en Postgres.
  3. Define el método de conexión:

    • Usa un método Connect que reciba un objeto context y devuelva una conexión SQL.
    • Utiliza syncMuter en una variable dbOnce para garantizar que la conexión se realice solo una vez.

¿Cómo obtener credenciales con el Cliente de Secrets Manager?

  1. Configuración de las variables de entorno:
    • Extrae información como host, puerto, usuario y un secret ID de las variables de entorno.
  2. Manipulación con AWS Secrets Manager:
    • Crea un cliente para Secrets Manager para acceder al API y obtener el secret ID.
    • Desempaque el secreto que viene como un mapa de JSON a un mapa de strings.

¿Cómo añadir dependencias y sincronizarlas?

  1. Incluir el driver de Postgres:

    • Asegúrate de tener el driver de Postgres entre tus dependencias para garantizar la conexión correcta.
  2. Descarga dependencias con Go:

    • Utiliza go get para obtener librerías necesarias, incluidas config y el SDK de AWS.
  3. Sincroniza con el archivo vendor:

    • Usa go mod vendor para asegurar que todas las dependencias estén correctamente alineadas y go mod dig para validarlas.

¿Cómo configurar la función Lambda getMetrix?

  1. Estructura de la respuesta:

    • Define la respuesta que devolverá la Lambda, la cual incluirá autor, número de commits y detalles de cada commit.
  2. Validar parámetros de entrada:

    • Extrae y valida el email desde los path parameters del request. Si falta, retorna un badRequest.
  3. Conexión a la base de datos:

    • Utiliza la lógica de conexión configurada previamente para establecer la comunicación con la base de datos y manejar posibles errores.
  4. Manipulación de datos:

    • Con los commits obtenidos, utiliza una función parseResponse para transformarlos en un objeto de respuesta que pueda ser enviado por el API Gateway.
  5. Conversión a JSON:

    • Empaquétalos utilizando marshall para transformar la respuesta a un JSON y ajusta los headers a application/json.

¿Qué más considerar antes de probar la función Lambda?

  1. Datos en la base de datos:

    • Inserta registros dummy en la base de datos usando herramientas como pgAdmin para garantizar que haya datos al probar la Lambda.
  2. Configuración en AWS:

    • Asegúrate de que la función Lambda tenga permisos para acceder al API de Secrets mediante la configuración en Terraform y verifica los grupos de seguridad para conexiones IP.

Este proceso asegura que tu función Lambda no solo se conecte de manera eficiente a tu base de datos, sino que también maneje de manera segura y lógica cualquier posible error en el proceso. ¡No hay mejor momento para poner en práctica estos conocimientos y seguir experimentando para optimizar tus soluciones en AWS!