Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades con Pub/Sub.
No se puede crear un tema
Verifica que tengas los permisos necesarios.
Para crear un tema de Pub/Sub, necesitas el rol de Identity and Access Management de editor de Pub/Sub (roles/pubsub.editor
) en el proyecto. Si no tienes este rol, comunícate con tu administrador.
Para obtener más información sobre la solución de problemas relacionados con los temas, consulta las siguientes páginas:
No se puede crear una suscripción
Comprueba si completaste estos pasos:
Verifica que tengas los permisos necesarios. Para crear una suscripción a Pub/Sub, necesitas el rol de IAM de editor de Pub/Sub (roles/pubsub.editor) en el proyecto. Si no tienes este rol, comunícate con tu administrador.
Especificaste un nombre para la suscripción.
Especificaste el nombre de un tema existente al que deseas adjuntar la suscripción.
Si creaste una suscripción push, especificaste
https://
en minúsculas (nihttp://
niHTTPS://
) como protocolo para tu URL de recepción en el campopushEndpoint
.
Para obtener más información sobre la solución de problemas relacionados con las suscripciones, consulta las siguientes páginas:
Solución de problemas de extracción, inserción, BigQuery o Cloud Storage
Soluciona problemas de permisos
Los permisos de Pub/Sub controlan qué usuarios y cuentas de servicio pueden realizar acciones en tus recursos de Pub/Sub. Cuando los permisos están mal configurados, pueden generar errores de permiso denegado y perturbar el flujo de mensajes. Los registros de auditoría proporcionan un registro detallado de todos los cambios de permisos, lo que te permite identificar el origen de estos problemas.
Para solucionar problemas de permisos de Pub/Sub con registros de auditoría, haz lo siguiente:
Obtén los permisos necesarios para ver el Explorador de registros.
Para obtener más información, consulta Antes de comenzar.
En la Google Cloud consola, ve a la página Explorador de registros.
Selecciona un Google Cloud proyecto, una carpeta o una organización existentes.
A continuación, se incluye una lista de filtros que puedes usar para encontrar registros relevantes:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: Usa esta consulta como punto de partida cuando soluciones problemas relacionados con cambios en la configuración de temas o suscripciones, o bien con el control de acceso. Puedes combinarlo con otros filtros para definir mejor tu búsqueda.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: Usa esta consulta cuando sospeches que un problema se debe a permisos incorrectos o faltantes. Te ayuda a hacer un seguimiento de quién realizó cambios en la política de IAM y cuáles fueron esos cambios. Esto puede ser útil para solucionar problemas, como usuarios que no pueden publicar en temas o suscribirse a suscripciones, aplicaciones a las que se les deniega el acceso a recursos de Pub/Sub o cambios inesperados en el control de acceso.protoPayload.status.code=7
: Usa esta búsqueda cuando encuentres errores relacionados explícitamente con los permisos. Esto te ayuda a identificar qué acciones fallan y quiénes las intentan. Puedes combinar esta consulta con las anteriores para identificar el recurso específico y el cambio en la política de IAM que podrían estar causando la denegación del permiso.
Analiza los registros para determinar factores como la marca de tiempo del evento, la principal que realizó el cambio y el tipo de cambios que se realizaron.
Según la información recopilada de los registros de auditoría, puedes tomar medidas correctivas.
Se borró la suscripción
Las suscripciones a Pub/Sub se pueden borrar de dos maneras principales:
Un usuario o una cuenta de servicio con permisos suficientes borra intencionalmente la suscripción.
Las suscripciones se borran automáticamente después de un período de inactividad, que es de 31 días de forma predeterminada. Para obtener más información sobre la política de vencimiento de suscripciones, consulta Período de vencimiento.
Para solucionar problemas relacionados con una suscripción borrada, sigue estos pasos:
En la consola de Google Cloud , ve a la página Suscripciones de Pub/Sub y verifica que la suscripción ya no aparezca en la lista. Para obtener más información sobre cómo mostrar suscripciones, consulta Cómo mostrar una suscripción.
Verifica los registros de auditoría. Navega al Explorador de registros. Usa el filtro
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
para encontrar las suscripciones borradas. Examina los registros para determinar si alguien borró la suscripción o si se borró por inactividad.InternalExpireInactiveSubscription
indica que se borró una suscripción por inactividad. Si deseas obtener más información para usar los registros de auditoría en la solución de problemas, consulta Soluciona problemas de Pub/Sub con registros de auditoría.
403 (Forbidden)
error
Por lo general, un error 403 significa que no tienes los permisos correctos para realizar una acción. Por ejemplo, es posible que recibas un error 403 User not authorized
cuando intentes publicar en un tema o extraer de una suscripción.
Si recibes este error, haz lo siguiente:
- Asegúrate de que habilitaste la API de Pub/Sub en la consola deGoogle Cloud .
Asegúrate de que la cuenta principal que realiza la solicitud tenga los permisos necesarios en los recursos relevantes de la API de Pub/Sub, en especial, si usas la API de Pub/Sub para la comunicación entre proyectos.
Si usas Dataflow, asegúrate de que
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
y la cuenta de servicio de Compute Engine{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
tengan los permisos necesarios en el recurso de la API de Pub/Sub pertinente. Para obtener más información, consulta Seguridad y permisos de Dataflow.Si usas App Engine, revisa la página de permisos de tu proyecto para ver si alguna cuenta de servicio de App Engine aparece como editor de Pub/Sub. Si no es así, agrega tu cuenta de servicio de App Engine como editor de Pub/Sub. Por lo general, la cuenta de servicio de App Engine tiene el formato
<project-id>@appspot.gserviceaccount.com
.Puedes usar los registros de auditoría para solucionar problemas de permisos.
Otros códigos de error comunes
Para ver una lista de otros códigos de error comunes relacionados con la API de Pub/Sub y sus descripciones, consulta Códigos de error.
Uso de operaciones administrativas excesivas
Si descubres que consumes demasiado tu cuota para operaciones administrativas, es posible que debas reestructurar el código. A modo de ilustración, considera este seudocódigo. En este ejemplo, se usa una operación administrativa (GET
) para verificar la presencia de una suscripción antes de que intente consumir sus recursos. GET
y CREATE
son operaciones de administrador:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Una opción más eficaz es intentar consumir los mensajes de la suscripción (siempre que puedas estar seguro del nombre de la suscripción). Con este enfoque optimista, solo obtienes o creas la suscripción si hay un error. Considera el siguiente ejemplo:
try {
Consume from subscription my-sub
} catch NotFoundError {
CreateSubscription my-sub
Consume from subscription my-sub
}
Puedes usar las siguientes muestras de código para implementar este patrón en el lenguaje que elijas:
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.
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.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js 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 Node.js.
Node.ts
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js 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 Node.js.
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.
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ 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 C++.