O tempo de execução do Go

Vista geral

A sua função do Cloud Run é executada num ambiente que consiste numa versão do sistema operativo, além de pacotes de suplementos, suporte de idiomas e a biblioteca Functions Framework que suporta e invoca a sua função. Este ambiente é identificado pela versão do idioma e é conhecido como o tempo de execução.

Para obter informações sobre os tempos de execução em geral e saber que versão do Ubuntu cada tempo de execução do Go usa, consulte o ambiente de execução das funções do Cloud Run.

Selecione o tempo de execução

As funções do Cloud Run suportam várias versões do Go, listadas na página de suporte de tempo de execução. Pode selecionar o tempo de execução do Go preferido para a sua função durante a implementação.

gcloud

Se estiver a usar a CLI do Google Cloud, especifique o tempo de execução usando o parâmetro --runtime com o tempo de execução do Go à sua escolha. Por exemplo:

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

FLAGS... refere-se aos argumentos transmitidos durante a primeira implementação da sua função. Para mais informações acerca dos argumentos obrigatórios e opcionais, consulte o artigo Implemente uma função do Cloud Run.

Consola

Se estiver a usar a Google Cloud consola, consulte o Google Cloud início rápido da consola para ver instruções detalhadas.

Preparação da função

Pode preparar uma função diretamente a partir da Google Cloud consola ou escrevê-la no seu computador local e carregá-la. Para preparar o seu computador local para o desenvolvimento em Go, consulte o artigo Configurar um ambiente de desenvolvimento em Go.

Para começar rapidamente a usar as funções do Go no Cloud Run, consulte o Início rápido.

Estrutura do código-fonte

Para que as funções do Cloud Run encontrem a definição da sua função, o código fonte tem de seguir uma estrutura específica. Consulte o artigo Escrever funções do Cloud Run para mais informações.

Especificar dependências

As funções do Cloud Run em Go têm de fornecer todas as respetivas dependências com módulos Go e um ficheiro go.mod ou com um diretório vendor. Para mais informações, consulte o artigo Especificar dependências em Go.

Variáveis de ambiente

O tempo de execução do Go define automaticamente determinadas variáveis de ambiente para a sua função usar conforme necessário. Para ver detalhes, consulte o artigo Usar variáveis de ambiente.

Context tipo

O pacote contextGo define o Contexttipo, que contém prazos, sinais de cancelamento e outros valores com âmbito de pedido nos limites da API e entre processos.

O código das funções do Cloud Run seguinte mostra um exemplo de acesso ao contexto por parte de um cliente do 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
}