Расширение Google Cloud Functions

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

Версия 1.0.5

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

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

Требования

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

  1. Включите Cloud Functions API.

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

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

  4. Как создать ключ для сервисного аккаунта с помощью консоли GCP

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

О Cloud Functions

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

Примеры

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

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

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

Ниже приведен код JavaScript для Node.js, развернутый в Cloud Functions для аккаунта 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 Functions.

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

Ответ

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

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

Нет.

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

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

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

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

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

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

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

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