Neste tutorial simples, demonstramos como escrever, implantar e acionar uma função do Cloud Run orientada a eventos com um gatilho do Pub/Sub.
Se você é novo no Pub/Sub e quer saber mais, consulte a documentação do Pub/Sub, especialmente gerenciamento de tópicos e assinaturas. Consulte Acionadores do Pub/Sub para uma visão geral de como trabalhar com tópicos e assinaturas do Pub/Sub nas funções do Cloud Run.
Se você estiver procurando exemplos de código para usar o Pub/Sub em si, acesse o navegador de exemplo.
Objetivos
- Escrever e implantar uma função do Cloud Run orientada a eventos.
- Acione a função publicando uma mensagem em um tópico Pub/Sub.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
- Cloud Run functions
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
For details, see Cloud Run functions pricing.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Prepare seu ambiente de desenvolvimento.
Node.js
Python
Go
Java
C#
Ruby
PHP
Se a gcloud CLI já estiver instalada, atualize-a executando o seguinte comando:
gcloud components update
Pré-requisitos
Crie um tópico do Pub/Sub:
gcloud pubsub topics create YOUR_TOPIC_NAME
Esta é uma etapa obrigatória antes de implantar a função. Nas funções do Cloud Run, os tópicos do Pub/Sub não são criados automaticamente quando você implanta uma função.
Como preparar o aplicativo
Clone o repositório do app de amostra na máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Mude para o diretório que contém o exemplo de código das funções do Cloud Run para acessar o Pub/Sub:
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Java
cd java-docs-samples/functions/v2/pubsub/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
PHP
cd php-docs-samples/functions/helloworld_pubsub/
Confira o código de amostra:
Node.js
Python
Go
Java
C#
Ruby
PHP
Como implantar a função
Para implantar a função com um gatilho do Pub/Sub, execute o seguinte comando no diretório que contém o código de amostra (ou, no caso de Java, o arquivo pom.xml
):
Node.js
gcloud functions deploy nodejs-pubsub-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=helloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do Node.js compatível a fim de executar a função.
Python
gcloud functions deploy python-pubsub-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=subscribe \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão compatível do Python a fim de executar a função.
Go
gcloud functions deploy go-pubsub-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do Go compatível a fim de executar a função.
Java
gcloud functions deploy java-pubsub-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SubscribeToTopic \ --memory=512MB \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão compatível do Java a fim de executar a função.
C#
gcloud functions deploy csharp-pubsub-function \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub.Function \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do .NET compatível a fim de executar a função.
Ruby
gcloud functions deploy ruby-pubsub-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=hello_pubsub \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão compatível do Ruby a fim de executar a função.
PHP
gcloud functions deploy php-pubsub-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=helloworldPubsub \
--trigger-topic=YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do PHP compatível a fim de executar a função.
em que YOUR_TOPIC_NAME
é o nome do tópico do Pub/Sub
para o qual a função será inscrita.
É necessário criar um tópico antes de executar o comando deploy
, usando o
console do Google Cloud ou a
ferramenta de linha de comando gcloud
. Ao contrário do Cloud Run functions (1a geração),
nas funções do Cloud Run, os tópicos do Pub/Sub não são criados automaticamente
quando você implanta uma função com um acionador do Pub/Sub.
Como acionar a função
Para testar a função do Pub/Sub:
Publique uma mensagem no tópico:
gcloud pubsub topics publish my-topic --message="Friend"
Leia os registros da função para ver o resultado:
gcloud functions logs read \ --gen2 \ --region=REGION \ --limit=5 \ FUNCTION_NAME
Substitua:
- REGION é o nome da região do Google Cloud em que você implantou sua função (por exemplo,
us-west1
). - FUNCTION_NAME é o nome que você deu à função quando a implantou (por exemplo, a função Node.js neste tutorial foi implantada com o nome da função).
nodejs-pubsub-function
).
Você verá a saída de geração de registros que inclui a nova mensagem "Friend".
- REGION é o nome da região do Google Cloud em que você implantou sua função (por exemplo,
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Como excluir a função do Cloud Run
A exclusão de funções do Cloud Run não remove nenhum recurso armazenado no Cloud Storage.
Para excluir a função do Cloud Run criada neste tutorial, execute o seguinte comando:
Node.js
gcloud functions delete nodejs-pubsub-function --gen2 --region REGION
Python
gcloud functions delete python-pubsub-function --gen2 --region REGION
Go
gcloud functions delete go-pubsub-function --gen2 --region REGION
Java
gcloud functions delete java-pubsub-function --gen2 --region REGION
C#
gcloud functions delete csharp-pubsub-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-pubsub-function --gen2 --region REGION
PHP
gcloud functions delete php-pubsub-function --gen2 --region REGION
Também é possível excluir funções do Cloud Run pelo Console do Google Cloud.