En este sencillo tutorial se muestra cómo escribir, desplegar y activar una función de Cloud Run basada en eventos con un activador de Pub/Sub.
Si no conoces Pub/Sub y quieres obtener más información, consulta la documentación de Pub/Sub, en concreto la sección sobre gestión de temas y suscripciones. Consulta Activadores de Pub/Sub para obtener una descripción general de cómo trabajar con temas y suscripciones de Pub/Sub en funciones de Cloud Run.
Si buscas ejemplos de código para usar Pub/Sub, visita el explorador de ejemplos.
Objetivos
- Escribe y despliega una función de Cloud Run basada en eventos.
- Activa la función publicando un mensaje en un tema de Pub/Sub.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
- Cloud Run functions
- Pub/Sub
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Antes de empezar
- 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Prepara tu entorno de desarrollo.
Clona el repositorio de aplicaciones de muestra en la máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Cambia al directorio que contiene el código de ejemplo de las funciones de Cloud Run para acceder a 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/
Echa un vistazo al código de ejemplo:
Node.js
Python
Go
Java
Ruby
Publica un mensaje en tu tema de Pub/Sub. En este ejemplo, el mensaje es un nombre que la función incluirá en un saludo:
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
Sustituye
YOUR_TOPIC_NAME
por el nombre de tu tema de Pub/Sub yYOUR_NAME
por una cadena arbitraria.Consulta los registros para asegurarte de que las ejecuciones se han completado:
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.
Si ya tienes instalada la CLI de gcloud, actualízala ejecutando el siguiente comando:
gcloud components update
Preparar la aplicación
Desplegar la función
Para desplegar la función con un activador de Pub/Sub, ejecuta el siguiente comando en el directorio que contiene el código de ejemplo (o, en el caso de Java, el archivo pom.xml
):
Node.js
gcloud functions deploy helloPubSub \ --runtime nodejs20 \
--trigger-topic YOUR_TOPIC_NAME
Usa la marca --runtime
para especificar el ID del entorno de ejecución de una
versión compatible de Node.js para ejecutar
tu función.
Python
gcloud functions deploy hello_pubsub \ --runtime python312 \
--trigger-topic YOUR_TOPIC_NAME
Usa la marca --runtime
para especificar el ID de tiempo de ejecución de una
versión de Python compatible para ejecutar
tu función.
Go
gcloud functions deploy HelloPubSub \ --runtime go121 \
--trigger-topic YOUR_TOPIC_NAME
Usa la marca --runtime
para especificar el ID de tiempo de ejecución de una versión de Go compatible para ejecutar tu función.
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
Usa la marca --runtime
para especificar el ID de tiempo de ejecución de una
versión de Java compatible para ejecutar
tu función.
Ruby
gcloud functions deploy hello_pubsub --runtime ruby33 \
--trigger-topic YOUR_TOPIC_NAME
Usa la marca --runtime
para especificar el ID de tiempo de ejecución de una
versión de Ruby compatible para ejecutar
tu función.
donde YOUR_TOPIC_NAME
es el nombre del tema de Pub/Sub al que se suscribirá la función.
Si YOUR_TOPIC_NAME
aún no existe, este comando lo creará. También puedes crear un tema antes de ejecutar el comando deploy
mediante la Google Cloud consola o el siguiente comando gcloud
:
gcloud pubsub topics create YOUR_TOPIC_NAME
Activar la función
También puedes publicar un mensaje en un tema de Pub/Sub desde una función.
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Eliminar el proyecto
La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.
Para ello, sigue las instrucciones que aparecen a continuación:
Eliminar la función
Si eliminas funciones de Cloud Run, no se eliminarán los recursos almacenados en Cloud Storage.
Para eliminar la función que has creado en este tutorial, ejecuta el siguiente 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
También puedes eliminar funciones de Cloud Run desde la Google Cloud consola.