Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ML Services
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка 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
      • Жадные параметры
      • Обобщенный HTTP-метод
      • Авторизация с помощью функции Cloud Functions
      • Авторизация с помощью JWT
      • Поддержка протокола WebSocket
      • Валидация данных
      • CORS
      • Параметризация спецификации
      • Канареечный релиз
      • Ограничение скорости обработки запросов
      • Замена кода ответа
      • Преобразование тела ответа и запроса
    • Квоты и лимиты
  • Управление доступом
  • Инструменты
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

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

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

Статья создана
Yandex Cloud
Обновлена 7 апреля 2025 г.
  • Поддерживаемые параметры
  • Спецификация расширения
  • Структура запроса v0.1
  • Структура запроса v1.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. Версия по умолчанию — 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>
        }
        // Другие поля контекста авторизации, возвращаемые из функции-авторайзера
    }

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

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

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

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