Contenido del curso
Funciona en mi local
Introducción a DevSecOps
Seguridad en la arquitectura
- 11

Arquitectura AWS para métricas de Git
02:23 min - 12

Configuración de AWS CLI para Terraform
09:34 min - 13

Terraform IAM: roles y policies automáticos
17:44 min - 14

Modificando main.tf para enlazar módulos IAM en Terraform
06:02 min - 15

Bucket S3 para Lambdas con Terraform
16:44 min - 16

Configuración de Postgres RDS con VPC y seguridad
14:10 min - 17

Lambdas dentro de uma VPC com Terraform
Viendo ahora - 18

Cómo configurar API Gateway para Lambdas
05:41 min
Evitando vulnerabilidades en el código
- 19

Configuración completa de Auth0 para tokens
07:13 min - 20

Authorizer Lambda con Auth0 y JWT
16:55 min - 21

Conecta Go a Postgres usando AWS Secrets
13:34 min - 22

Conexión segura de Lambdas a Secrets con VPC
11:27 min - 23

Validación de webhooks desde GitHub con user-agent
12:08 min - 24

Cómo validar integridad de webhooks con HMAC
14:32 min
Controles de seguridad sobre datos
Monitoring y alertas
CORS y cierre
Lambdas dentro de uma VPC com Terraform
Resumen
Configurar funções Lambda dentro de uma VPC é o passo que garante comunicação segura entre tus servicios serverless e bases de dados como RDS. Aqui você verá como fazer isso com Terraform, passo a passo, atribuindo políticas IAM, security groups e subnets corretas para que tudo funcione sem erros de sintaxe nem permissões em falta.
Por que adicionar uma Lambda a uma VPC?
Quando uma função Lambda precisa conversar com recursos privados, como uma instância RDS, ela tem que estar dentro da mesma VPC. Sem essa configuração, a Lambda fica isolada e não consegue acessar a base de dados, mesmo que tudo o resto esteja certo.
¿Qué es una VPC en AWS? Es una red privada virtual donde tus recursos (Lambdas, RDS, EC2) pueden comunicarse de forma aislada y segura del resto de internet.
Na consola da AWS, dentro de Lambda, no painel Configuration, você confirma se a função já está em alguma VPC. Se não estiver, é hora de mexer no Terraform.
Como criar a política IAM CanManageNetworkInterfaces?
Para que uma Lambda entre numa VPC, ela precisa de permissões para gerenciar suas próprias network interfaces. Isso significa criar uma política IAM dedicada.
Dentro do módulo IAM, em Policies, você cria um arquivo can-manage-network.tf com um recurso aws_iam_policy chamado CanManageNetworkInterfaces. Essa política autoriza ações EC2 como associar uma nova interface de rede.
Depois, no main.tf do módulo IAM, você anexa essa política ao role da Lambda, do mesmo jeito que fez com CanAccessRDS e CanLog. O fluxo é:
- Declarar a policy no módulo Policies.
- Exportar o ARN como output.
- Receber o ARN no módulo Roles via variável
can_manage_network_policy_arndo tipo string. - Anexar com
aws_iam_role_policy_attachmentao rolerepo_collector.
¿Por qué la Lambda necesita permisos de red? Porque al unirse a una VPC, AWS crea una elastic network interface (ENI) en su nombre, y eso requiere permisos EC2 explícitos.
Como passar security groups e subnets ao módulo Compute?
Com a política pronta, faltam dois ingredientes: o security group e as subnets onde a Lambda vai viver.
Onde encontrar o security group e as subnets?
Na consola da AWS, vá em EC2 e role até Security Groups. Copie o ID do grupo padrão (default), que é o mesmo que sua RDS usa. Para as subnets, abra o painel da VPC e copie os IDs de cada uma.
Esses dois conjuntos de dados precisam atravessar várias camadas do seu Terraform até chegar na função Lambda.
Como definir as variáveis no Terraform?
A propagação acontece do main raiz até o módulo Lambda, passando pelo Compute. Em cada nível você declara a variável correspondente:
- No
main.tfraiz, definesubnet_idscomo array com os IDs copiados. - No módulo Compute, declara
subnet_idsesecurity_groups_idscomolist(string). - No módulo Lambda, repete a declaração para receber esses valores.
- Encaminha de volta para cada
aws_lambda_functiondentro do blocovpc_config.
O bloco vpc_config é sintaxe padrão do Terraform com AWS e fica assim, conceitualmente: recebe security_group_ids e subnet_ids, ambos vindos das variáveis do módulo.
Quais erros de sintaxe aparecem e como resolver?
Durante o terraform plan, é comum o linter apontar pequenos detalhes que quebram a configuração. Três erros típicos apareceram aqui:
- Falta de sinal de igual numa declaração de variável dentro das funções Lambda.
- Uso de
variableem vez devarao referenciar valores no main. - Diferença entre o nome da variável (
security_groups_ids, no plural) e o atributo esperado pela AWS (security_group_ids, no singular).
Esse último ponto é sutil mas importante: embora você possa nomear suas variáveis como quiser, o atributo do recurso aws_lambda_function segue o padrão da AWS. Se errar a chave dentro do vpc_config, o plan falha.
Rodar terraform fmt -recursive ajuda na formatação, mas é o terraform plan que valida a sintaxe real e revela esses descompassos.
Como verificar que a Lambda ficou na VPC correta?
Depois do terraform apply, a saída confirma: dois recursos adicionados (a política e o anexo ao role) e duas modificações (as duas Lambdas agora dentro da VPC).
Na consola da AWS, abra qualquer uma das funções Lambda, vá em Configuration e depois em VPC. Você deve ver:
- A VPC padrão atribuída.
- O security group default selecionado.
- As subnets listadas, idênticas às que a RDS usa.
Com isso, todos os recursos do projeto, Lambdas e base de dados, vivem na mesma rede privada e podem se comunicar com segurança. O próximo passo é criar o gateway que vai expor essas Lambdas via endpoints acessíveis localmente.
Que parte da configuração você quer aprofundar primeiro: as políticas IAM ou o roteamento da VPC? Conta nos comentários.