Serverless API-шлюз
Публичные HTTP API и вебхуки на serverless-функциях: авторизация на каждый маршрут, параметры пути, CORS и рейт-лимиты — без отдельного ingress-слоя, который нужно деплоить и поддерживать.
HTTPS-маршруты ведут напрямую к функциям, политики задаются на каждый путь, а эндпоинт сразу живёт на /gw/{workspace}/{path} — без отдельного деплоя шлюза и без смены DNS.
- Для API — задавайте пути и HTTP-методы, настраивайте авторизацию на маршрут (без auth, API key или Bearer) и правила CORS, а параметры пути вроде /users/:id читайте прямо в обработчике.
- Для вебхуков — у каждого маршрута стабильный публичный URL в вашем рабочем пространстве, контролируемая авторизация на входе и та же модель передачи в функцию, что и у остальной HTTP-поверхности.
- Для инструментов агентов — по HTTPS-маршруту на инструмент или действие, с теми же деплоями, секретами и наблюдаемостью, что и у остальных маршрутов за шлюзом.
Дальше по теме
Начать бесплатно →Как это работает
Как работает serverless-маршрутизация API
Создайте маршрут
Свяжите любой HTTP-метод и путь с функцией — поддерживаются wildcards и параметры пути вроде /users/:id.
Настройте доступ
Выберите режим доступа для каждого маршрута — без авторизации, API key или Bearer: у каждого маршрута своя политика.
Готово к вызовам
Маршрут доступен по /gw/{workspace}/{path} сразу после сохранения — без шага деплоя и без смены DNS.
Возможности
Возможности шлюза для API и вебхуков
Параметры в пути
Объявите /users/:id и читайте event.pathParameters.id в обработчике; wildcard-маршруты вроде /admin/* тоже работают.
Ограничение частоты
Защитите функции от злоупотреблений, ограничив число запросов в минуту на каждом маршруте.
CORS
Разрешённые источники и заголовки задаются на каждый маршрут — у каждого эндпоинта ровно та CORS-политика, которая ему нужна.
Любой HTTP-метод
GET, POST, PUT и DELETE маршрутизируются по отдельности, а ANY ловит все методы одним маршрутом.
Пример
Пример route.json и обработчика функции
// CreateApiRouteInput (gateway UI or API) { "method": "POST", "path": "/users", "functionId": "create-user", "authType": "api-key", "rateLimit": 100, "corsEnabled": true, "corsOrigins": ["https://myapp.com"] }
export async function handler(event, context) { const payload = typeof event.body === 'string' ? JSON.parse(event.body || '{}') : (event || {}); const { name, email } = payload; if (!name) { return { statusCode: 400, body: JSON.stringify({ error: 'name required' }) }; } const user = await db.users.create({ name, email }); return { statusCode: 201, body: JSON.stringify(user), }; }