Implementación de buckets y funciones Lambda con Terraform y AWS S3
Clase 15 de 30 • Curso de Ciberseguridad para Desarrollo Web
Resumen
¿Cómo crear un bucket S3 utilizando Terraform?
Para almacenar nuestros archivos de funciones Lambda, es crucial contar con un bucket en Amazon S3, y la forma automatizada y eficiente de hacerlo es utilizando Terraform. Este enfoque no solo facilita el proceso, sino que asegura mantener la infraestructura como código. Sigue estos pasos para crear tu bucket:
-
Crea un nuevo módulo de infraestructura:
- Dentro de tu módulo, añade un directorio llamado
S3
. - Dentro de este directorio, crea un archivo de configuración para definir el bucket.
- Dentro de tu módulo, añade un directorio llamado
-
Configura el bucket en Terraform:
- Define un recurso
AWS bucket
en Terraform, por ejemplo,lambda_bucket
. - Establece un nombre arbitrario para tu bucket, tal como
CamilaLenisLambdaPlatzi
.
resource "aws_s3_bucket" "lambda_bucket" { bucket = "CamilaLenisLambdaPlatzi" }
- Define un recurso
-
Habilita el versionamiento:
- Añade el recurso
versioning
para el bucket para mantener un control de versiones.
resource "aws_s3_bucket_versioning" "versioning" { bucket = aws_s3_bucket.lambda_bucket.id versioning_configuration { status = "Enabled" } }
- Añade el recurso
-
Integra el módulo en tu proyecto:
- Asegúrate de incluir este módulo en el archivo principal de Terraform para que sea parte de tu infraestructura.
module "s3" { source = "./S3" }
-
Ejecuta comandos Terraform:
- Inicia el módulo con
terraform init
. - Planea la creación del bucket con
terraform plan
. - Implementa con
terraform apply
.
- Inicia el módulo con
Estos pasos configuran tu entorno para recibir y mantener los binarios de tus funciones Lambda.
¿Cómo crear y organizar funciones Lambda en tu proyecto?
Tener organizadas tus funciones Lambda es esencial para un desarrollo eficiente. Crear y estructurar tus funciones desde el inicio puede facilitar mucho el trabajo futuro. Aquí te mostramos cómo hacerlo:
-
Configura el entorno del proyecto:
- Dentro de tu proyecto, crea un directorio denominado
Functions
. - Dentro de este directorio, realiza subcarpetas para cada función que vas a manejar. Por ejemplo,
getMetrics
yhandleGithubNotifications
.
- Dentro de tu proyecto, crea un directorio denominado
-
Desarrolla las funciones básicas:
- Crea archivos para tus funciones Lambda tomando como base ejemplos o mediante la asistencia de inteligencia artificial.
- Utiliza la librería
AWS Lambda
para definir las funciones.
-
Manejo de dependencias en Go:
- Asegura que todas las dependencias se encuentren sincronizadas ejecutando
go mod vendor
. Si es necesario, primero realizago get
.
go mod vendor
- Asegura que todas las dependencias se encuentren sincronizadas ejecutando
-
Desarrolla un archivo make:
- Configura un
Makefile
para automatizar el proceso de compilación y empaquetado. - Los comandos aseguran la compilación del código en binarios, la creación de archivos
.zip
y su subida a S3.
- Configura un
-
Publica las funciones:
- Utiliza el comando
make publish
para compilar y subir tus funciones Lambda a S3.
- Utiliza el comando
¿Cómo integrar las funciones Lambda con Terraform?
Después de tener tus funciones Lambda listas, el siguiente paso es integrarlas con Terraform, para garantizar que se gestionen y desplieguen automáticamente como parte de tu infraestructura.
-
Crea un nuevo módulo para computar:
- Agrega un directorio llamado
compute
donde guardarás tus configuraciones Lambda.
- Agrega un directorio llamado
-
Crea archivos de configuración por función:
- Cada función tendrá su propio archivo de configuración en Terraform. Por ejemplo,
getMetrics
yhandleGithubNotifications
.
resource "aws_lambda_function" "get_metrics" { function_name = "GetMetrics" s3_bucket = var.lambda_bucket s3_key = "getMetrics.zip" handler = "bootstrap" runtime = "go1.x" role = var.repo_collector_role_arn ... }
- Cada función tendrá su propio archivo de configuración en Terraform. Por ejemplo,
-
Integra el módulo de las funciones en el main:
- Añade el módulo
compute
dentro de tu configuración principal para asegurar su despliegue junto con otras partes de la infraestructura.
- Añade el módulo
-
Publica la infraestructura:
- Inicializa los módulos, planifica su actualización y despliegue con Terraform utilizando los comandos habituales:
terraform init
,terraform plan
, yterraform apply
.
- Inicializa los módulos, planifica su actualización y despliegue con Terraform utilizando los comandos habituales:
-
Verifica y prueba en AWS:
- Una vez desplegados, asegúrate de que tus funciones aparezcan en el panel de Lambda de AWS y realiza pruebas Básicas para garantizar su correcto funcionamiento.
Mediante estos pasos, no solo estarás creando funciones Lambda eficientes, sino que estarás utilizando las mejores prácticas al integrar tu desarrollo con la infraestructura como código. ¡Mantente motivado y sigue aprendiendo para optimizar tus proyectos!