Visão geral
Uma função do Cloud Run é uma parte do código que é executada em resposta a um evento, como uma solicitação HTTP, uma mensagem de um serviço de mensagens ou um upload de arquivo. Os eventos de nuvem são as atividades realizadas no seu ambiente de nuvem. Esses eventos podem ser alterações de itens em um banco de dados, a adição de arquivos a um sistema de armazenamento ou a criação de uma nova instância de máquina virtual.
Como o Cloud Run functions é orientado por eventos, ele só é executado quando algo acontece. Isso os torna uma boa escolha para tarefas que precisam ser realizadas rapidamente ou que não precisam estar em execução o tempo todo.
Neste laboratório prático, você vai aprender a criar, implantar e testar uma Cloud Run function que carrega uma tabela do BigQuery usando o SDK Google Cloud.
Atividades deste laboratório
- Criar uma função do Cloud Run
- Implantar e testar o Cloud Run function
- Ver dados no BigQuery e nos registros do Cloud Run function
Configuração e requisitos
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período sem custo financeiro.
-
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para 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 | "Nome de usuário"}}}
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
-
Clique em Seguinte.
-
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
{{{user_0.password | "Senha"}}}
Você também encontra a Senha no painel Detalhes do laboratório.
-
Clique em Seguinte.
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 uma lista de produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo ou digite o nome do serviço ou produto no campo Pesquisar.
Ative o Google Cloud Shell
O Google Cloud Shell é uma máquina virtual com 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.
-
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

-
Clique em Continuar.
O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- Para listar o nome da conta ativa, use este comando:
gcloud auth list
Saída:
Credentialed accounts:
- @.com (active)
Exemplo de saída:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- Para listar o ID do projeto, use este comando:
gcloud config list project
Saída:
[core]
project =
Exemplo de saída:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Observação:
a documentação completa da gcloud está disponível no
guia com informações gerais sobre a gcloud CLI
.
Tarefa 1: Ativar APIs
Nesta tarefa, você vai ativar as APIs relevantes antes de criar as Cloud Run functions.
- No Cloud Shell, execute o seguinte comando para definir a variável do ID do projeto:
export PROJECT_ID=$(gcloud config get-value project)
- Execute os comandos a seguir para definir a variável "Region":
export REGION={{{project_0.default_region | "REGION"}}}
gcloud config set compute/region $REGION
- Execute os comandos a seguir para definir as variáveis de configuração:
gcloud config set run/region $REGION
gcloud config set run/platform managed
gcloud config set eventarc/location $REGION
- Execute os comandos 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
Observação: para o Eventarc, pode levar alguns minutos até que todas as permissões sejam propagadas para o agente de serviço.
Tarefa 2: Definir as permissões necessárias
Nesta tarefa, você concede à conta de serviço padrão do Compute Engine a capacidade de receber eventos do Eventarc e ao agente de serviço do Cloud Storage a permissão para publicar mensagens em tópicos do Pub/Sub, ativando fluxos de trabalho orientados por eventos e ações desencadeadas pelo armazenamento.
- No Cloud Shell, execute o seguinte comando para definir a variável PROJECT_NUMBER:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
- Execute o comando a seguir para conceder à conta de serviço padrão do Compute Engine no seu projeto as permissões necessárias para receber eventos do Eventarc:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/eventarc.eventReceiver"
- Execute os comandos a seguir para recuperar o agente de serviço do Cloud Storage do seu projeto e conceder a ele a permissão para publicar mensagens em tópicos do Pub/Sub:
SERVICE_ACCOUNT="$(gcloud storage service-agent --project=$PROJECT_ID)"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SERVICE_ACCOUNT}" \
--role='roles/pubsub.publisher'
Tarefa 3: Criar a função
Nesta tarefa, você vai criar uma função simples chamada loadBigQueryFromAvro. Essa função lê um arquivo Avro enviado ao Cloud Storage e cria e carrega uma tabela no BigQuery.
- No Cloud Shell, execute o comando a seguir para criar e abrir um arquivo chamado
index.js
:
nano index.js
- Copie o código a seguir para a função do Cloud no arquivo
index.js
:
/**
* index.js Cloud Function - Avro on GCS to BQ
*/
const {Storage} = require('@google-cloud/storage');
const {BigQuery} = require('@google-cloud/bigquery');
const storage = new Storage();
const bigquery = new BigQuery();
exports.loadBigQueryFromAvro = async (event, context) => {
try {
// Check for valid event data and extract bucket name
if (!event || !event.bucket) {
throw new Error('Invalid event data. Missing bucket information.');
}
const bucketName = event.bucket;
const fileName = event.name;
// BigQuery configuration
const datasetId = 'loadavro';
const tableId = fileName.replace('.avro', '');
const options = {
sourceFormat: 'AVRO',
autodetect: true,
createDisposition: 'CREATE_IF_NEEDED',
writeDisposition: 'WRITE_TRUNCATE',
};
// Load job configuration
const loadJob = bigquery
.dataset(datasetId)
.table(tableId)
.load(storage.bucket(bucketName).file(fileName), options);
await loadJob;
console.log(`Job ${loadJob.id} completed. Created table ${tableId}.`);
} catch (error) {
console.error('Error loading data into BigQuery:', error);
throw error;
}
};
- No nano, pressione (Ctrl+x) e depois (Y) e Enter para salvar o arquivo.
Criar uma função.
Tarefa 4: Criar um bucket do Cloud Storage e um conjunto de dados do BigQuery
Nesta tarefa, você vai configurar a infraestrutura de segundo plano para armazenar recursos usados para invocar a função do Cloud Run (um bucket do Cloud Storage) e armazenar a saída no BigQuery quando ela for concluída.
- No Cloud Shell, execute o comando a seguir para criar um novo bucket do Cloud Storage como local de testes:
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
- Execute o comando a seguir para criar um conjunto de dados do BQ para armazenar os dados:
bq mk -d loadavro
Criar um bucket do Cloud Storage e um conjunto de dados do BigQuery.
Tarefa 5: Implantar a função
Nesta tarefa, você vai implantar a nova função do Cloud Run e ativá-la para que os dados sejam carregados no BigQuery.
- No Cloud Shell, execute o comando a seguir para instalar as duas bibliotecas javascript para ler dados do Cloud Storage e armazenar a saída no BigQuery:
npm install @google-cloud/storage @google-cloud/bigquery
- Execute o seguinte comando para implantar a função:
gcloud functions deploy loadBigQueryFromAvro \
--gen2 \
--runtime nodejs20 \
--source . \
--region $REGION \
--trigger-resource gs://$PROJECT_ID \
--trigger-event google.storage.object.finalize \
--memory=512Mi \
--timeout=540s \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Observação: se uma mensagem de erro relacionada à propagação do agente de serviço do Eventarc aparecer, aguarde alguns minutos e tente o comando novamente.
- Execute o seguinte comando para confirmar se o gatilho foi criado. A saída será semelhante a esta:
gcloud eventarc triggers list --location=$REGION
NAME: loadbigqueryfromavro-177311
TYPE: google.cloud.storage.object.v1.finalized
DESTINATION: Cloud Functions: loadBigQueryFromAvro
ACTIVE: Yes
LOCATION: europe-west1
- Execute o comando a seguir para fazer o download do arquivo Avro que será processado pela função do Cloud Run para armazenamento no BigQuery:
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
- Execute o comando a seguir para mover o arquivo Avro para o bucket do Cloud Storage de teste que você criou anteriormente. Essa ação vai acionar a função do Cloud Run:
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}}
Implantar uma função.
Tarefa 6: Confirmar se os dados foram carregados no BigQuery
Nesta tarefa, você vai confirmar que os dados processados pela função do Cloud Run foram carregados no BigQuery. Para isso, consulte a tabela loadavro.campaigns
usando o comando bq
.
- No Cloud Shell, execute o comando bq para conferir os dados na nova tabela do BigQuery:
bq query \
--use_legacy_sql=false \
'SELECT * FROM `loadavro.campaigns`;'
Observação: a função do Cloud Run geralmente é processada rapidamente, mas é possível que a consulta executada no BigQuery não gere nenhum resultado. Se esse for o caso, aguarde um momento e execute a consulta novamente.
A consulta deve retornar resultados semelhantes aos seguintes:
Exemplo de saída:
+------------+--------+---------------------+--------+---------------------+----------+-----+
| created_at | period | campaign_name | amount | advertising_channel | bid_type | id |
+------------+--------+---------------------+--------+---------------------+----------+-----+
| 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 |
| 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 |
| 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 |
| 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 |
| 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 |
| 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 |
| 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 |
| 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 |
| 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 |
| 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 |
+------------+--------+---------------------+--------+---------------------+----------+-----+
Tarefa 7: Ver registros
Nesta tarefa, você vai recuperar todas as entradas de registro associadas ao serviço chamado loadBigQueryFromAvro.
- No Cloud Shell, execute o seguinte comando para examinar os registros da função do Cloud Run:
gcloud logging read "resource.labels.service_name=loadBigQueryFromAvro"
As mensagens no registro são semelhantes a esta:
resource:
labels:
configuration_name: loadbigqueryfromavro
location: europe-west1
project_id: qwiklabs-gcp-04-16fde64676e4
revision_name: loadbigqueryfromavro-00001-wim
service_name: loadbigqueryfromavro
type: cloud_run_revision
spanId: '5804952652695382607'
textPayload: |
Job undefined completed. Created table campaigns.
timestamp: '2025-03-10T17:24:43.560594Z'
Parabéns!
Você usou o SDK Google Cloud para criar, implantar e testar uma Cloud Run function que criou e carregou uma tabela do BigQuery.
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 empresas e produtos podem ser marcas registradas das empresas a que estão associados.