Serverless-функции
Serverless-функции позволяют запускать код без управления серверами — аналог AWS Lambda / Cloudflare Workers. Это отдельная сущность от приложений: свой редактор, свой жизненный цикл, без привязки к Git.
:::info Тарифный план Создание функций доступно на платных планах. Если функции недоступны, панель предложит обновить план. :::
Рантаймы
Поддерживаются Go, Python и Node.js. Код пишется прямо в
многофайловом редакторе (Monaco) — Git-репозиторий не требуется. Функция
может состоять из нескольких файлов, включая файл зависимостей
(go.mod, requirements.txt или package.json).
Обработчик
Контракт совместим с AWS Lambda Function URL (payload v2.0): обработчик
принимает (event, context) и возвращает ответ со statusCode, headers
и body. В event передаются метод, путь, заголовки, query-параметры и
тело запроса.
Точка входа указывается в формате файл.метод — имя файла без
расширения и имя экспортированной функции (например, handler.Handler,
main.handler, index.handler).
Go
Точка входа: handler.Handler
package handler
import (
"context"
"github.com/aws/aws-lambda-go/events"
)
func Handler(ctx context.Context, req events.LambdaFunctionURLRequest) (events.LambdaFunctionURLResponse, error) {
return events.LambdaFunctionURLResponse{
StatusCode: 200,
Headers: map[string]string{"Content-Type": "application/json"},
Body: `{"message": "Hello from Go!"}`,
}, nil
}
Python
Точка входа: main.handler
def handler(event, context):
return {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": '{"message": "Hello from Python!"}',
}
Node.js
Точка входа: index.handler
export const handler = async (event, context) => {
return {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: "Hello from Node.js!" }),
};
};
Бинарные данные
Поддерживаются бинарные тела запроса и ответа:
- Запрос — сырые байты доступны как
rawBody(Node,Buffer),raw_body(Python,bytes) илиbody_base64(Go, base64-строка). - Ответ — верните
Buffer/bytesлибо установитеisBase64Encoded(Node) /is_base64_encoded(Python, Go).
Создание и деплой
- Откройте проект → Функции → создать функцию.
- Выберите рантайм, отредактируйте файлы и укажите точку входа.
- При необходимости задайте переменные окружения и подключите приватную сеть (VPC).
- Нажмите «Создать и задеплоить».
Прогресс отображается по шагам (создание → сборка и деплой), статус приходит в реальном времени. После успешного деплоя открывается страница функции.
Вызов
Каждая функция получает публичный HTTP-эндпоинт и принимает любой HTTP-метод:
POST https://fn.tatnet.app/{project_id}/{function_id}
Сборка и версии
- При деплое код собирается в изолированной микро-ВМ, артефакт сохраняется в объектном хранилище.
- Каждый деплой создаёт версию — снимок кода, к которому можно вернуться.
- Статус сборки приходит в реальном времени через SSE.
Масштабирование до нуля
Простаивающие функции автоматически останавливаются и поднимаются заново при следующем вызове.
Переменные окружения
Переменные окружения задаются в панели или через API. Для Node.js доступен встроенный AWS SDK — можно работать с объектным хранилищем без дополнительной установки зависимостей.
Приватная сеть (VPC)
Функцию можно подключить к VPC аккаунта, чтобы из её кода обращаться к приватным ресурсам (например, к ВМ) по внутренней сети.