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