VPC-Connected Function

data "aws_vpc" "main" {
  tags = { Name = "main" }
}

data "aws_subnets" "private" {
  filter {
    name   = "vpc-id"
    values = [data.aws_vpc.main.id]
  }
  tags = { Tier = "private" }
}

resource "aws_security_group" "lambda" {
  name_prefix = "lambda-"
  vpc_id      = data.aws_vpc.main.id

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

module "db_processor" {
  source  = "registry.patterneddesigns.ca/patterneddesigns/lambda-function/aws"
  version = "3.1.0"

  function_name = "db-processor"
  runtime       = "python3.12"
  handler       = "main.handler"
  source_path   = "./src"

  memory_size = 512
  timeout     = 300

  vpc_config = {
    subnet_ids         = data.aws_subnets.private.ids
    security_group_ids = [aws_security_group.lambda.id]
  }

  environment_variables = {
    DB_HOST = "db.internal.example.com"
    DB_NAME = "myapp"
  }
}