Este tutorial simples demonstra como escrever, implementar e acionar uma função do Cloud Run baseada em eventos com um acionador do Pub/Sub.
Se está a usar o Pub/Sub pela primeira vez e quer saber mais, consulte a documentação do Pub/Sub, em particular a secção sobre gestão de tópicos e subscrições. Consulte o artigo Acionadores do Pub/Sub para ver uma vista geral do trabalho com tópicos e subscrições do Pub/Sub nas funções do Cloud Run.
Se procura exemplos de código para usar o Pub/Sub em si, visite o navegador de exemplos.
Objetivos
- Escrever e implementar uma função do Cloud Run baseada em eventos.
- Acionar a função publicando uma mensagem num tópico do Pub/Sub.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Cloud Run functions
- Pub/Sub
Para gerar uma estimativa de custos com base na sua utilização projetada,
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Prepare o seu ambiente de desenvolvimento.
Clone o repositório da app de exemplo para a sua máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Altere para o diretório que contém o código de exemplo das funções do Cloud Run para aceder ao 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/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
Veja o exemplo de código:
Node.js
Python
Go
Java
Ruby
Publicar uma mensagem no seu tópico Pub/Sub. Neste exemplo, a mensagem é um nome que a função vai incluir numa 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 registos para se certificar de que as execuções foram concluídas:
gcloud functions logs read --limit 50
- 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.
Se já tiver a CLI gcloud instalada, atualize-a executando o seguinte comando:
gcloud components update
A preparar a aplicação
Implementar a função
Para implementar a função com um acionador do Pub/Sub, execute o seguinte comando no diretório que contém o código de exemplo (ou, no caso do Java, o ficheiro pom.xml
):
Node.js
gcloud functions deploy helloPubSub \ --runtime nodejs20 \
--trigger-topic YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão suportada do Node.js para executar
a sua função.
Python
gcloud functions deploy hello_pubsub \ --runtime python312 \
--trigger-topic YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Python suportada para executar
a sua função.
Go
gcloud functions deploy HelloPubSub \ --runtime go121 \
--trigger-topic YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Go suportada para executar
a sua função.
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão Java suportada para executar
a sua função.
Ruby
gcloud functions deploy hello_pubsub --runtime ruby33 \
--trigger-topic YOUR_TOPIC_NAME
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Ruby suportada para executar
a sua função.
onde YOUR_TOPIC_NAME
é o nome do tópico do Pub/Sub
ao qual a função vai subscrever.
Se YOUR_TOPIC_NAME
ainda não existir, este comando cria-o para si. Também pode criar um tópico antes de executar o comando deploy
usando a Google Cloud consola ou o seguinte comando gcloud
:
gcloud pubsub topics create YOUR_TOPIC_NAME
Acionar a função
Também pode publicar uma mensagem num tópico do Pub/Sub a partir de uma função.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Eliminar o projeto
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o projeto:
A eliminar a função
A eliminação de funções do Cloud Run não remove recursos armazenados no Cloud Storage.
Para eliminar a função que criou 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
Ruby
gcloud functions delete hello_pubsub
Também pode eliminar funções do Cloud Run a partir da Google Cloud consola.