# 2026-03-09 # sql-runner.tf — служебная DDL-функция для инициализации и миграций БД. # # ВАЖНО: эта функция не имеет HTTP-триггера — только вызов через sless_job. # Это сделано намеренно: функция выполняет произвольный SQL, и открывать её # наружу через HTTP было бы небезопасно. # Упаковка исходников в zip для загрузки в кластер. # archive_file пересоздаёт zip при изменении любого файла в source_dir. data "archive_file" "sql_runner_zip" { type = "zip" source_dir = "${path.module}/code/sql-runner" output_path = "${path.module}/dist/sql-runner.zip" } # Сама функция в кластере. # entrypoint = "sql_runner.run_sql" → файл sql_runner.py, функция run_sql(). # memory_mb=128 достаточно — DDL запросы не требуют памяти на вычисления. resource "sless_function" "sql_runner" { name = "sql-runner" runtime = "python3.11" entrypoint = "sql_runner.run_sql" memory_mb = 128 timeout_sec = 30 env_vars = { PG_DSN = var.pg_dsn } code_path = data.archive_file.sql_runner_zip.output_path # code_hash — при изменении кода terraform пересобирает образ функции code_hash = filesha256("${path.module}/code/sql-runner/sql_runner.py") }