Extensión de Google Cloud Functions

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Versión 1.0.5

Invoca funciones de Cloud Functions que se implementen a través de tu proyecto de Google Cloud.

Actualmente, esta extensión admite la invocación de funciones de activador HTTP.

Requisitos previos

En este contenido, se proporciona referencia para configurar y usar la extensión. Antes de utilizar la extensión desde un proxy de API con la política ExtensionExtension, debes hacer lo siguiente:

  1. Habilita la API de Cloud Functions.

  2. Definir y, luego, deploy funciones en Cloud Functions para tu proyecto de Google Cloud

  3. Otorga acceso de usuario a través de IAM para el nivel de acceso que quieres para la función. Por ejemplo, puedes limitar el acceso a la función solo a la cuenta de servicio que usas para configurar la extensión.

  4. Usa GCP Console a fin de generar una clave para la cuenta de servicio.

  5. Usa el contenido del archivo JSON de claves resultante cuando agregues y configures la extensión mediante la referencia de configuración.

Acerca de Cloud Functions

Con Google Cloud Functions, puedes crear e implementar funciones en Google Cloud y, luego, invocarlas desde otro código. Para obtener una introducción a Cloud Functions, prueba una de las guías de inicio rápido.

Ejemplos

En el siguiente ejemplo, se muestra cómo invocar funciones en Cloud Functions con la política ExtensionExtension.

Invoca la función de Node.js

En el siguiente ejemplo, se presenta una política de ExtensionExtension que llama a una extensión de Google Cloud Functions. La extensión llama a la función predeterminada “Hello World” que se incluye cuando habilitas la API de Cloud Functions.

El siguiente código de JavaScript de Node.js se implementa en Cloud Functions para una cuenta de GCP. Si la solicitud incluye una propiedad de mensaje, el código la mostrará. De lo contrario, muestra “Hello World!” como respuesta.

/**
 * 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);
};

Este ejemplo incluye una extensión de Google Cloud Functions configurada con las credenciales necesarias para autenticarse y obtener autorización para invocar código en Cloud Functions.

El código de la función anterior se guarda en Cloud Functions como helloWorld. El siguiente código de configuración de la política ExtensionExtension usa este nombre, junto con los valores de ID del proyecto y región que coinciden con los detalles del entorno de Cloud Functions en el que se implementa la función.

<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>

La siguiente política deAssignMessage captura el valor de respuesta para fines de depuración.

<?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>

La respuesta a la solicitud anterior sería como la siguiente:

Hello yourself!

El valor predeterminado de parsed es true. En este ejemplo, se configura parsed="false" en la etiqueta <Output> de la política, lo que evita que la política analice la respuesta JSON. En la mayoría de las situaciones, cuando usas la extensión de Cloud Functions, debes configurar parsed="false". Consulta Elemento<Output> para obtener más información.

Si la Cloud Function muestra una respuesta JSON y configuras parsed="true", la respuesta de la extensión es una referencia de objeto. Para extraer la respuesta de la referencia, usa la siguiente sintaxis: {objectName}.{jsonKey}. Por ejemplo:

function.response.message

Acciones

invocar

Invoca una función de Cloud Functions.

Actualmente, esta extensión admite la invocación de funciones de activador HTTP.

Sintaxis

<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>

Ejemplo

<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>

parámetros de solicitud

Parámetro Descripción Tipo Predeterminada Obligatorias
region Es la región de Google Cloud en la que se implementa la función. String. Ningún contenido de este tipo Sí.
projectId ID del proyecto de GCP. String. Ningún contenido de este tipo Sí.
functionName El nombre de la función de HTTP que se invocará. Este es el nombre que usaste cuando creaste la función (no necesariamente un nombre del código de la función). String. Ningún contenido de este tipo Sí.
method El método HTTP que se usará cuando se invoque la función. String. GET No.
payload La carga útil que se enviará con la invocación de la función. JSON Ningún contenido de este tipo No.

Respuesta

El valor de respuesta de la función especificada, si corresponde.

Propiedades de las respuestas

Ningún contenido de este tipo

Referencia de configuración

Usa la siguiente información cuando configures e implementes esta extensión para usarla en proxies de API. Si quieres conocer los pasos para configurar una extensión con la consola de Apigee, consulta Agrega y configura una extensión.

Propiedades comunes de las extensiones

Las siguientes propiedades están presentes para cada extensión.

Propiedad Descripción Predeterminado Obligatorio
name Nombre que asignas a esta configuración de la extensión. Ninguna
packageName Nombre del paquete de extensiones proporcionado por Apigee Edge. Ninguna
version El número de versión del paquete de extensiones desde el que quieres configurar la extensión. Ninguna
configuration Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones Ninguna

Propiedades de este paquete de extensión

Especifica valores para las siguientes propiedades de configuración específicas de esta extensión.

Propiedad Descripción Predeterminada Obligatorias
credenciales Cuando se ingresa en la consola de Apigee Edge, este es el contenido del archivo de claves de tu cuenta de servicio. Cuando se envía a través de la API de Management, es un valor codificado en base64 que se genera a partir del archivo de claves de la cuenta de servicio. Ningún contenido de este tipo Sí.