Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Версия 2.0.2
Вызывайте облачные функции, развернутые в рамках вашего проекта Google Cloud.
В настоящее время это расширение поддерживает вызов функций, запускаемых по протоколу HTTP .
Предварительные требования
Данный материал содержит справочную информацию по настройке и использованию этого расширения. Перед использованием расширения через API-прокси с помощью политики ExtensionCallout необходимо:
Включите API облачных функций .
Определяйте и развертывайте функции в Cloud Functions для вашего проекта Google Cloud.
Предоставьте пользователю доступ через IAM с тем уровнем прав, который вам необходим для данной функции. Например, вы можете ограничить доступ к функции только для той учетной записи службы, которую вы используете для настройки расширения.
Используйте консоль GCP для генерации ключа для учетной записи службы .
При добавлении и настройке расширения с помощью справочника по конфигурации используйте содержимое полученного JSON-файла с ключами.
О облачных функциях
С помощью Google Cloud Functions вы можете создавать и развертывать функции в Google Cloud, а затем вызывать эти функции из другого кода. Для ознакомления с Cloud Functions попробуйте один из кратких руководств .
Образцы
Следующий пример иллюстрирует, как вызывать функции в Cloud Functions с помощью политики ExtensionCallout .
Вызов функции Node.js
В следующем примере показана политика ExtensionCallout , вызывающая расширение Google Cloud Functions. Расширение вызывает функцию по умолчанию "hello world", которая включается при активации API Cloud Functions.
Следующий JavaScript-код на Node.js развернут в Cloud Functions для учетной записи GCP. Если запрос содержит свойство message, код возвращает его. В противном случае он возвращает "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> .
Если облачная функция возвращает 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. | Нить. | Никто. | Да. |
| functionName | Имя вызываемой HTTP-функции. Это имя, которое вы использовали при создании функции (не обязательно имя из кода функции). | Нить. | Никто. | Да. |
| метод | Метод HTTP, используемый при вызове функции. | Нить. | GET | Нет. |
| полезная нагрузка | Полезная нагрузка, отправляемая при вызове функции. | JSON. | Никто. | Нет. |
Ответ
Значение ответа указанной функции, если таковое имеется.
Свойства отклика
Никто.
Справочник по конфигурации
При настройке и развертывании этого расширения для использования в API-прокси используйте следующие параметры. Инструкции по настройке расширения с помощью консоли Apigee см. в разделе «Добавление и настройка расширения» .
Общие свойства расширения
Следующие свойства присутствуют для каждого расширения.
| Свойство | Описание | По умолчанию | Необходимый |
|---|---|---|---|
name | Имя, которое вы даете этой конфигурации расширения. | Никто | Да |
packageName | Имя пакета расширения, предоставленное Apigee Edge. | Никто | Да |
version | Номер версии пакета расширения, из которого вы настраиваете расширение. | Никто | Да |
configuration | Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. | Никто | Да |
Свойства для этого пакета расширений
Укажите значения для следующих параметров конфигурации, специфичных для данного расширения.
| Свойство | Описание | По умолчанию | Необходимый |
|---|---|---|---|
| реквизиты для входа | При вводе в консоль Apigee Edge это содержимое файла ключа вашей учетной записи службы. При отправке через API управления это значение в кодировке base64, сгенерированное из файла ключа учетной записи службы. | Никто. | Да. |