GSP1089
Visão geral
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 desempenho 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 funções do Cloud Run 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 de funções do Cloud Run pode 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 funções do Cloud Run. Isso oferece cargas de trabalho maiores na memória, mais paralelas e com uso intensivo de computação.
-
Simultaneidade: processe até mil 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 pré-aquecidas 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ê 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 laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
À direita, você encontra o painel Configuração e acesso ao laboratório com as seguintes informações:
- O botão Abrir console do Google Cloud
- As credenciais temporárias (nome de usuário e senha) que você vai usar no laboratório
- Outros dados, se necessários
O timer do laboratório fica na parte de cima da página e mostra o tempo restante.
-
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 "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 Login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Configuração e acesso ao laboratório.
-
Clique em Avançar.
-
Copie a Senha abaixo e cole na caixa de diálogo Olá!.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Configuração e acesso ao laboratório.
-
Clique em Avançar.
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, talvez 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 sem custo financeiro.
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: ative as APIs
Antes de criar funções do Cloud Run, 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 \
cloudquotas.googleapis.com \
monitoring.googleapis.com
Tarefa 2: crie 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
-
Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.
-
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"
}
}
Implantar
- No terminal do Cloud Shell, execute o comando a seguir para implantar a função:
gcloud run deploy nodejs-http-function \
--source . \
--function helloWorld \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--timeout 600s \
--max-instances 1 \
--no-allow-unauthenticated
Observação: se você receber um erro de permissões, aguarde alguns minutos e tente a implantação de novo. A ativação das APIs leva alguns minutos.
As flags usadas neste comando incluem:
-
--source .: instrui o Cloud Run a criar a função em uma imagem do contêiner usando buildpacks.
-
--function helloWorld: define o ponto de entrada da função a ser invocado.
-
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}}: especifica a imagem de base do ambiente de execução e ativa as atualizações automáticas da imagem de base para correções de segurança.
-
--timeout 600s: permite que a função tenha um tempo limite maior (600 segundos) para responder às solicitações HTTP.
-
--max-instances 1: define o número máximo de instâncias como 1.
-
--no-allow-unauthenticated: garante que a função exija autenticação.
- Depois que a função for implantada, no menu de navegação do console do Google Cloud, acesse Cloud Run e verifique se
nodejs-http-function está listada.

Teste
- No Cloud Shell, recupere o URL de serviço da sua função e armazene-o em uma variável de ambiente:
SERVICE_URL="$(gcloud run services describe nodejs-http-function --region {{{project_0.default_region|Region}}} --format 'value(status.url)')"
- Teste a função HTTP autenticada transmitindo seu token de identidade no cabeçalho de autorização:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL
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 usando um gatilho do Eventarc.
Configurar
- Execute os comandos a seguir para conceder os papéis do IAM necessários às contas de serviço do Cloud Storage e do Compute Engine:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gcloud storage service-agent --project="$PROJECT_NUMBER" | xargs)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
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
-
Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.
-
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"
}
}
Implantar
- Primeiro, execute o comando a seguir para criar um bucket do Cloud Storage que será usado para gerar eventos:
export BUCKET_NAME="gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gcloud storage buckets create gs://$BUCKET_NAME --location={{{project_0.default_region|Region}}}
- Execute o seguinte comando para implantar a função do Cloud Run:
gcloud run deploy nodejs-storage-function \
--source . \
--function helloStorage \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--max-instances 1 \
--no-allow-unauthenticated
Observação: como antes, se você receber um erro de permissões, aguarde alguns minutos e tente a implantação de novo. Pode levar alguns minutos para que as APIs sejam ativadas.
- Agora, crie o gatilho do Eventarc para rotear eventos de criação de objetos do Cloud Storage para a função implantada:
gcloud eventarc triggers create nodejs-storage-function-trigger \
--location={{{project_0.default_region|Region}}} \
--destination-run-service=nodejs-storage-function \
--destination-run-region={{{project_0.default_region|Region}}} \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=$BUCKET_NAME" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Depois que a função e o gatilho forem implantados, verifique se
nodejs-storage-function aparece no console do Cloud Run.

Teste
- Para testar a função, execute o comando a seguir, que faz upload de um arquivo para o bucket:
echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
- Execute o comando a seguir para ler os registros do serviço. Você verá o CloudEvent recebido nos registros:
gcloud run services logs read nodejs-storage-function \
--region {{{project_0.default_region|Region}}} --limit=100
Observação: pode levar um minuto para gerar os registros.
Será exibido um código semelhante a este.
Saída:
}
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: crie 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.
Determine 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
Acessar 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
-
Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.
-
No Explorador de Arquivos, acesse eventarc-samples > gce-vm-labeler > gcf > nodejs e abra index.js.
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.
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 do Cloud Run:
gcloud run deploy gce-vm-labeler \
--source . \
--function labelVmCreation \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--max-instances 1 \
--no-allow-unauthenticated
- Crie o gatilho do Eventarc para filtrar os registros de auditoria das inserções de instâncias do Compute Engine:
gcloud eventarc triggers create gce-vm-labeler-trigger \
--location={{{project_0.default_region|Region}}} \
--destination-run-service=gce-vm-labeler \
--destination-run-region={{{project_0.default_region|Region}}} \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=compute.googleapis.com" \
--event-filters="methodName=beta.compute.instances.insert" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Observação: o gatilho da função de registro de auditoria é criado imediatamente, mas pode levar até 10 minutos para que ele seja totalmente funcional.
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma função dos Registros de auditoria do Cloud
Teste
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 saída:
...
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: implante 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 run deploy hello-world-colored \
--source . \
--function hello_world \
--base-image python311 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--update-env-vars COLOR=$COLOR \
--max-instances 1
A esta altura, você pode testar a função abrindo o URL de serviço (a resposta do URI do comando de implantação executado anteriormente) no navegador. O resultado será Hello World com um fundo laranja:

-
No console, acesse a página do Cloud Run e clique no serviç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 abrindo o URL do serviço no navegador, vai ver Hello World com um fundo amarelo:

Clique em Verificar meu progresso para conferir o objetivo.
Implantar múltiplas revisões
Tarefa 6: configure 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.26
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 run deploy slow-function \
--source . \
--function HelloWorld \
--base-image go126 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--max-instances 4
- Teste a função com estes comandos:
SLOW_URL="$(gcloud run services describe slow-function --region {{{project_0.default_region|Region}}} --format 'value(status.url)')"
curl $SLOW_URL
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 instâncias mínimas
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.
Teste
- Para testar a função novamente, execute o seguinte comando:
curl $SLOW_URL
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: crie 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 run services describe slow-function --region {{{project_0.default_region|Region}}} --format="value(status.url)")
- Use uma ferramenta de comparativo de mercado 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.
Saída:
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 run deploy slow-concurrent-function \
--source . \
--function HelloWorld \
--base-image go126 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--min-instances 1 \
--max-instances 4
Definir 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 run services describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --format="value(status.url)")
- 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.
Saída:
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 2026
Laboratório testado em 19 de agosto de 2026
Copyright 2026 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.