O ambiente de execução do Go

A função do Cloud Run é executada em um ambiente que consiste em uma versão do sistema operacional com pacotes complementares, suporte a linguagens e a biblioteca Go Functions Framework que dá suporte e invoca a função. Esse ambiente é identificado pela versão da linguagem e é conhecido como ID de execução.

Preparação de funções

É possível preparar uma função diretamente do console do Google Cloud ou gravá-la na máquina local e fazer upload dela. Para preparar a máquina local para o desenvolvimento do Go, consulte Configurar um ambiente de desenvolvimento do Go.

Ambientes de execução e imagens de base do Go compatíveis

Ambiente de execução ID do ambiente de execução Pilhas Imagem de base do ambiente de execução
Go 1.23
(apenas pré-lançamento)
go123
  • google-22 (padrão)
  • google-22-full
  • google-22/go123
  • google-22-full/go123
  • Go 1.22 go122
  • google-22 (padrão)
  • google-22-full
  • google-22/go122
  • google-22-full/go122
  • Go 1.21 go121
  • google-22 (padrão)
  • google-22-full
  • google-22/go121
  • google-22-full/go121
  • Go 1.20 go120
  • google-22 (padrão)
  • google-22-full
  • google-22/go120
  • google-22-full/go120
  • Go 1.19 go119
  • google-22 (padrão)
  • google-22-full
  • google-22/go119
  • google-22-full/go119
  • Go 1.18 go118
  • google-22 (padrão)
  • google-22-full
  • google-22/go118
  • google-22-full/go120
  • Go 1.16 go116 google-18-full google-18-full/go116
    Go 1.13 go113 google-18-full google-18-full/go113
    Go 1.11 go111 Desativado Desativado

    Selecionar o ambiente de execução

    Selecione um dos ambientes de execução do Go com suporte para a função durante a implantação.

    É possível selecionar uma versão do ambiente de execução usando o console do Google Cloud ou a CLI gcloud. Clique na guia para conferir instruções sobre como usar a ferramenta de sua preferência:

    gcloud

    Especifique a imagem de base do Go para a função usando a flag --base-image durante a implantação. Exemplo:

    gcloud beta run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image go122
    

    Substitua:

    • FUNCTION pelo nome da função que você está implantando. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome, se você omiti-lo.

    • FUNCTION_ENTRYPOINT: o ponto de entrada da função no código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte.

    Para instruções detalhadas sobre como implantar uma função usando a CLI gcloud, consulte Implantar funções no Cloud Run.

    Console

    É possível selecionar uma versão do ambiente de execução ao criar ou atualizar uma função do Cloud Run no console do Google Cloud. Para instruções detalhadas sobre como implantar uma função, consulte Implantar funções no Cloud Run.

    Para selecionar um ambiente de execução no console do Google Cloud ao criar uma função, siga estas etapas:

    1. No console do Google Cloud, acesse a página do Cloud Run:

      Acessar o Cloud Run

    2. Clique em Escrever uma função.

    3. Na lista Ambiente de execução, selecione uma versão do ambiente de execução do Go.

    4. Clique em Criar e aguarde o Cloud Run criar o serviço usando uma revisão do marcador de posição.

    5. O console vai redirecionar você para a guia Origem, em que você pode ver o código-fonte da sua função. Clique em Salvar e implantar novamente.

    Para instruções detalhadas sobre como atualizar a versão do ambiente de execução depois que a função for implantada, consulte Reimplantar o novo código-fonte.

    Estrutura do código-fonte

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

    Especificar as dependências

    O Cloud Run functions no Go precisa fornecer todas as respectivas dependências com módulos Go e um arquivo go.mod ou com um diretório vendor. Para mais informações, consulte Especificar dependências no Go.

    Variáveis de ambiente

    O ambiente de execução do Go define automaticamente certas variáveis de ambiente para que sua função use conforme necessário. Para mais detalhes, consulte Configurar variáveis de ambiente.

    Context tipo

    O pacote context do Go define o tipo de Context, que transporta prazos, sinais de cancelamento e outros valores do escopo de solicitações entre limites de APIs e entre processos.

    O código a seguir mostra um exemplo de acesso ao contexto por 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
    }