Вы просматриваете документацию Apigee Edge .
 Перейдите к документации Apigee X. информация
Версия 1.0.5
Вызов облачных функций, которые развернуты через ваш проект Google Cloud.
В настоящее время это расширение поддерживает вызов триггерных функций HTTP .
Предварительные условия
Этот контент содержит информацию по настройке и использованию этого расширения. Прежде чем использовать расширение из API-прокси с помощью политики ExtensionCallout , необходимо:
Включите API облачных функций .
Определите и разверните функции в Cloud Functions для своего проекта Google Cloud.
Предоставьте пользователю доступ через IAM на тот уровень доступа, который вам нужен для этой функции. Например, вы можете ограничить доступ к функции только той учетной записью службы, которую вы используете для настройки расширения.
Используйте консоль GCP для создания ключа для учетной записи службы .
Используйте содержимое полученного ключевого файла 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, созданное из файла ключей сервисного аккаунта. | Никто. | Да. |