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

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

Версия 2.0.2

Вызывайте облачные функции, развернутые в рамках вашего проекта 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 попробуйте один из кратких руководств .

Образцы

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

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

В следующем примере показана политика ExtensionCallout , вызывающая расширение Google Cloud Functions. Расширение вызывает функцию по умолчанию "hello world", которая включается при активации API Cloud Functions.

Следующий JavaScript-код на Node.js развернут в Cloud Functions для учетной записи GCP. Если запрос содержит свойство message, код возвращает его. В противном случае он возвращает "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!

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

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

function.response.message

Действия

вызвать

Вызывает облачную функцию.

В настоящее время это расширение поддерживает вызов функций, запускаемых по протоколу 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, где развернута данная функция. Нить. Никто. Да.
projectId Идентификатор проекта GCP. Нить. Никто. Да.
functionName Имя вызываемой HTTP-функции. Это имя, которое вы использовали при создании функции (не обязательно имя из кода функции). Нить. Никто. Да.
метод Метод HTTP, используемый при вызове функции. Нить. GET Нет.
полезная нагрузка Полезная нагрузка, отправляемая при вызове функции. JSON. Никто. Нет.

Ответ

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

Свойства отклика

Никто.

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

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

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

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

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

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

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

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