Acesse mais de 700 laboratórios e cursos

Funções HTTP do Google Cloud Run em Go

Laboratório 45 minutos universal_currency_alt 1 crédito show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

GSP602

Logotipo dos laboratórios autoguiados do Google Cloud

Visão geral

O Go é uma linguagem de programação de código aberto que facilita a criação de softwares simples, confiáveis e eficientes. Ele já está instalado para quem usa o Cloud Shell.

O Cloud Run functions é um ambiente de execução sem servidor que serve para criar e conectar serviços em nuvem. Com ele, você escreve funções de finalidade única que são vinculadas a eventos emitidos pela infraestrutura e pelos serviços em nuvem. A função é acionada quando um evento sob monitoramento é disparado. Seu código é executado em um ambiente totalmente gerenciado no Cloud Run. Você não precisa provisionar infraestruturas nem se preocupar com o gerenciamento de servidores.

É preciso usar linguagens de programação compatíveis para escrever funções do Cloud Run. É possível executar sua função em qualquer ambiente de execução padrão das linguagens aceitas. Isso facilita a portabilidade e os testes locais.

Neste laboratório, você vai usar o Go para criar sua própria função do Cloud Run que, quando invocada via HTTP, exibe uma imagem do Gopher do Go, personagem criado por Renée French.

O que você vai aprender

  • Como escrever uma função HTTP do Cloud Run em Go.
  • Como testar uma função HTTP do Cloud Run em Go.
  • Como executar um servidor HTTP local do Go para testar a função.

O mascote do Go, o Gopher

Pré-requisitos

Para fazer este laboratório, é preciso ter experiência com o Go. As explicações sobre o código Go apresentadas aqui podem ser insuficientes para quem nunca usou essa linguagem.

Configuração e requisitos

Antes de clicar no botão Começar o Laboratório

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento. No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:

    • O botão Abrir Console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Username"}}}

    Você também encontra o nome de usuário no painel Detalhes do Laboratório.

  4. Clique em Próxima.

  5. Copie a Senha abaixo e cole na caixa de diálogo de Olá.

    {{{user_0.password | "Password"}}}

    Você também encontra a senha no painel Detalhes do Laboratório.

  6. Clique em Próxima.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação e campo de pesquisa

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

  2. Clique nas seguintes janelas:

    • Continue na janela de informações do Cloud Shell.
    • Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.

Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

Saída:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.

Configure sua região e zona

Alguns recursos do Compute Engine estão em regiões e zonas. As regiões são localizações geográficas específicas onde você executa seus recursos. Todas elas têm uma ou mais zonas.

Execute estes comandos da gcloud no Cloud Shell para definir a região e a zona padrão do laboratório:

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

Verificar se a API Cloud Run functions está ativada

  • No Cloud Shell, execute o comando a seguir para ativar a API Cloud Run functions. Assim, será possível implantar funções do Cloud Run mais adiante no laboratório.
gcloud services enable cloudfunctions.googleapis.com

Baixar e configurar o código

  1. No terminal do Cloud Shell, use curl para baixar um arquivo zip com o código deste laboratório:
curl -LO https://github.com/GoogleCloudPlatform/golang-samples/archive/main.zip
  1. Use unzip para descompactar o código. Essa ação dá acesso a um diretório (golang-samples-main), que contém amostras de código Go para cloud.google.com.
unzip main.zip
  1. Mude para o diretório que contém o código deste laboratório:
cd golang-samples-main/functions/codelabs/gopher

O diretório gopher contém os seguintes diretórios e arquivos:

$ tree . ├── cmd │ └── main.go # Binário para executar a função localmente. ├── go.mod # Definição do módulo do Go. ├── gophercolor.png # O Gopher! ├── gopher.go # Arquivo do Go com a função. └── gopher_test.go # Arquivo de teste do Go.

Tarefa 1: apresentar funções HTTP do Cloud Run em Go

As funções HTTP do Cloud Run em Go são escritas como funções http.HandlerFunc, que é uma interface definida na biblioteca padrão do Go. A função precisa:

  • Ser exportada, ou seja, pode ser usada em outro pacote. Isso é indicado pelo nome, que começa com uma letra maiúscula.
  • Corresponder ao tipo http.HandlerFunc, ou seja, a função precisa ter o formato func(http.ResponseWriter, *http.Request). Consulte o tutorial Writing Web Applications (Como criar aplicativos da web) para conferir um guia detalhado sobre como escrever um aplicativo da web completo em Go.

Por exemplo, confira uma função "Hello, world":

package gopher import ( "fmt" "net/http" ) // HelloWorld prints "Hello, world." func HelloWorld(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world.") } Observação: é possível abrir esse arquivo no editor do Cloud Shell (clique em "Abrir editor") e usar a árvore de arquivos à esquerda para abrir o arquivo golang-samples-main/functions/codelabs/gopher/hello.go.

Implantar essa função como uma função HTTP do Cloud Run

  1. No diretório functions/codelabs/gopher, é possível implantar o nome da função com gcloud functions deploy:
gcloud functions deploy HelloWorld --gen2 --runtime go123 --trigger-http --region {{{project_0.default_region | REGION}}}
  1. Digite Y quando vir a solicitação para permitir invocações não autenticadas da nova função.

Isso leva um ou dois minutos.

Saída:

Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 entryPoint: HelloWorld httpsTrigger: url: https://region-my-project.cloudfunctions.net/HelloWorld ...

Clique em Verificar meu progresso para conferir o objetivo. Criar a função HTTP HelloWorld do Cloud Run

Observação: você recebeu uma mensagem de erro durante a implantação? Verificação:

  • A API Cloud Run functions está ativada? Caso contrário, você vai receber uma mensagem de erro com um link para ativá-la. Também é possível ativar a API usando o comando gcloud services enable cloudfunctions.googleapis.com.
  • Verifique se o diretório de trabalho, de onde você está executando gcloud, é aquele com o arquivo .go. É possível mudar de diretório usando cd golang-samples/functions/codelabs/gopher.
  • O nome da função está correto? Deve ser HelloWorld, que é o nome da função em Go que você está tentando implantar.
  • Se ainda assim você receber um erro de permissão negada, aguarde alguns minutos e tente novamente.
  • Se você encontrar um erro "403 Forbidden" após a implantação ao acessar o URL implantado, execute este comando para conceder acesso público à função: gcloud functions add-iam-policy-binding HelloWorld \ --member="allUsers" \ --role="roles/cloudfunctions.invoker" \ --region= Depois que essa vinculação de política do IAM for aplicada, reimplante a função usando o comando de implantação anterior.
  1. Copie o URL httpsTrigger que aparece na saída. Você deverá ver o seguinte:
https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld
  1. Para testar a função HelloWorld, use o comando curl no URL da última saída:
curl https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld

Saída:

Hello, world.

Você escreveu e implantou uma função HTTP do Cloud Run.

Tarefa 2: escrever a função HTTP do Cloud Run do Gopher

Vamos deixar a função "Hello, world" um pouco mais divertida exibindo uma imagem de um Gopher em todas as solicitações.

O mascote do Go, o Gopher

O bloco a seguir mostra o código para fazer isso. Confira esse código no Cloud Shell acessando golang-samples-master/functions/codelabs/gopher/gopher.go.

// Package gopher contains an HTTP function that shows a gopher. package gopher import ( "fmt" "io" "net/http" "os" ) // Gopher prints a gopher. func Gopher(w http.ResponseWriter, r *http.Request) { // Read the gopher image file. f, err := os.Open("gophercolor.png") if err != nil { http.Error(w, fmt.Sprintf("Error reading file: %v", err), http.StatusInternalServerError) return } defer f.Close() // Write the gopher image to the response writer. if _, err := io.Copy(w, f); err != nil { http.Error(w, fmt.Sprintf("Error writing response: %v", err), http.StatusInternalServerError) } w.Header().Add("Content-Type", "image/png") }
  • Você vê uma declaração de pacote e um comentário no início do arquivo. Todo o código em Go é escrito dentro de um pacote, com uma declaração como essa na parte de cima.

  • O bloco import contém uma lista de outros pacotes dos quais esse arquivo depende. No restante do arquivo, esses pacotes são identificados pelos próprios nomes. Por exemplo, para usar o tipo ResponseWriter do pacote http, você escreve http.ResponseWriter.

  • Em seguida, vem a declaração da função Gopher.

  • A função começa lendo o arquivo gophercolor.png (consulte o exemplo de código) usando a função os.Open.

  • Depois, ela verifica se houve um erro ao ler o arquivo, o que pode acontecer se ele estiver corrompido ou tiver sido deixado de fora do upload acidentalmente.

  • Ela usa io.Copy para copiar a imagem do Gopher para w, o argumento http.ResponseWriter. Tudo o que é gravado em w é enviado na resposta HTTP.

  • A função retorna normalmente se não houver erro ao gravar a resposta.

  1. Implante essa função, assim como fez com a anterior "Hello, world", usando gcloud functions deploy e o nome dela, Gopher:
gcloud functions deploy Gopher --gen2 --runtime go123 --trigger-http --region {{{project_0.default_region | REGION}}}
  1. Digite Y quando vir a solicitação para permitir invocações não autenticadas da nova função.

  2. Para testar a função, acesse o URL dela na saída do último comando. Se tudo der certo, você verá o Gopher no seu navegador.

A próxima etapa é criar um teste para garantir que a função vai continuar funcionando.

Clique em Verificar meu progresso para conferir o objetivo. Criar a função HTTP do Cloud Run do Gopher

Tarefa 3: criar um teste

As funções HTTP do Cloud Run em Go são testadas usando os pacotes de teste e httptest da biblioteca padrão. Você não precisa executar um emulador ou outra simulação para testar sua função, apenas o código em Go comum.

Confira como é um teste da função Gopher:

package gopher import ( "net/http" "net/http/httptest" "testing" ) func TestGopher(t *testing.T) { rr := httptest.NewRecorder() req := httptest.NewRequest("GET", "/", nil) Gopher(rr, req) if rr.Result().StatusCode != http.StatusOK { t.Errorf("Gopher StatusCode = %v, want %v", rr.Result().StatusCode, http.StatusOK) } }
  • Os testes do Go são escritos da mesma forma que outros arquivos dessa linguagem. Eles começam com uma declaração de pacote e um conjunto de importações.
  • A declaração de teste tem o formato func MyTest(t *testing.T). Ela precisa ser exportada e usar um argumento do tipo *testing.T.
  • O teste cria valores de resposta e solicitação usando o pacote httptest.
  • Ele chama a função Gopher.
  • Depois disso, o teste verifica o código de resposta HTTP para garantir que não houve erros.
  1. Se quiser executar esses testes localmente, use o comando cd para acessar o diretório com os arquivos que você está testando:
cd ~/golang-samples-main/functions/codelabs/gopher
  1. No diretório golang-samples-main/functions/codelabs/gopher, use o comando go test:
go test -v

Saída:

=== RUN TestGopher --- PASS: TestGopher (0.00s) PASS ok github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher 0.037s Observação: o teste não está sendo aprovado?

  • Confira se o conteúdo da mensagem de erro ajuda em algo.
  • Você está no mesmo diretório dos arquivos gopher.go e gopher_test.go (golang-samples-main/functions/codelabs/gopher)?

Em seguida, crie um binário (package main, em Go) para executar a função localmente e testá-la em um navegador.

Tarefa 4: executar a função localmente

Para executar uma função HTTP localmente, crie um servidor HTTP e registre sua função como gerenciador. Consulte o tutorial Writing Web Applications (Como criar aplicativos da web) para conferir um guia detalhado sobre como escrever um aplicativo da web completo em Go.

Você pode escrever um servidor HTTP para sua função em um subdiretório dela.

Seguindo uma convenção do Go, você nomeia esse diretório como cmd e cria um arquivo main.go dentro dele:

// The cmd command starts an HTTP server. package main import ( "fmt" "log" "net/http" "github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher" ) func main() { http.HandleFunc("/", gopher.Gopher) fmt.Println("Listening on localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
  • Esse arquivo usa package main como o pacote. Um pacote main será criado como um binário que você pode executar.
  • Esse arquivo importa github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher com base na linha module do arquivo go.mod ao lado do seu arquivo de função. Nomeie o módulo como quiser ao escrever suas próprias funções.
  • A func main() é o ponto de entrada do binário. Ela registra a função gopher.Gopher como um gerenciador HTTP e, em seguida, inicia o servidor usando http.ListenAndServe.
  1. Para criar e executar esse binário localmente, execute estes comandos:
go123MODULES=on # Turn on Go modules. go build -o start ./cmd ./start

Saída:

Listening on localhost:8080
  1. Como a função carrega a imagem gophercolor.png do diretório de trabalho atual, você precisa iniciar o binário no mesmo diretório do arquivo gophercolor.png. A flag -o start indica que o binário de saída deve ser chamado de start. A flag ./cmd indica que o binário localizado no diretório cmd deve ser criado.

  2. Use a visualização na web do Cloud Shell para testar o servidor no navegador.

  • Clique no botão "Visualização na Web" O ícone de visualização na web.
  • Selecione a porta 8080 no menu exibido.

O Cloud Shell abre o URL de visualização no serviço de proxy dele em uma nova janela do navegador. A visualização na web restringe o acesso HTTPS apenas à sua conta de usuário.

Se tudo estiver funcionando corretamente, você verá o Gopher do Go.

Observação: não consegue ver o Gopher?

  • Você está no mesmo diretório dos arquivos gopher.go e gopher_test.go (golang-samples-main/functions/codelabs/gopher)?
  • O servidor foi iniciado? Para criá-lo, use o comando go build -o start ./cmd. Depois, o inicie executando ./start. Ele deve mostrar Listening on localhost:8080.
  • Você selecionou a porta correta ao abrir a visualização na web? Use 8080, a porta em que o servidor está recebendo solicitações.

Tarefa 5: limpar

Todos os recursos usados são excluídos quando você termina este laboratório. Ao usar seu próprio ambiente, sempre remova recursos desnecessários para reduzir custos e garantir boas práticas na nuvem.

  1. Pare de veicular seu URL com CTRL+C.

  2. Depois de testar as funções do Cloud Run, você pode excluí-las usando o gcloud:

gcloud functions delete Gopher --region {{{project_0.default_region | REGION}}} gcloud functions delete HelloWorld --region {{{project_0.default_region | REGION}}}

Também é possível excluir a função no console.

Parabéns!

Você já sabe como usar as funções do Cloud Run em Go. Neste laboratório, você aprendeu a escrever, testar e executar localmente uma função HTTP do Cloud Run em Go.

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 25 de setembro de 2025

Laboratório testado em 25 de setembro de 2025

Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Enviar feedback sobre este laboratório

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.