Activadores directos

Con el fin de admitir la iteración y la depuración rápidas, Cloud Functions ofrece un comando call en la interfaz de línea de comandos y la función de prueba en la IU de GCP Console. Este comando te permite invocar directamente una función para garantizar que se comporte como está previsto. Esto hace que la función se ejecute inmediatamente, incluso si se hubiera implementado para responder a un evento específico.

Usa la interfaz de línea de comandos de gcloud

Para invocar directamente una función con la herramienta de gcloud, usa el comando gcloud functions call y suministra cualquier dato que tu función espere como archivo JSON en el argumento --data. Por ejemplo:

gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Keyboard Cat"}'

en el que YOUR_FUNCTION_NAME es el nombre de la función que quieres ejecutar. El argumento --data se envía a tu función como se muestra a continuación:

  • Para las funciones de HTTP, los datos que suministras se envían como el cuerpo de una solicitud POST.
  • Para las funciones en segundo plano, los datos se pasan directamente a tu función como los datos del evento. Para obtener más información sobre cómo acceder a los datos de eventos en funciones en segundo plano, consulta Parámetros de funciones en segundo plano.

Usa GCP Console

Para invocar directamente una función de GCP Console, sigue estos pasos:

  1. Ve a la página Descripción general de Cloud Functions.

  2. En la lista, haz clic en el nombre de la función que quieres invocar.

    Esta acción te lleva a la página Detalles de la función.

  3. Haz clic en la pestaña Prueba.

  4. En el campo Evento de activación, ingresa cualquier dato que tu función espere como archivo JSON.

  5. Haz clic en Probar la función.

La respuesta de tu función aparece en el campo Resultado y los registros de la ejecución individual aparecen en el campo Registros.

Ejemplo de Cloud Pub/Sub

En este ejemplo, se muestra cómo invocar directamente una función en segundo plano activada por eventos de Cloud Pub/Sub. Ve la siguiente función de ejemplo:

Node.js 6

/**
 * Background Cloud Function to be triggered by Pub/Sub.
 * This function is exported by index.js, and executed when
 * the trigger topic receives a message.
 *
 * @param {object} event The Cloud Functions event.
 * @param {function} callback The callback function.
 */
exports.helloPubSub = (event, callback) => {
  const pubsubMessage = event.data;
  const name = pubsubMessage.data
    ? Buffer.from(pubsubMessage.data, 'base64').toString()
    : 'World';

  console.log(`Hello, ${name}!`);

  callback();
};

Node.js 8 (Beta)

/**
 * Background Cloud Function to be triggered by Pub/Sub.
 * This function is exported by index.js, and executed when
 * the trigger topic receives a message.
 *
 * @param {object} data The event payload.
 * @param {object} context The event metadata.
 */
exports.helloPubSub = (data, context) => {
  const pubSubMessage = data;
  const name = pubSubMessage.data
    ? Buffer.from(pubSubMessage.data, 'base64').toString()
    : 'World';

  console.log(`Hello, ${name}!`);
};

Python (Beta)

def hello_pubsub(data, context):
    """Background Cloud Function to be triggered by Pub/Sub.
    Args:
         data (dict): The dictionary with data specific to this type of event.
         context (google.cloud.functions.Context): The Cloud Functions event
         metadata.
    """
    import base64

    if 'data' in data:
        name = base64.b64decode(data['data']).decode('utf-8')
    else:
        name = 'World'
    print('Hello {}!'.format(name))

Go (Beta)

// Package helloworld provides a set of Cloud Function samples.
package helloworld

import (
	"context"
	"log"
)

// PubSubMessage is the payload of a Pub/Sub event. Please refer to the docs for
// additional information regarding Pub/Sub events.
type PubSubMessage struct {
	Data []byte `json:"data"`
}

// HelloPubSub consumes a Pub/Sub message.
func HelloPubSub(ctx context.Context, m PubSubMessage) error {
	name := string(m.Data)
	if name == "" {
		name = "World"
	}
	log.Printf("Hello, %s!", name)
	return nil
}

Para invocar directamente una función, es necesario que envíes un PubsubMessage, que espera datos codificados en Base 64 como los datos del evento:

Node.js 6

DATA=$(printf 'PubSub!'|base64) && gcloud functions call helloPubSub --data '{"data":"'$DATA'"}'

Node.js 8 (Beta)

DATA=$(printf 'PubSub!'|base64) && gcloud functions call helloPubSub --data '{"data":"'$DATA'"}'

Python (Beta)

DATA=$(printf 'PubSub!'|base64) && gcloud functions call hello_pubsub --data '{"data":"'$DATA'"}'

Go (Beta)

DATA=$(printf 'PubSub!'|base64) && gcloud functions call HelloPubSub --data '{"data":"'$DATA'"}'

También puedes invocar la función desde la IU de GCP Console. Para ello, simplemente usa los mismos datos de evento en el campo Evento de activación.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Functions