Implementación de buckets y funciones Lambda con Terraform y AWS S3
Clase 15 de 30 • Curso de Ciberseguridad para Desarrollo Web
Contenido del curso
Funciona en mi local
Introducción a DevSecOps
Seguridad en la arquitectura
- 11

Integración de GitHub Webhooks y AWS para Gestión de Commits
02:24 min - 12

Gestión de Infraestructura como Código con Terraform en AWS
09:34 min - 13

Infraestructura como Código con Terraform y Makefiles
17:44 min - 14

Automatización de Infraestructura con Terraform: Roles y Políticas en AWS
06:03 min - 15

Implementación de buckets y funciones Lambda con Terraform y AWS S3
Viendo ahora - 16

Configuración de Bases de Datos en AWS con VPC y Seguridad IP
14:10 min - 17

Configuración de Lambdas en VPC usando Terraform
12:29 min - 18

Configuración de API Gateway para Lambdas en AWS
05:42 min
Evitando vulnerabilidades en el código
- 19

Configuración de Autenticación con Auth0 en Aplicaciones Web
07:14 min - 20

Implementación de Authorizer con Auth0 en AWS Lambda
16:56 min - 21

Conexión y Configuración de Lambda con AWS y Postgres
13:35 min - 22

Configuración de Endpoints y Políticas en AWS con Terraform
11:27 min - 23

Validación de Webhooks desde GitHub usando User Agent
12:08 min - 24

Validación de Webhooks de GitHub con AWS Secrets Manager
14:32 min
Controles de seguridad sobre datos
Monitoring y alertas
CORS y cierre
¿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 bucketen 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
versioningpara 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,
getMetricsyhandleGithubNotifications.
- 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 Lambdapara 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
Makefilepara automatizar el proceso de compilación y empaquetado. - Los comandos aseguran la compilación del código en binarios, la creación de archivos
.zipy su subida a S3.
- Configura un
-
Publica las funciones:
- Utiliza el comando
make publishpara 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
computedonde 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,
getMetricsyhandleGithubNotifications.
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
computedentro 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!