Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex API Gateway
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Сетевое взаимодействие
      • Обзор
        • Статический ответ
        • Обращение по HTTP
        • Cloud Functions
        • Serverless Containers
        • Smart Web Security
        • Object Storage
        • DataSphere
        • Data Streams
        • Message Queue
        • Managed Service for YDB
        • Swagger UI
      • Жадные параметры
      • Обобщенный HTTP-метод
      • Авторизация с помощью функции Cloud Functions
      • Авторизация с помощью JWT
      • Поддержка протокола WebSocket
      • Валидация данных
      • CORS
      • Параметризация спецификации
      • Канареечный релиз
      • Ограничение скорости обработки запросов
      • Замена кода ответа
      • Преобразование тела ответа и запроса
    • Квоты и лимиты
  • Управление доступом
  • Инструменты
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Поддерживаемые параметры
  • Спецификация расширения
  • Структура запроса v0.1
  • Структура запроса v1.0
  • Структура запроса v2.0
  • Примеры использования
  1. Концепции
  2. Расширения спецификации
  3. Интеграции
  4. Cloud Functions

Расширение x-yc-apigateway-integration:cloud_functions

Статья создана
Yandex Cloud
Обновлена 2 декабря 2025 г.
  • Поддерживаемые параметры
  • Спецификация расширения
  • Структура запроса v0.1
  • Структура запроса v1.0
  • Структура запроса v2.0
  • Примеры использования

Расширение x-yc-apigateway-integration:cloud_functions вызывает указанную функцию. В качестве входных данных функция получает информацию о HTTP-запросе и значения параметров, указанных в спецификации, на выходе клиенту возвращается результат выполнения функции.

Добавить расширение в спецификацию можно с помощью конструктора спецификаций.

Поддерживаемые параметрыПоддерживаемые параметры

В таблице ниже перечислены параметры, специфичные для API-шлюза сервиса API Gateway. Описание остальных параметров читайте в спецификации OpenAPI 3.0.

Параметр Тип Описание
function_id string Идентификатор функции.
tag string Необязательный параметр. Тег версии функции. Значение по умолчанию — $latest.
В tag осуществляется подстановка параметров.
service_account_id string Идентификатор сервисного аккаунта для авторизации при обращении к функции. Сервисный аккаунт необходим для вызова приватной функции — для этого он должен иметь роль functions.functionInvoker или выше на эту функцию. Если параметр не указан, используется значение верхнеуровневого параметра service_account_id. Если верхнеуровневого параметра тоже нет, функция вызывается без авторизации.
payload_format_version string Версия формата запроса к функции. Возможные значения — 0.1, 1.0 и 2.0. Версия по умолчанию — 0.1.
context object Необязательный параметр. Контекст операции — произвольный объект в формате YAML или JSON. Передается в функцию внутри запроса в поле requestContext.apiGateway.operationContext. В context осуществляется подстановка параметров.

Спецификация расширенияСпецификация расширения

Пример спецификации:

/example/{ID}:
    get:
      summary: Get ID
      operationId: getID
      tags:
        - example
      parameters:
        - name: ID
          in: path
          description: Return ID
          required: true
          schema:
            type: string
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: b095c95icnvb********
        tag: "$latest"
        service_account_id: ajehfe56hhl********

Пример функции:

exports.handler= async function (data, context) {
    return {
        'statusCode': 200,
        'isBase64Encoded': false,
        'body': JSON.stringify({
            'petId': data.params.ID
        }),
    }
};

Структура запроса v0.1Структура запроса v0.1

JSON-структура запроса версии 0.1 повторяет структуру запроса к функции с некоторыми дополнительными полями:

{
    "url": <фактический путь запроса>,
    "path": <путь, соответствующий запросу в спецификации>,
    "httpMethod": <название HTTP-метода>,
    "headers": <словарь со строковыми значениями HTTP-заголовков>,
    "multiValueHeaders": <словарь со списками значений HTTP-заголовков>,
    "queryStringParameters": <словарь queryString-параметров>,
    "multiValueQueryStringParameters": <словарь списков значений queryString-параметров>,
    "requestContext": <словарь с контекстом запроса>,
    "body": <содержимое запроса>,
    "isBase64Encoded": <true или false>,
    "pathParams": <словарь значений параметров пути запроса>,
    "params": <словарь значений параметров запроса, описанных в спецификации OpenAPI>,
    "multiValueParams": <словарь со списками значений параметров запроса, описанных в спецификации OpenAPI>
}

Структура запроса v1.0Структура запроса v1.0

JSON-структура запроса версии 1.0 совместима с форматом запроса AWS API Gateway версии 1.0 и содержит дополнительные поля:

{
    "version": <версия формата запроса>,
    "resource": <ресурс, соответствующий запросу в спецификации>,
    "path": <фактический путь запроса>,
    "httpMethod": <название HTTP-метода>,
    "headers": <словарь со строковыми значениями HTTP-заголовков>,
    "multiValueHeaders": <словарь со списками значений HTTP-заголовков>,
    "queryStringParameters": <словарь queryString-параметров>,
    "multiValueQueryStringParameters": <словарь списков значений queryString-параметров>,
    "requestContext": <словарь с контекстом запроса>,
    "pathParameters": <словарь значений параметров пути запроса>,
    "body": <содержимое запроса>,
    "isBase64Encoded": <true или false>,
    // дополнительные поля:    
    "parameters": <словарь значений параметров запроса, описанных в спецификации OpenAPI>,
    "multiValueParameters": <словарь со списками значений параметров запроса, описанных в спецификации OpenAPI>,
    "operationId": <operationId, соответствующий запросу в спецификации OpenAPI>
}

Структура элемента requestContext:

{
    "identity": <набор пар ключ:значение для аутентификации пользователя>,
    "httpMethod": <DELETE, GET, HEAD, OPTIONS, PATCH, POST или PUT>,
    "requestId": <идентификатор запроса, который генерируется в роутере>,
    "requestTime": <время запроса в формате CLF>,
    "requestTimeEpoch": <время запроса в формате Unix>,
    "authorizer": <словарь с контекстом авторизации>,
    "apiGateway": <словарь со специфичными данными, передаваемыми API-шлюзом при вызове функции>,
    "connectionId": <идентификатор веб-сокетного соединения>,
    "connectedAt": <время подключения веб-сокетного соединения>,
    "eventType": <тип события или операции с веб-сокетом: CONNECT, MESSAGE, DISCONNECT>,
    "messageId": <идентификатор сообщения, полученного из веб-сокета>,
    "disconnectStatusCode": <статус-код закрытия веб-сокета>,
    "disconnectReason": <текстовое описание причины закрытия веб-сокета>
}

Структура элемента authorizer:

{
    "jwt": { // Поле, которое заполняет JWT-авторайзер API Gateway. Содержит данные из токена о пользователе и его правах'
      "claims": <словарь полей тела JWT>,
      "scopes": <список прав владельца JWT>
    }
    // Другие поля контекста авторизации, возвращаемые из функции-авторайзера
}

Структура запроса v2.0Структура запроса v2.0

JSON-структура запроса версии 2.0 совместима с форматом запроса AWS API Gateway версии 2.0 и содержит дополнительные поля:

{
    "version": <версия формата запроса>,
    "rawPath": <путь без строки запроса>,
    "rawQueryString": <строка запроса в формате «параметр1=значение1&параметр2=значение2»>,
    "cookies": <массив строк, каждая из которых представляет один cookie в формате «имя=значение»>,
    "headers": <словарь со строковыми значениями HTTP-заголовков, указанных через запятую>,
    "queryStringParameters": <словарь queryString-параметров, указанных через запятую>,
    "requestContext": <словарь с контекстом запроса>,
    "body": <содержимое запроса>,
    "isBase64Encoded": <true или false>,
    "pathParameters": <словарь значений параметров пути запроса>,
    // дополнительные поля:    
    "parameters": <словарь значений параметров запроса, описанных в спецификации OpenAPI>,
    "multiValueParameters": <словарь со списками значений параметров запроса, описанных в спецификации OpenAPI>,
    "operationId": <operationId, соответствующий запросу в спецификации OpenAPI>
}

Структура элемента requestContext:

{
    "authorizer": <информация об авторизации>,
    "http": <информация о деталях HTTP-запроса>,
    "requestId": <идентификатор запроса, который генерируется в роутере>,
    "time": <дата и время в формате ISO 8601>, 
    "timeEpoch": <числовое значение времени>,
    "apiGateway": <словарь со специфичными данными, передаваемыми API-шлюзом при вызове функции>
}

Структура элемента http:

{
    "method": <HTTP-метод запроса>,
    "path": <URL запроса>,
    "sourceIp": <IP-адрес клиента, отправляющего запрос>,
    "userAgent": <информация о User-Agent>
}

Структура элемента apiGateway:

{
    "operationContext": <параметры и состояния операции>,
    "operationToken": <токен для идентификации или аутентификации операции>
}

Структура элемента operationToken:

{
    "token_type": <тип токена>,
    "access_token": <токен>,
    "expires_in": <время жизни токена>
}

Структура элемента authorizer:

  • При авторизации с помощью JWT:

    {
        "jwt": { // Поле, которое заполняет JWT-авторайзер API Gateway. Содержит данные из токена о пользователе и его правах'
          "claims": <словарь полей тела JWT>,
          "scopes": <список прав владельца JWT>
        } // Другие поля контекста авторизации, возвращаемые из функции-авторайзера
    }
    
  • При авторизации с помощью функции Cloud Functions:

    {
        "function": <параметры функции>
    }
    

Примеры использованияПримеры использования

  • Разработка пользовательской интеграции в API Gateway
  • Канареечный релиз функции Cloud Functions
  • Разработка Telegram-бота для распознавания текста на изображениях, синтеза и распознавания аудио
  • Развертывание веб-приложения с использованием Java Servlet API

Была ли статья полезна?

Предыдущая
Обращение по HTTP
Следующая
Serverless Containers
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»