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