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

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

Версия 2.0.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 попробуйте один из быстрых стартов .

Образцы

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

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

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

Следующий Node.js JavaScript развернут в 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 . Этот пример устанавливает parsed="false" в теге <Output> политики, что не позволяет политике анализировать ответ JSON. Для большинства ситуаций при использовании расширения Cloud Functions вы устанавливаете parsed="false" . Подробнее см. в элементе <Output> .

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

Ответ

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

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

Никто.

Ссылка на конфигурацию

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

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

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

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

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

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

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