Расширение облачных функций Google

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Версия 1.3.1

Вызов облачных функций, которые развернуты через ваш проект Google Cloud.

В настоящее время это расширение поддерживает вызов триггерных функций HTTP .

Предварительные условия

Этот контент содержит информацию по настройке и использованию этого расширения. Прежде чем использовать расширение из API-прокси с помощью политики ExtensionCallout , необходимо:

  1. Включите API облачных функций .

  2. Определите и разверните функции в Cloud Functions для своего проекта Google Cloud.

  3. Предоставьте пользователю доступ через IAM на тот уровень доступа, который вам нужен для этой функции. Например, вы можете ограничить доступ к функции только той учетной записью службы, которую вы используете для настройки расширения.

  4. Используйте консоль GCP для создания ключа для учетной записи службы .

  5. Используйте содержимое полученного ключевого файла JSON при добавлении и настройке расширения с помощью справочника по конфигурации .

Об облачных функциях

С помощью Google Cloud Functions вы можете создавать и развертывать функции в Google Cloud, а затем вызывать эти функции из другого кода. Чтобы познакомиться с облачными функциями, ознакомьтесь с одним из кратких руководств .

Образцы

В следующем примере показано, как вызывать функции в Cloud Functions с помощью политики ExtensionCallout .

Вызов функции Node.js

В следующем примере представлена ​​политика ExtensionCallout , вызывающая расширение Google Cloud Functions. Расширение вызывает функцию «Привет, мир» по умолчанию, которая включается при включении API облачных функций.

Следующий код JavaScript Node.js развертывается в облачных функциях для учетной записи GCP. Если запрос включает свойство сообщения, код возвращает его. В противном случае возвращается «Hello World!» как его ответ.

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

Этот пример включает расширение Google Cloud Functions , настроенное с учетными данными, необходимыми для аутентификации и авторизации для вызова кода в Cloud Functions.

Предыдущий код функции сохраняется в Cloud Functions как просто helloWorld . В следующем коде конфигурации политики ExtensionCallout используется это имя вместе со значениями идентификатора региона и проекта, соответствующими особенностям среды Cloud Functions, в которой развернута функция.

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output parsed="false">function.response</Output>

Следующая политика AssignMessage фиксирует значение ответа в целях отладки.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
    <DisplayName>Get Function Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{function.response}</Payload>
    </Set>
</AssignMessage>

Ответ на запрос выше будет выглядеть следующим образом:

Hello yourself!

Значением по умолчанию для parsed является true . В этом примере в теге <Output> политики задается parsed="false" , что не позволяет политике анализировать ответ JSON. В большинстве ситуаций при использовании расширения Cloud Functions вы устанавливаете parsed="false" . Подробнее см. элемент <Output> .

Если облачная функция возвращает ответ JSON и вы установили parsed="true" , ​​то ответом расширения является ссылка на объект. Чтобы извлечь ответ из ссылки, используйте следующий синтаксис: { objectName }.{ jsonKey } . Например:

function.response.message

Действия

вызывать

Вызывает функцию Cloud.

В настоящее время это расширение поддерживает вызов триггерных функций HTTP .

Синтаксис

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "deployment-region",
    "projectId" : "project-id",
    "functionName" : "function-name",
    "method" : "http-method",
    "payload" : { json-payload }
  }
]]></Input>
<Output>function.response</Output>

Пример

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output>function.response</Output>

Параметры запроса

Параметр Описание Тип По умолчанию Необходимый
область Регион Google Cloud, в котором развернута функция. Нить. Никто. Да.
идентификатор проекта Идентификатор проекта GCP. Нить. Никто. Да.
имя функции Имя вызываемой HTTP-функции. Это имя, которое вы использовали при создании функции (не обязательно имя из кода функции). Нить. Никто. Да.
метод Метод HTTP, используемый при вызове функции. Нить. GET Нет.
полезная нагрузка Полезная нагрузка, отправляемая при вызове функции. JSON. Никто. Нет.

Ответ

Значение ответа указанной функции, если таковое имеется.

Свойства ответа

Никто.

Справочник по конфигурации

Используйте следующее при настройке и развертывании этого расширения для использования в прокси-серверах API. Инструкции по настройке расширения с помощью консоли Apigee см. в разделе Добавление и настройка расширения .

Общие свойства расширения

Следующие свойства присутствуют для каждого расширения.

Свойство Описание По умолчанию Необходимый
name Имя, которое вы даете этой конфигурации расширения. Никто Да
packageName Имя пакета расширения, предоставленное Apigee Edge. Никто Да
version Номер версии пакета расширения, из которого вы настраиваете расширение. Никто Да
configuration Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да

Свойства этого пакета расширений

Укажите значения для следующих свойств конфигурации, специфичных для этого расширения.

Свойство Описание По умолчанию Необходимый
реквизиты для входа При вводе в консоли Apigee Edge это содержимое файла ключей вашей учетной записи службы. При отправке через API управления это значение в кодировке Base64, созданное из файла ключей сервисного аккаунта. Никто. Да.