API-шлюз

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

1

Создайте маршрут

Свяжите любой HTTP-метод и путь с функцией — поддерживаются wildcards и параметры пути вроде /users/:id.

2

Настройте доступ

Выберите режим доступа для каждого маршрута — без авторизации, API key или Bearer: у каждого маршрута своя политика.

3

Готово к вызовам

Маршрут доступен по /gw/{workspace}/{path} сразу после сохранения — без шага деплоя и без смены DNS.

Возможности шлюза для API и вебхуков

Параметры в пути

Объявите /users/:id и читайте event.pathParameters.id в обработчике; wildcard-маршруты вроде /admin/* тоже работают.

Ограничение частоты

Защитите функции от злоупотреблений, ограничив число запросов в минуту на каждом маршруте.

CORS

Разрешённые источники и заголовки задаются на каждый маршрут — у каждого эндпоинта ровно та CORS-политика, которая ему нужна.

Любой HTTP-метод

GET, POST, PUT и DELETE маршрутизируются по отдельности, а ANY ловит все методы одним маршрутом.

Пример route.json и обработчика функции

create-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"]
}
create-user/index.js
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),
  };
}

Начать бесплатно

Задеплойте первую функцию за несколько минут. Карта не нужна.

Начать бесплатно