En este documento, se explica cómo crear un tema de Pub/Sub con transformaciones de un solo mensaje (SMT).
Las SMT de temas permiten realizar modificaciones ligeras en los datos y atributos de los mensajes directamente en Pub/Sub. Esta función permite limpiar, filtrar o convertir el formato de los datos antes de que se publiquen los mensajes en el tema.
Para crear un tema con SMT, puedes usar la Google Cloud consola, Google Cloud CLI, la biblioteca cliente o la API de Pub/Sub.
Antes de comenzar
Obtén información sobre el servicio de Pub/Sub y su terminología.
Obtén más información sobre las SMT.
Roles y permisos requeridos
Para obtener los permisos que necesitas
para crear un tema con SMT,
pídele a tu administrador que te otorgue el rol de IAM
Editor de Pub/Sub (roles/pubsub.editor)
en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear un tema con SMT. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear un tema con SMT:
-
Otorga el permiso para crear un tema en el proyecto:
pubsub.topics.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Puedes configurar el control de acceso a nivel de proyecto y a nivel de los recursos individuales.
Crea un tema con SMT
Antes de crear un tema con SMT, revisa la documentación sobre las propiedades de un tema.
Para crear un tema de Pub/Sub con uno o más SMT, realiza los siguientes pasos.
Console
En la consola de Google Cloud , ve a la página Temas de Pub/Sub.
Haga clic en Crear tema.
En el campo ID de tema, ingresa un ID para tu tema. Para obtener más información sobre cómo nombrar temas, consulta los lineamientos para asignar nombres.
En Transformaciones, haz clic en Agregar una transformación.
Ingresa un nombre de función. Por ejemplo:
redactSSN.Si no quieres que la SMT esté activa de inmediato, selecciona Inhabilitar transformación. Cuando se selecciona esta opción, se crea el SMT con el tema, pero no se ejecuta en los mensajes entrantes. Después de crear el tema, puedes editarlo para habilitar el SMT.
En el área de texto, ingresa el código del SMT. Por ejemplo:
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }Es opcional. Para validar el SMT, haz clic en Validate. Si el SMT es válido, se muestra el mensaje
"Validation passed". De lo contrario, se mostrará un mensaje de error.Para agregar otra transformación, haz clic en Agregar una transformación y repite los pasos anteriores.
Para ordenar los SMT en un orden específico, haz clic en Mover hacia arriba o Mover hacia abajo. Para quitar un SMT, haz clic en Borrar.
Es opcional. Para probar un SMT en un mensaje de muestra, sigue estos pasos:
Haz clic en Probar transformaciones.
En la ventana Test transform, selecciona la función que deseas probar.
En la ventana Input message, ingresa un mensaje de ejemplo.
Para agregar un atributo al mensaje, haz clic en Agregar un atributo y, luego, ingresa la clave y el valor del atributo. Puedes agregar varios atributos.
Haz clic en Probar. El resultado de aplicar el SMT al mensaje se muestra en Mensaje de salida.
Para cerrar la ventana Test transforms, haz clic en Cerrar.
Si creas más de un SMT, puedes probar toda la secuencia de transformaciones de la siguiente manera:
- Prueba el primer SMT de la secuencia, como se describe en los pasos anteriores.
- Selecciona el siguiente SMT. El mensaje de entrada se completa previamente con el mensaje de salida de la prueba anterior.
- Sigue probando los SMT en orden para asegurarte de que toda la secuencia funcione según lo esperado.
Para crear el tema, haz clic en Crear.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Crea un archivo YAML o JSON que defina uno o más SMT. Si tienes más de un SMT, se ejecutan en los mensajes en el orden en que los enumeras.
A continuación, se muestra un ejemplo de un archivo de transformación YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSNEs opcional. Para validar un SMT, ejecuta el comando
gcloud pubsub message-transforms validate:gcloud pubsub message-transforms validate \ --message-transform-file=TRANSFORM_FILEReemplaza lo siguiente:
- TRANSFORM_FILE: Es la ruta de acceso a un archivo YAML o JSON que define un solo SMT. Si creas varios SMT, debes validarlos de forma individual.
Es opcional. Para probar uno o más SMT en un mensaje de Pub/Sub de muestra, ejecuta el comando
gcloud pubsub message-transforms test:gcloud pubsub message-transforms test \ --message-transforms-file=TRANSFORMS_FILE \ --message=MESSAGE \ --attribute=ATTRIBUTESReemplaza lo siguiente:
- TRANSFORMS_FILE: Es la ruta de acceso a un archivo YAML o JSON que define uno o más SMT.
- MESSAGE: Es el cuerpo del mensaje de muestra.
- ATTRIBUTES: Opcional Es una lista separada por comas de los atributos del mensaje. Cada atributo es un par clave-valor con el formato
KEY="VALUE".
El comando ejecuta los SMT en orden, y usa el resultado de cada SMT como entrada para el siguiente. El comando genera los resultados de cada paso.
Para crear el tema, ejecuta el comando
gcloud pubsub topics create:gcloud pubsub topics create TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILEReemplaza lo siguiente:
- TOPIC_ID: Es el ID o el nombre del tema que deseas crear. Para obtener lineamientos sobre cómo asignar un nombre a un tema, consulta Nombres de recursos. El nombre de un tema es inmutable.
- TRANSFORMS_FILE: Es la ruta de acceso a un archivo YAML o JSON que define uno o más SMT.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Go
En el siguiente ejemplo, se usa la versión principal de la biblioteca cliente de Pub/Sub de Go (v2). Si aún usas la biblioteca de la versión 1, consulta la guía de migración a la versión 2. Para ver una lista de muestras de código de la versión 1, consulta las muestras de código obsoletas.
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.