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