El entorno de ejecución de Go

Descripción general

Tu función de Cloud Run Functions se ejecuta en un entorno que consta de una versión del sistema operativo, además de paquetes de complementos, compatibilidad con lenguajes y la biblioteca de Functions Framework que admite e invoca la función. Este entorno se identifica mediante la versión del lenguaje y se conoce como el entorno de ejecución.

Para obtener información sobre los entornos de ejecución en general y saber qué versión de Ubuntu usa cada entorno de ejecución de Go, consulta el entorno de ejecución de Cloud Run Functions.

Selecciona tu entorno de ejecución

Cloud Run Functions admite varias versiones de Go, que se enumeran en la página Compatibilidad con el entorno de ejecución. Puedes seleccionar el entorno de ejecución de Go que prefieras para tu función durante la implementación.

gcloud

Si usas Google Cloud CLI, especifica el entorno de ejecución mediante el parámetro --runtime con el entorno de ejecución de Go que prefieras. Por ejemplo:

gcloud functions deploy FUNCTION_NAME --no-gen2 --runtime go121 FLAGS...

FLAGS... hace referencia a los argumentos que se pasaron durante la primera implementación de tu función. Para obtener más información sobre los argumentos obligatorios y los opcionales, consulta Cómo implementar una Cloud Run Functions.

Console

Si usas la consola de Google Cloud, consulta la guía de inicio rápido de la consola de Google Cloud para obtener instrucciones detalladas.

Preparación de funciones

Puedes preparar una función directamente desde la consola de Google Cloud o escribirla en tu máquina local y subirla. A fin de preparar tu máquina local para el desarrollo en Go, consulta Configura un entorno de desarrollo de Go.

Para comenzar rápidamente con Go en Cloud Run Functions, consulta la guía de inicio rápido.

Estructura del código fuente

Para que Cloud Run Functions encuentre la definición de tu función, tu código fuente debe seguir una estructura específica. Consulta Escribe funciones de Cloud Run para obtener más información.

Especifica dependencias

Cloud Run Functions en Go debe proporcionar todas sus dependencias con módulos de Go y un archivo go.mod o con un directorio vendor. Para obtener más información, consulta Especifica dependencias en Go.

Variables de entorno

El entorno de ejecución de Go configura automáticamente ciertas variables de entorno para que tu función las use según sea necesario. Para obtener más detalles, consulta Usa variables de entorno.

Tipo Context

El paquete context de Go define el tipo de Context, que lleva fechas límite, indicadores de cancelación y otros valores de alcance de la solicitud en todos los límites de la API y entre procesos.

En el siguiente código de funciones de Cloud Run Functions, se muestra un ejemplo de acceso contextual por un cliente de Pub/Sub:


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

import (
	"context"
	"fmt"
	"log"

	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
	"github.com/cloudevents/sdk-go/v2/event"
)

func init() {
	functions.CloudEvent("HelloPubSub", helloPubSub)
}

// MessagePublishedData contains the full Pub/Sub message
// See the documentation for more details:
// https://cloud.google.com/eventarc/docs/cloudevents#pubsub
type MessagePublishedData struct {
	Message PubSubMessage
}

// PubSubMessage is the payload of a Pub/Sub event.
// See the documentation for more details:
// https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
type PubSubMessage struct {
	Data []byte `json:"data"`
}

// helloPubSub consumes a CloudEvent message and extracts the Pub/Sub message.
func helloPubSub(ctx context.Context, e event.Event) error {
	var msg MessagePublishedData
	if err := e.DataAs(&msg); err != nil {
		return fmt.Errorf("event.DataAs: %w", err)
	}

	name := string(msg.Message.Data) // Automatically decoded from base64.
	if name == "" {
		name = "World"
	}
	log.Printf("Hello, %s!", name)
	return nil
}