Extensión de Google Cloud Functions

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Versión 1.0.5

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

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

Requisitos previos

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

  1. Habilita la API de Cloud Functions.

  2. Define e implementa 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. Usar 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 con 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 ExtensionReference.

Invoca la función de Node.js

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

El siguiente 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, mostrará “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);
};

En este ejemplo, se 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 función anterior se guarda en Cloud Functions como solo helloWorld. El siguiente código de configuración de la política ExtensionAviso usa este nombre, junto con los valores de la región y el ID del proyecto que coinciden con las características del entorno de Cloud Functions donde 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 AssignMessage captura el valor de respuesta con 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 similar a 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. Para la mayoría de las situaciones cuando usas la extensión de Cloud Functions, debes configurar parsed="false". Consulta <Resultado> 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 Cloud Function.

Actualmente, esta extensión admite la invocación de funciones de activador de 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 Obligatorio
región Es la región de Google Cloud en la que se implementa la función. String. Ninguno Sí.
ID de proyecto ID del proyecto de GCP. String. Ninguno 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 es necesariamente un nombre del código de la función). String. Ninguno Sí.
method El método HTTP que se usará cuando se invoque la función. String. GET No.
carga útil La carga útil que se enviará con la invocación de la función. JSON. Ninguno No.

Respuesta

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

Propiedades de la respuesta

Ninguno

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 de extensión comunes

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 Predeterminado Obligatorio
credenciales Cuando se ingresa en la consola de Apigee Edge, este es el contenido del archivo de claves de su 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. Ninguno Sí.