Neste simples tutorial, demonstraremos como escrever, implantar e acionar um Background Cloud Function com um gatilho do Cloud 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 Google Cloud Pub/Sub para uma visão geral de como trabalhar com tópicos e assinaturas do Pub/Sub no Cloud Functions.
Se você estiver procurando exemplos de código para usar o Pub/Sub em si, acesse o navegador de amostra do Google Cloud.
Objetivos
- Escreva e implante um Background Cloud Function.
- Acione a função publicando uma mensagem em um tópico Pub/Sub.
Custos
Este tutorial usa componentes do Cloud Platform que podem ser cobrados, incluindo:
- Cloud Functions
- Pub/Sub
Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.
Usuários novos do Cloud Platform podem se qualificar para um teste gratuito.Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
- Ative as APIs Cloud Functions and Cloud Pub/Sub.
- Instale e inicialize o SDK do Cloud..
- Prepare seu ambiente de desenvolvimento.
Se o SDK do Cloud já estiver instalado, atualize-o executando o comando a seguir:
gcloud components update
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.
Mude para o diretório que contém o código de amostra do Cloud Functions para acessar o Pub/Sub:
Node.js
cd nodejs-docs-samples/functions/helloworld/
Python
cd python-docs-samples/functions/helloworld/
Go
cd golang-samples/functions/helloworld/
Java
cd java-docs-samples/functions/helloworld/hello-pubsub/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
Confira o código de amostra:
Node.js
Python
Go
Java
C#
Ruby
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 helloPubSub \ --runtime nodejs10 \É possível usar os seguintes valores para a sinalização
--trigger-topic YOUR_TOPIC_NAME
--runtime
para especificar sua versão preferida do Node.js: nodejs10
nodejs12
nodejs14
(visualização pública)
Python
gcloud functions deploy hello_pubsub \ --runtime python38 \É possível usar os seguintes valores da sinalização
--trigger-topic YOUR_TOPIC_NAME
--runtime
para especificar a versão preferencial do Python:
python37
python38
python39
(visualização pública)
Go
gcloud functions deploy HelloPubSub \ --runtime go113 \É possível usar os seguintes valores para a sinalização
--trigger-topic YOUR_TOPIC_NAME
--runtime
para especificar sua versão Go preferencial: go111
(uso suspenso)go113
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java11 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
C#
gcloud functions deploy csharp-pubsub-function \ --entry-point HelloPubSub.Function \ --runtime dotnet3 \
--trigger-topic YOUR_TOPIC_NAME
Ruby
gcloud functions deploy hello_pubsub --runtime ruby26 \Use os seguintes valores da sinalização
--trigger-topic YOUR_TOPIC_NAME
--runtime
para especificar sua versão preferida do Ruby:
ruby26
ruby27
em que YOUR_TOPIC_NAME
é o nome do tópico do Pub/Sub
para o qual a função será inscrita.
Se YOUR_TOPIC_NAME
ainda não existir, este comando
o criará para você. Também é possível criar um tópico antes de executar o comando deploy
usando o Console do Cloud ou o seguinte comando gcloud
:
gcloud pubsub topics create YOUR_TOPIC_NAME
Como acionar a função
Publique uma mensagem no seu tópico do Pub/Sub. Neste exemplo, a mensagem é um nome que a função incluirá em uma saudação:
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
Substitua
YOUR_TOPIC_NAME
pelo nome do seu tópico do Pub/Sub eYOUR_NAME
por uma string arbitrária.Verifique os registros para se certificar de que as execuções foram concluídas:
gcloud functions logs read --limit 50
Você também pode publicar uma mensagem em um tópico Pub/Sub de dentro de uma função.
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que contém os recursos 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:
- No Console do Cloud, acesse a página Gerenciar recursos:
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Como excluir a Função do Cloud
A exclusão de Cloud Functions não remove nenhum recurso armazenado no Cloud Storage.
Para excluir o Cloud Function criado neste tutorial, execute o seguinte comando:
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
C#
gcloud functions delete csharp-pubsub-function
Ruby
gcloud functions delete hello_pubsub
Também é possível excluir o Cloud Functions do Console do Google Cloud.