Create an HTTP function

Verificar meu progresso

/ 10

Create a Cloud Storage function

Verificar meu progresso

/ 10

Create a Cloud Audit Logs function

Verificar meu progresso

/ 10

Create a VM instance

Verificar meu progresso

/ 10

Deploy different revisions

Verificar meu progresso

/ 20

Set up minimum instances

Verificar meu progresso

/ 20

Create a function with concurrency

Verificar meu progresso

/ 20

Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.

GSP1089

Laboratórios autoguiados do Google Cloud

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

  1. 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.

  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 "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 Login.

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

    Você também encontra o nome de usuário no painel Configuração e acesso ao laboratório.

  4. Clique em Avançar.

  5. 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.

  6. 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.
  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 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. Í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.

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

  1. 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
  1. Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.

  2. 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!'); });
  1. 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

  1. 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.
  1. 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.

verificar se a função foi implantada

Teste

  1. 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)')"
  1. 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

  1. 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
  1. Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.

  2. 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); });
  1. 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

  1. 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}}}
  1. 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.
  1. 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
  1. Depois que a função e o gatilho forem implantados, verifique se nodejs-storage-function aparece no console do Cloud Run.

duas funções

Teste

  1. 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
  1. 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:

audit log 1

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

audit log 2

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.

  1. No menu de navegação, acesse IAM e admin > Registros de auditoria.
Observação: ignore o aviso de permissão ausente resourcemanager.folders.getIamPolicy.
  1. 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.

  2. 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.

leitura de admin, leitura de dados e gravação de dados

  1. 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

  1. 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
  1. Clique no botão Abrir editor na barra de ferramentas do Cloud Shell.

  2. 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

  1. 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
  1. 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
  1. 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.)

  1. No menu de navegação, acesse Compute Engine > Instâncias de VM.

  2. Clique em Criar instância, defina o Nome da instância como instance-1 e a Zona como .

  3. 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.

rótulo do criador

  1. 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

  1. 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

  1. 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
  1. 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

  1. 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:

hello world laranja

  1. No console, acesse a página do Cloud Run e clique no serviço hello-world-colored.

  2. Clique em Editar e implantar uma nova revisão.

  3. 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.

revisão de função

  1. 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:

hello world 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

  1. 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
  1. 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!") }
  1. 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

  1. 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
  1. 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:

  1. No console, acesse a página do Cloud Run e clique no serviço slow-function.

  2. Clique em Editar e implantar uma nova revisão.

  3. 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.

  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

  1. Instale hey no Cloud Shell, usando o comando a seguir:
sudo apt install hey
  1. 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)")
  1. 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.

gráfico de instâncias ativas

  1. 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.

  1. No menu de navegação, acesse o Cloud Run.

  2. Clique no serviço slow-concurrent-function.

  3. Clique em Editar e implantar uma nova revisão.

  4. Na seção Recursos, defina a CPU como 1.

  5. Em Solicitações, defina o Máximo de solicitações simultâneas por instância como 100.

  6. Em Escalonamento de revisão, defina o Número máximo de instâncias como 4.

  7. Deixe os outros campos com os valores padrão e clique em Implantar.

Testar com simultaneidade

  1. 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)")
  1. 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.

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

A melhor maneira de executar este laboratório é usando uma janela de navegação anônima ou privada. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.