GSP1089

Informações gerais
O Cloud Run functions é a solução do Google Cloud que oferece funções como serviço. Ele oferece um conjunto de recursos avançados, com tecnologia do Cloud Run e do Eventarc. Essa tecnologia traz benefícios, como o controle mais preciso de performance e de escalabilidade, maior controle do ambiente de execução das funções e dos gatilhos de mais de 90 fontes de eventos.
Neste laboratório, você vai criar Cloud Run funcions que respondem a chamadas HTTP e são acionadas por eventos do Cloud Storage e pelos Registros de Auditoria do Cloud. Você também vai implantar revisões de uma função do Cloud Run, além de ver novas opções de configurações.
O que há de novo?
Esta nova versão do Cloud Run functions fornece uma experiência de FaaS otimizada, com as tecnologias do Cloud Run, do Cloud Build, do Artifact Registry e do Eventarc.
Infraestrutura aprimorada
-
Processamento de solicitações mais longo: a execução das funções do Cloud Run podem durar mais tempo do que o padrão de 5 minutos. Isso facilita a execução das cargas de trabalho de solicitações mais longas, como grandes fluxos de dados do Cloud Storage ou do BigQuery. Para funções HTTP, o tempo é de até 60 minutos. Já para as funções orientadas por eventos, o tempo é de até 10 minutos.
-
Instâncias maiores: aproveite até 16 GB de RAM e 4 vCPUs com as Cloud Run functions. Isso oferece cargas de trabalho maiores na memória, mais paralelas e com uso intensivo de computação.
-
Simultaneidade: processe até 1.000 solicitações simultâneas com uma única instância de função, minimizando as inicializações a frio e melhorando a latência em escala.
-
Instâncias mínimas: instâncias preaquecidas para reduzir as inicializações a frio e garantir que o tempo de inicialização não afete o desempenho do aplicativo.
-
Divisão de tráfego: suporte a múltiplas versões de uma função, divisão do tráfego entre diferentes versões e reversão da função para uma versão anterior.
Ampla cobertura de eventos e suporte ao CloudEvents
-
Integração com o Eventarc: o Cloud Run functions agora inclui suporte nativo para o Eventarc, que traz mais de 125 fontes de eventos usando os Registros de Auditoria do Cloud (BigQuery, Cloud SQL, Cloud Storage etc.). É claro que ele ainda aceita eventos de fontes personalizadas ao publicar diretamente no Cloud Pub/Sub.
-
Formato do CloudEvent: todas as funções orientadas por eventos, independentemente da origem, seguem o padrão do setor CloudEvents (cloudevents.io), para garantir uma experiência de desenvolvedor consistente. Os payloads são enviados por meio de um CloudEvent estruturado com um payload cloudevent.data e implementam esse mesmo padrão.
Objetivos
Neste laboratório, você vai aprender a:
- Escrever uma função que responda a chamadas HTTP
- Escrever uma função que responda a eventos do Cloud Storage
- Escrever uma função que responda aos Registros de Auditoria do Cloud
- Implantar várias revisões de uma função do Cloud Run
- Eliminar as inicializações a frio com o mínimo de instâncias
- Definir simultaneidade
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
-
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
-
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.
-
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.
-
Clique em Próxima.
-
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.
-
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.
-
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.
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.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
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.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (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.
Tarefa 1: ativar as APIs
Antes de criar Cloud Run functions, você precisa ativar as APIs relevantes.
- Execute o comando a seguir para ativar todos os serviços necessários.
gcloud services enable \
artifactregistry.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
eventarc.googleapis.com \
run.googleapis.com \
logging.googleapis.com \
pubsub.googleapis.com
Ativar o Gemini Code Assist no Cloud Shell IDE
Você pode usar o Gemini Code Assist em um ambiente de desenvolvimento integrado (IDE), como o Cloud Shell, para receber orientações sobre o código ou resolver problemas com ele. Antes de começar a usar o Gemini Code Assist, você precisa ativá-lo.
- No Cloud Shell, ative a API Gemini para Google Cloud com o seguinte comando:
gcloud services enable cloudaicompanion.googleapis.com
- Clique em Abrir editor na barra de ferramentas do Cloud Shell.
Observação: para abrir o editor do Cloud Shell, clique em Abrir editor na barra de ferramentas do Cloud Shell. Você pode alternar o Cloud Shell e o editor de código clicando em Abrir editor ou Abrir terminal, conforme necessário.
-
No painel à esquerda, clique no ícone Configurações e, na visualização Configurações, pesquise Gemini Code Assist.
-
Localize e verifique se a caixa de seleção Geminicodeassist: Ativar está marcada e feche as Configurações.
-
Clique em Cloud Code - Sem projeto na barra de status na parte de baixo da tela.
-
Autorize o plug-in conforme instruído. Se um projeto não for selecionado automaticamente, clique em Selecionar um projeto do Google Cloud e escolha .
-
Verifique se o projeto do Google Cloud () aparece na mensagem de status do Cloud Code na barra de status.
Tarefa 2: criar uma função HTTP
Para começar, crie uma função do Node.js autenticada que responda a solicitações HTTP e use um tempo limite de 10 minutos para mostrar como uma função pode ter mais tempo para responder a solicitações HTTP.
Criar
- No terminal do Cloud Shell, execute o seguinte comando para criar a pasta e os arquivos do app e acessar a pasta:
mkdir ~/hello-http && cd $_
touch index.js && touch package.json
-
Na barra de ferramentas do Cloud Shell, clique no botão Abrir editor.
-
Adicione o seguinte código ao arquivo hello-http/index.js
, que simplesmente responde a solicitações HTTP:
const functions = require('@google-cloud/functions-framework');
functions.http('helloWorld', (req, res) => {
res.status(200).send('HTTP with Node.js in GCF 2nd gen!');
});
- Adicione o conteúdo a seguir ao arquivo
hello-http/package.json
para especificar as dependências.
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
No Buscador de arquivos, abra o arquivo index.js
. Essa ação ativa o Gemini Code Assist, como indicado pela presença do ícone
no canto superior direito do editor.
-
Clique no ícone Gemini Code Assist: Ações Inteligentes
e selecione Explain this.
-
O Gemini Code Assist abre um painel de chat com o comando Explain this
preenchido. Na caixa de texto inline do chat do Code Assist, substitua o comando preenchido pelo seguinte e clique em Enviar:
Você é especialista em desenvolvimento na nuvem, na empresa Cymbal AI. Tem uma pessoa nova na equipe que não tem familiaridade com essa implementação de função do Cloud. Explique os arquivos "index.js" e "package.json" na pasta "hello-http", detalhando os principais componentes usados no código do aplicativo.
Para as melhorias sugeridas, não atualize esses arquivos.
As explicações detalhadas do código index.js
e package.json
aparecem no chat do Gemini Code Assist.
Implantar
- No terminal do Cloud Shell, execute o comando a seguir para implantar a função e digite
y
no pop-up Invocações não autenticadas:
gcloud functions deploy nodejs-http-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--timeout 600s \
--max-instances 1
Observação: se você vir um erro de permissões
, aguarde alguns minutos e tente de novo a implantação. Vai levar alguns minutos para as APIs serem ativadas.
Esta etapa tem um tempo limite de 600 segundos, embora isso não seja estritamente necessário. Assim, a função tem um tempo limite maior para responder às solicitações HTTP.
- Depois que a função for implantada, digite Cloud Run functions na barra de pesquisa e clique no resultado. O console do Cloud Run será aberto. Verifique se a função foi implantada com sucesso.

Testar
- Teste a função com o seguinte comando:
gcloud functions call nodejs-http-function \
--gen2 --region {{{project_0.default_region|Region}}}
Você verá esta resposta:
HTTP with Node.js in GCF 2nd gen!
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma função HTTP
Tarefa 3: criar uma função do Cloud Storage
Nesta seção, você vai criar uma função Node.js que responde a eventos de um bucket do Cloud Storage.
Configurar
- Para usar as funções do Cloud Storage, primeiro execute o código a seguir para conceder o papel do IAM
pubsub.publisher
à conta de serviço do Cloud Storage:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
Criar
- Para criar a pasta e os arquivos da função, e acessar a pasta, execute o comando abaixo:
mkdir ~/hello-storage && cd $_
touch index.js && touch package.json
-
Na barra de ferramentas do Cloud Shell, clique no botão Abrir editor.
-
Adicione o código a seguir ao arquivo hello-storage/index.js
, que simplesmente responde a eventos do Cloud Storage:
const functions = require('@google-cloud/functions-framework');
functions.cloudEvent('helloStorage', (cloudevent) => {
console.log('Cloud Storage event with Node.js in GCF 2nd gen!');
console.log(cloudevent);
});
- Adicione o seguinte conteúdo ao arquivo
hello-storage/package.json
para especificar as dependências:
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
No Buscador de arquivos, abra o arquivo index.js
na pasta "hello-storage". Essa ação ativa o Gemini Code Assist, como indicado pela presença do ícone
no canto superior direito do editor.
-
Clique no ícone Gemini Code Assist: Ações Inteligentes
e selecione Explain this.
-
O Gemini Code Assist abre um painel de chat com o comando Explain this
preenchido. Na caixa de texto inline do chat do Code Assist, substitua o comando preenchido pelo seguinte e clique em Enviar:
Você é especialista em desenvolvimento na nuvem, na empresa Cymbal AI. Tem uma pessoa nova na equipe que não tem familiaridade com essa implementação de função do Cloud. Explique os arquivos "index.js" e "package.json" na pasta "hello-storage", detalhando os principais componentes usados no código do aplicativo.
Para as melhorias sugeridas, não atualize esses arquivos.
As explicações detalhadas do código index.js
e package.json
aparecem no chat do Gemini Code Assist.
Implantar
- Primeiro, execute o comando a seguir para criar um bucket do Cloud Storage que será usado para criar eventos:
BUCKET="gs://gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gsutil mb -l {{{project_0.default_region|Region}}} $BUCKET
- Execute o comando a seguir para implantar a função:
gcloud functions deploy nodejs-storage-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloStorage \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-bucket $BUCKET \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Observação: como antes, se você vir um erro de permissões
, aguarde alguns minutos e tente implantar de novo. Pode levar alguns minutos para que as APIs sejam ativadas.
- Depois que a função for implantada, verifique se ela aparece no console do Cloud Run.

Testar
- Para testar a função, execute o comando a seguir, que faz upload de um arquivo para o bucket:
echo "Hello World" > random.txt
gsutil cp random.txt $BUCKET/random.txt
- Execute o comando a seguir. Você verá o CloudEvent recebido nos registros:
gcloud functions logs read nodejs-storage-function \
--region {{{project_0.default_region|Region}}} --gen2 --limit=100 --format "value(log)"
Observação: pode levar um minuto para gerar os registros.
O resultado será parecido com este:
Resposta:
}
traceparent: '00-c74cb472d1e78f7225b6f617a31d9c08-96f0380bb62be2c1-01'
},
etag: 'CKOx1L3wofoCEAE='
crc32c: 'R1jUOQ==',
mediaLink: 'https://storage.googleapis.com/download/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt?generation=1663625646643363&alt=media',
md5Hash: '5Z/5eUEET4XfUpfhwwLSYA==',
size: '12',
timeStorageClassUpdated: '2022-09-19T22:14:06.657Z',
storageClass: 'STANDARD',
updated: '2022-09-19T22:14:06.657Z',
timeCreated: '2022-09-19T22:14:06.657Z',
contentType: 'text/plain',
metageneration: '1',
generation: '1663625646643363',
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
name: 'random.txt',
selfLink: 'https://www.googleapis.com/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt',
id: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/random.txt/1663625646643363',
kind: 'storage#object',
data: {
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
time: '2022-09-19T22:14:06.657124Z',
subject: 'objects/random.txt',
type: 'google.cloud.storage.object.v1.finalized',
specversion: '1.0',
source: '//storage.googleapis.com/projects/_/buckets/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
id: '5693030851428996',
{
Cloud Storage event with Node.js in GCF 2nd gen!
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma função do Cloud Storage
Tarefa 4: criar uma função dos Registros de Auditoria do Cloud
Nesta seção, você vai criar uma função Node.js que recebe um evento dos Registros de Auditoria do Cloud quando uma instância de VM do Compute Engine é criada. Em resposta, ele adiciona um rótulo à VM recém-criada, especificando o criador da VM.
Determinar as VMs recém-criadas do Compute Engine
O Compute Engine emite dois registros de auditoria quando uma VM é criada.
O primeiro é emitido no início da criação da VM e se parece com o seguinte:

O segundo é emitido após a criação da VM e é parecido com:

Você vai perceber que o campo de operação tem os valores first: true
e last: true
. O segundo registro de auditoria contém todas as informações necessárias para rotular uma instância. Portanto, use a flag last: true
para detectá-lo no Cloud Run functions.
Configurar
Para usar as funções dos Registros de Auditoria do Cloud, ative os registros de auditoria para o Eventarc. Você também vai precisar de uma conta de serviço com o papel eventarc.eventReceiver
.
- No menu de navegação, acesse IAM e admin > Registros de auditoria.
Observação: ignore o aviso de permissão ausente resourcemanager.folders.getIamPolicy
.
-
Encontre a API Compute Engine e clique na caixa de seleção ao lado dela. Se não conseguir encontrar a API, pesquise na próxima página.
-
No painel de informações à direita, marque as caixas de seleção dos tipos de registro Leitura de admin, Leitura de dados e Gravação de dados e clique em Salvar.

- Conceda o papel do IAM
eventarc.eventReceiver
à conta de serviço padrão do Compute Engine:
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Receber o código
- Execute o seguinte código para clonar o repositório que contém o aplicativo:
cd ~
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
-
Na barra de ferramentas do Cloud Shell, clique no botão Abrir editor.
-
No Buscador de Arquivos, acesse eventarc-samples > gce-vm-labeler > gcf > nodejs > index.js.
-
Abra o arquivo index.js
. Essa ação ativa o Gemini Code Assist, como indicado pela presença do ícone
no canto superior direito do editor.
-
Clique no ícone Gemini Code Assist: Ações Inteligentes
e selecione Explain this.
-
O Gemini Code Assist abre um painel de chat com o comando Explain this
preenchido. Na caixa de texto inline do chat do Code Assist, substitua o comando preenchido pelo seguinte e clique em Enviar:
Você é especialista em desenvolvimento na nuvem, na empresa Cymbal AI. Tem uma pessoa nova na equipe que não tem familiaridade com essa implementação de função do Cloud. Explique o arquivo "index.js", detalhando os principais componentes usados no código do aplicativo.
Para as melhorias sugeridas, não atualize o arquivo.
O arquivo index.js
contém o código do aplicativo que recebe o registro de auditoria encapsulado em um CloudEvent. Em seguida, ele extrai os detalhes da instância de VM do Compute Engine e define o rótulo dela. Você pode estudar index.js
por conta própria.
As explicações detalhadas do código index.js
aparecem no chat do Gemini Code Assist.
Implantar
- No terminal do Cloud Shell, execute o comando a seguir para acessar o diretório do app:
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
- Execute o seguinte comando para implantar a função com o
gcloud
, como fizemos antes. Observe que a função está filtrando os registros de auditoria das inserções do Compute Engine com a flag --trigger-event-filters
:
gcloud functions deploy gce-vm-labeler \
--gen2 \
--runtime nodejs22 \
--entry-point labelVmCreation \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-event-filters="type=google.cloud.audit.log.v1.written,serviceName=compute.googleapis.com,methodName=beta.compute.instances.insert" \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Observação: o gatilho da função de registros de auditoria é criado imediatamente, mas pode levar até 10 minutos para que os gatilhos estejam totalmente funcionais.
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma função dos Registros de Auditoria do Cloud
Testar
Para testar a função dos Registros de Auditoria, você precisa criar uma VM do Compute Engine no console do Cloud. (Também é possível criar VMs com o gcloud
, mas ele não gera registros de auditoria.)
-
No menu de navegação, acesse Compute Engine > Instâncias de VM.
-
Clique em Criar instância, defina o Nome da instância como instance-1 e a Zona como .
-
Mantenha as configurações padrão dos outros campos e clique em Criar.
Quando a criação da VM for concluída, você vai ver o rótulo creator
nela, na seção de Informações básicas do console do Cloud.

- Verifique usando o seguinte comando:
gcloud compute instances describe instance-1 --zone {{{project_0.default_zone | "Zone"}}}
O rótulo vai aparecer na resposta, como no exemplo a seguir.
Exemplo de resposta:
...
labelFingerprint: ULU6pAy2C7s=
labels:
creator: student-02-19b599a0f901
...
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma instância de VM
- Execute o comando a seguir para excluir a VM. Quando solicitado, digite
Y
para confirmar.
gcloud compute instances delete instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Tarefa 5: implantar múltiplas revisões
O Cloud Run functions oferece suporte para múltiplas revisões de uma função. O tráfego é dividido entre as diferentes revisões e a função é revertida para uma versão anterior. Nesta seção, você vai implantar duas revisões da sua função do Cloud Run.
Criar
- Execute o comando abaixo para criar a pasta e os arquivos da função, e acessar a pasta:
mkdir ~/hello-world-colored && cd $_
touch main.py
touch requirements.txt
- Adicione o código a seguir ao arquivo
hello-world-colored/main.py
com uma função Python, que lê a variável de ambiente de cor e responde com Hello World
nessa cor de fundo:
import os
color = os.environ.get('COLOR')
def hello_world(request):
return f'<body style="background-color:{color}"><h1>Hello World!</h1></body>'
Implantar
- Execute o comando a seguir para implantar a primeira revisão da função com um plano de fundo laranja:
COLOR=orange
gcloud functions deploy hello-world-colored \
--gen2 \
--runtime python39 \
--entry-point hello_world \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--update-env-vars COLOR=$COLOR \
--max-instances 1
A esta altura, você pode testar a função visualizando o gatilho HTTP (a resposta do URI do comando de implantação executado anteriormente) no navegador. O resultado será Hello World
com um fundo laranja:

-
Acesse a página do Cloud Run functions. A página será redirecionada para o console do Cloud Run. Clique na função hello-world-colored.
-
Clique em Editar e implantar uma nova revisão.
-
Deixe tudo com os valores padrão, role para baixo e clique na guia Variáveis e secrets. Na seção Variáveis de ambiente, atualize a variável de ambiente COLOR para yellow
.

- Clique em Implantar.
Como essa é a revisão mais recente, se você testar a função, vai ver Hello World
com um fundo amarelo:

Clique em Verificar meu progresso para conferir o objetivo.
Implantar múltiplas revisões
Tarefa 6: configurar um número mínimo de instâncias
No Cloud Run functions, é possível especificar um número mínimo de instâncias de função a serem mantidas quentes, prontas para atender às solicitações. Isso é útil para limitar o número de inicializações a frio. Nesta seção, você vai implantar uma função com inicialização lenta. Primeiro, observe o problema de inicialização a frio. Depois, implante a função com o valor mínimo de instância definido como 1, para eliminar a inicialização a frio.
Criar
- Execute o comando abaixo para criar a pasta e os arquivos da função, e acessar a pasta:
mkdir ~/min-instances && cd $_
touch main.go
touch go.mod
- Adicione o código a seguir ao arquivo
min-instances/main.go
. Esse serviço Go tem uma função init
que fica inativa por 10 segundos para simular uma inicialização longa. Ele também tem a função HelloWorld
que responde a chamadas HTTP:
package p
import (
"fmt"
"net/http"
"time"
)
func init() {
time.Sleep(10 * time.Second)
}
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Slow HTTP Go in GCF 2nd gen!")
}
- Adicione o seguinte código ao arquivo
min-instances/go.mod
. Ele especifica o caminho do módulo e a versão da linguagem Go:
module example.com/mod
go 1.23
Implantar
- Para implantar a primeira revisão da função com o valor mínimo padrão da instância como zero, execute o comando a seguir:
gcloud functions deploy slow-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--max-instances 4
- Teste a função com este comando:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
Você vai observar um atraso de 10 segundos (inicialização a frio) na primeira chamada e depois verá a mensagem. As chamadas subsequentes serão retornadas imediatamente.
Slow HTTP Go in GCF 2nd gen!
Definir um número mínimo de instâncias
Para eliminar a inicialização a frio na primeira solicitação, reimplante a função com a flag --min-instances
definida como 1, da seguinte forma:
-
No console, acesse a página do Cloud Run e clique no serviço slow-function.
-
Clique em Editar e implantar uma nova revisão.
-
Na seção Escalonamento de revisão, defina o Número mínimo de instâncias como 1
e o Número máximo de instâncias como 4
.
-
Deixe os outros campos com os valores padrão e clique em Implantar.
Testar
- Para testar a função novamente, execute o seguinte comando:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
O atraso de 10 segundos não vai aparecer mais na primeira solicitação. O problema de inicialização a frio para a primeira invocação (após um longo período sem uso) terá desaparecido graças às instâncias mínimas. Consulte a documentação Usar um número mínimo de instâncias para mais informações.
Clique em Verificar meu progresso para conferir o objetivo.
Configurar um número mínimo de instâncias
Tarefa 7: criar uma função com simultaneidade
No Cloud Run functions, uma instância de função processa uma solicitação simultânea, por padrão. No entanto, é possível especificar o número de solicitações simultâneas que podem ser processadas por uma instância. Isso também pode ser útil para evitar inicializações a frio, porque não é necessário criar uma nova instância de função para cada solicitação paralela.
Nesta seção, você vai usar a função com inicialização lenta da etapa anterior. Você vai enviar 10 solicitações e vai ver o problema de inicialização a frio novamente, já que é preciso criar novas instâncias de função para atender às solicitações.
Para corrigir o problema de inicialização a frio, implante outra função, com um valor de simultaneidade de 100. Você vai ver que as 10 solicitações não vão causar mais o problema de inicialização a frio, e uma única instância de função consegue atender a todas elas.
Testar sem simultaneidade
- Instale
hey
no Cloud Shell, usando o comando a seguir:
sudo apt install hey
- Para receber o URL da função e salvá-lo como uma variável de ambiente, execute o comando abaixo:
SLOW_URL=$(gcloud functions describe slow-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Use uma ferramenta de benchmark de código aberto chamada
hey
para enviar 10 solicitações simultâneas à função lenta.
hey -n 10 -c 10 $SLOW_URL
Você vai notar, na resposta de hey
, a demora de algumas solicitações.
Resposta:
Summary:
Total: 10.9053 secs
Slowest: 10.9048 secs
Fastest: 0.4439 secs
Average: 9.7930 secs
Requests/sec: 0.9170
Total data: 310 bytes
Size/request: 31 bytes
Response time histogram:
0.444 [1] |■■■■
1.490 [0] |
2.536 [0] |
3.582 [0] |
4.628 [0] |
5.674 [0] |
6.720 [0] |
7.767 [0] |
8.813 [0] |
9.859 [0] |
10.905 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Isso acontece porque mais instâncias de função estão sendo criadas para atender às solicitações. Observando a contagem de instâncias ativas da função, você também vai notar que mais de uma delas foi criada em algum momento, e isso está causando o problema de inicialização a frio.

- Execute o comando a seguir para excluir a função. Quando solicitado, digite
Y
para confirmar.
gcloud run services delete slow-function --region {{{project_0.default_region | "Region"}}}
Implantar
- Para implantar uma nova função idêntica à anterior, execute o comando abaixo. Depois da implantação, você vai aumentar a simultaneidade:
gcloud functions deploy slow-concurrent-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--min-instances 1 \
--max-instances 4
Definir a simultaneidade
Agora, você vai definir a simultaneidade do serviço do Cloud Run para a função como 100
(o número máximo é 1.000). Isso garante que pelo menos 100 solicitações possam ser processadas por uma única instância de função.
-
No menu de navegação, acesse o Cloud Run.
-
Clique no serviço slow-concurrent-function.
-
Clique em Editar e implantar uma nova revisão.
-
Na seção Recursos, defina a CPU como 1
.
-
Em Solicitações, defina o Máximo de solicitações simultâneas por instância como 100
.
-
Em Escalonamento de revisão, defina o Número máximo de instâncias como 4
.
-
Deixe os outros campos com os valores padrão e clique em Implantar.
Testar com simultaneidade
- Depois que a função for implantada, execute o comando a seguir para receber o URL da nova função e salvá-lo como uma variável de ambiente:
SLOW_CONCURRENT_URL=$(gcloud functions describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Agora use
hey
para enviar 10 solicitações simultâneas:
hey -n 10 -c 10 $SLOW_CONCURRENT_URL
Ao analisar a resposta de hey
, você verá que todas as solicitações foram processadas.
Resposta:
Summary:
Total: 0.0652 secs
Slowest: 0.0651 secs
Fastest: 0.0619 secs
Average: 0.0636 secs
Requests/sec: 153.3751
Total data: 280 bytes
Size/request: 28 bytes
Response time histogram:
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.063 [0] |
0.063 [0] |
0.063 [0] |
0.063 [1] |■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.065 [0] |
0.065 [1] |■■■■■■■■■■■■■■■■■■■■
Uma única instância de função conseguiu atender às todas as solicitações. Além disso, o problema de inicialização a frio desapareceu, graças ao aumento da simultaneidade. Leia a documentação sobre simultaneidade para mais informações.
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma função com simultaneidade
Parabéns!
Neste laboratório, você implantou várias funções do Cloud Run que responderam a chamadas HTTP, eventos do Cloud Storage e dos Registros de Auditoria do Cloud. Depois, você implantou múltiplas revisões dos serviços do Cloud Run que executaram as funções, definiu valores de simultaneidade e eliminou as inicializações a frio com o número mínimo de instâncias.
Próximas etapas / Saiba mais
Para mais informações sobre Cloud Run functions, confira o seguinte material:
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 19 de agosto de 2025.
Laboratório testado em 19 de agosto 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.