En este documento, se explica cómo crear una suscripción a Pub/Sub con transformaciones de un solo mensaje (SMT).
Los SMT de suscripción 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 los mensajes se entreguen a un cliente suscriptor.
Para crear una suscripción con SMT, puedes usar la consola de Google Cloud , 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 una suscripción con SMT, pídele a tu administrador que te otorgue el rol de IAM de 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 una suscripción 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 una suscripción con SMT:
-
Otorga el permiso para crear una suscripción en el proyecto:
pubsub.subscriptions.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Según el tipo de suscripción, es posible que necesites permisos adicionales. Para conocer la lista exacta de permisos, consulta el documento en el que se explica cómo crear la suscripción específica. Por ejemplo, si creas una suscripción a BigQuery con SMT, consulta la página Crea suscripciones a BigQuery.
Si creas una suscripción en un proyecto diferente al del tema, debes otorgar el rol roles/pubsub.subscriber
al principal del proyecto que contiene la suscripción en el proyecto que contiene el tema.
Puedes configurar el control de acceso a nivel de proyecto y a nivel de los recursos individuales.
Crea una suscripción con SMT
Antes de crear una suscripción con SMT, revisa la documentación sobre las propiedades de una suscripción.
En los siguientes ejemplos, se supone que deseas crear una suscripción con este SMT de función definida por el usuario (UDF). Para obtener más información sobre las UDF, consulta la descripción general de las UDF.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
Console
En la consola de Google Cloud , ve a la página Suscripciones de Pub/Sub.
-
Haz clic en Crear suscripción.
Se abrirá la página Crear suscripción.
-
En el campo ID de suscripción, ingresa un ID para tu suscripción. Para obtener más información sobre cómo asignar nombres a las suscripciones, 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 usar la SMT con tu suscripción de inmediato, haz clic en la opción Inhabilitar transformación. Esto guardará el SMT, pero no se ejecutará a medida que los mensajes fluyan a través de tu suscripción.
-
Ingresa una transformación nueva. Por ejemplo:
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
Pub/Sub proporciona una función de validación que te permite validar un SMT. Haz clic en Validar para validar la transformación.
-
Si deseas agregar otra transformación, haz clic en Agregar una transformación.
- Para organizar todos los SMT en un orden específico, puedes usar las flechas hacia arriba y hacia abajo. Para quitar un SMT, haz clic en el botón de borrar.
-
Pub/Sub proporciona una función de prueba que te permite verificar el resultado de ejecutar el SMT en un mensaje de muestra. Para probar las SMT, haz clic en Probar transformación.
-
En la ventana Test transform, selecciona la función que deseas probar.
-
En la ventana Input message, ingresa un mensaje de ejemplo.
-
Si deseas agregar atributos de mensaje, haz clic en Agregar un atributo y, luego, ingresa uno o más pares clave-valor.
-
Haga clic en Probar. Se muestra el resultado de aplicar las SMT al mensaje.
-
Cierra la ventana para dejar de probar los SMT en mensajes de muestra.
-
Haz clic en Crear para crear la suscripción.
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.
-
Pub/Sub proporciona una función de validación que te permite validar un SMT. Ejecuta el comando
gcloud pubsub message-transforms validate
:gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
Reemplaza lo siguiente:
-
TRANSFORM_FILE: Es la ruta de acceso al archivo YAML o JSON que contiene un solo SMT.
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: redactSSN
-
-
Pub/Sub proporciona una función de prueba que te permite verificar el resultado de ejecutar uno o más SMT en un mensaje de muestra. Ejecuta el comando
gcloud pubsub message-transforms test
:gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE --message=MESSAGE --attributes=ATTRIBUTES
Reemplaza lo siguiente:
-
TRANSFORMS_FILE: Es la ruta de acceso al archivo YAML o JSON que contiene uno o más SMT.
A continuación, se muestra un ejemplo de un archivo de transformaciones YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
MESSAGE: Es el cuerpo del mensaje con el que se probarán los SMT.
-
ATTRIBUTES: Son los atributos del mensaje con los que se probarán los SMT.
-
-
Para crear la suscripción, ejecuta el comando
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_NAME \ --message-transforms-file=TRANSFORMS_FILE
Reemplaza lo siguiente:
-
SUBSCRIPTION_ID: Es el ID o el nombre de la suscripción que deseas crear. Para obtener instrucciones sobre cómo asignar un nombre a una suscripción, consulta Nombres de recursos. El nombre de una suscripción es inmutable.
-
TOPIC_NAME: Es el nombre del tema al que se suscribirá, en el formato
projects/PROJECT_ID/topics/TOPIC_ID
. -
TRANSFORMS_FILE: Es la ruta de acceso al archivo YAML o JSON que contiene uno o más SMT.
A continuación, se muestra un ejemplo de un archivo de transformaciones YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Pub/Sub 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.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Pub/Sub 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.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Pub/Sub 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.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo interactúan los SMT con otras funciones de suscripción
Si tu suscripción usa tanto SMT como filtros integrados de Pub/Sub, el filtro se aplica antes del SMT. Esto tiene las siguientes implicaciones:
- Si tu SMT altera los atributos del mensaje, el filtro de Pub/Sub no se aplica al nuevo conjunto de atributos.
- Tu SMT no se aplicará a los mensajes que se hayan filtrado con el filtro de Pub/Sub.
Si tu SMT filtra mensajes, ten en cuenta el impacto en el monitoreo de la acumulación de suscripciones. Si incorporas la suscripción a una canalización de Dataflow, no filtres los mensajes con el SMT, ya que esto interrumpe el ajuste de escala automático de Dataflow.