Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex API Gateway
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Создание API-шлюза
    • Изменение API-шлюза и его спецификации
    • Подключение домена
    • Удаление API-шлюза
    • Мониторинг
    • Просмотр журнала выполнения
  • Практические руководства
    • Все практические руководства
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка навыка Алисы и сайта с авторизацией
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции
    • Разработка CRUD API для сервиса фильмов
    • Работа с API-шлюзом по протоколу WebSocket
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Расширения спецификации
      • Обзор
      • Статический ответ
      • Вызов функции
      • Интеграция с Serverless Containers
      • Обращение по HTTP
      • Интеграция с Object Storage
      • Интеграция с DataSphere
      • Интеграция с Data Streams
      • Интеграция с Message Queue
      • Интеграция с YDB
      • Жадные параметры
      • Обобщенный HTTP-метод
      • Авторизация с помощью функции
      • Поддержка протокола WebSocket
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ApiGatewayService
      • OperationService
    • REST (англ.)
      • Overview
      • ApiGateway
        • Overview
        • addDomain
        • create
        • delete
        • get
        • getOpenapiSpec
        • list
        • listAccessBindings
        • listOperations
        • removeDomain
        • setAccessBindings
        • update
        • updateAccessBindings
  • Справочник API Websocket
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ConnectionService
    • REST (англ.)
      • Overview
      • Connection
        • Overview
        • disconnect
        • get
        • send
  • Вопросы и ответы
  1. Концепции
  2. Расширения спецификации
  3. Вызов функции

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

Статья создана
Yandex Cloud
  • Поддерживаемые параметры
  • Спецификация расширения
  • Структура запроса 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 Идентификатор сервисного аккаунта для авторизации при обращении к функции. Если параметр не указан, используется значение верхнеуровнего параметра 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: b095c95icnvbuf4v755l
        tag: "$latest"
        service_account_id: ajehfe56hhlsd4n93q1

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

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

Структура запроса 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

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>
}

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Поддерживаемые параметры
  • Спецификация расширения
  • Структура запроса v0.1
  • Структура запроса v1.0