En este documento, se describe cómo crear una suscripción de envío. Puedes usar la Google Cloud consola, Google Cloud CLI, la biblioteca cliente o la API de Pub/Sub para crear una suscripción de envío.
Antes de comenzar
- Obtén información sobre las suscripciones.
- Comprende cómo funcionan las suscripciones de envío.
Roles y permisos requeridos
Para obtener los permisos que
necesitas para crear una suscripción de envío,
pídele a tu administrador que te otorgue el
rol de IAM Editor de Pub/Sub (roles/pubsub.editor) en el 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 de envío. 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 de envío:
-
pubsub.subscriptions.createen el proyecto -
pubsub.topics.attachSubscriptionen el tema
También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.
Suscripciones entre proyectos
Si creas una suscripción en un proyecto para un tema en otro proyecto, debes tener el permiso pubsub.subscriptions.create en el proyecto en el que creas la suscripción y el permiso pubsub.topics.attachSubscription en el tema.
Propiedades de la suscripción de envío
Las suscripciones de envío admiten todas las propiedades de suscripción comunes. En las siguientes secciones, se describen las propiedades específicas de las suscripciones de envío.
Extremos
URL del extremo (obligatorio). Una dirección HTTPS de acceso público. El servidor para el extremo de envío debe tener un certificado SSL válido firmado por una autoridad certificada. El servicio Pub/Sub entrega mensajes a los extremos de envío desde la misma Google Cloud región en la que el servicio de Pub/Sub almacena los mensajes. El servicio Pub/Sub entrega mensajes de la misma Google Cloud región según el criterio del mejor esfuerzo.
Si los suscriptores usan un firewall, no pueden recibir solicitudes de envío. Para recibir solicitudes de envío, debes desactivar el firewall y verificar el token web JSON (JWT) que se usa en la solicitud. Si un suscriptor tiene un firewall, es posible que recibas un error
403 permission denied.Pub/Sub no requiere títulos de propiedad para los dominios URL de suscripción de envío. Si tu dominio recibe solicitudes POST de Pub/Sub inesperadas, puedes informar sospechas de abuso.
Autenticación
Habilitar la autenticación Cuando se habilita, los mensajes que Pub/Sub entrega al extremo de envío incluyen un encabezado de autorización para permitir que el extremo autentique la solicitud. Los mecanismos de autenticación y autorización automáticos están disponibles para los extremos del entorno estándar de App Engine y Cloud Run Functions alojados en el mismo proyecto que la suscripción.
La configuración de autenticación para una suscripción de envío autenticada consta de una cuenta de servicio administrada por el usuario y los parámetros de público que se especifican en una llamada create, patch o ModifyPushConfig. También debes otorgar un rol específico a una cuenta de servicio, como se explica en la siguiente sección.
Público. Es una cadena única, que no distingue entre mayúsculas y minúsculas y que el webhook usa para validar el público objetivo de este token en particular.
Cuenta de servicio. Pub/Sub crea automáticamente una cuenta de servicio para ti con el formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.
Requisitos previos para habilitar la autenticación
La cuenta de servicio administrada por el usuario es la cuenta de servicio asociada con la suscripción de envío. Esta cuenta se usa como la declaración email del token web JSON (JWT) generado. A continuación, se muestra una lista de requisitos para la cuenta de servicio:
Esta cuenta de servicio administrada por el usuario debe estar en el mismo proyecto que la suscripción de envío.
La principal que crea o modifica la suscripción de envío debe tener el permiso
iam.serviceAccounts.actAsen la cuenta de servicio administrada por el usuario para conectar la cuenta de servicio a la suscripción de envío. Para obtener más información, consulta Conecta cuentas de servicio a recursos.Permisos necesarios: Se debe otorgar a esta cuenta de servicio el
iam.serviceAccounts.getOpenIdTokenpermiso (incluido en elroles/iam.serviceAccountTokenCreatorrol) para permitir que Pub/Sub cree tokens JWT para la cuenta de servicio especificada para autenticar solicitudes de envío.
Separación de la carga útil
La opción Habilitar la separación de la carga útil quita todos los metadatos de los mensajes de Pub/Sub, excepto los datos del mensaje. Con la separación de la carga útil, los datos del mensaje se entregan directamente como el cuerpo HTTP.
También puedes habilitar la opción Escribir los metadatos. La opción Escribir los metadatos vuelve a agregar los metadatos del mensaje que se quitaron anteriormente al encabezado de la solicitud.
Entrega a direcciones de VPC privadas
Pub/Sub opera fuera de las redes de VPC y no puede enviar mensajes directamente a direcciones de VPC privadas. Sin embargo, puedes usar Eventarc para enrutar mensajes a servicios dentro de tu VPC. Pub/Sub puede enviar mensajes a un activador de Eventarc, que luego puede reenviarlos a un servicio dentro de tu VPC, como un servicio de Cloud Run o una ejecución de Workflows. Para obtener más información, consulta la documentación de Eventarc.
Controles del servicio de VPC
Para un proyecto protegido por los Controles del servicio de VPC, ten en cuenta las siguientes limitaciones para las suscripciones de envío:
Solo puedes crear suscripciones de envío nuevas para las que el extremo de envío esté configurado en un servicio de Cloud Run con una URL
run.apppredeterminada o una ejecución de Workflows. Los dominios personalizados no funcionan.Cuando enrutas eventos a través de Eventarc a destinos de Workflows para los que el extremo de envío está configurado en una ejecución de Workflows, solo puedes crear suscripciones de envío nuevas a través de Eventarc.
No puedes actualizar las suscripciones de envío existentes. Estas suscripciones de envío continúan funcionando, aunque no están protegidas por los Controles del servicio de VPC.
Crea una suscripción de envío
En los siguientes ejemplos, se muestra cómo crear una suscripción con entrega de envío, con la configuración predeterminada proporcionada.
De forma predeterminada, las suscripciones usan la entrega de extracción, a menos que configures explícitamente una configuración de envío, como se muestra en los siguientes ejemplos.
Console
Para crear una suscripción de envío, realiza los pasos que se indican a continuación.
- En la Google Cloud consola, ve a la página Suscripciones.
- Haz clic en Crear suscripción.
- En el campo ID de suscripción, ingresa un nombre.
Para obtener información sobre cómo asignar un nombre a una suscripción, consulta los Lineamientos para asignar un nombre a un tema o una suscripción.
- Elige o crea un tema desde el menú desplegable. La suscripción recibe mensajes del tema.
- Selecciona el Tipo de entrega como Envío.
- Especifica una URL del extremo.
- Conserva todos los demás valores predeterminados.
- Haz clic en Crear.
Desde la sección Temas también puedes crear una suscripción. Este acceso directo es útil para asociar temas a suscripciones.
- En la Google Cloud consola, ve a la página Temas.
- Haz clic en more_vert junto al tema en el que se creará una suscripción.
- En el menú contextual, selecciona Crear suscripción (Create subscription).
- Ingresa el ID de suscripción.
Para obtener información sobre cómo asignar un nombre a una suscripción, consulta los Lineamientos para asignar un nombre a un tema o una suscripción.
- Selecciona el Tipo de entrega como Envío.
- Especifica una URL del extremo.
- Conserva todos los demás valores predeterminados.
- Haz clic en Crear.
gcloud
-
En la Google Cloud consola, activa Cloud Shell.
En la parte inferior de la Google Cloud consola, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
-
Para crear una suscripción de envío, ejecuta el
gcloud pubsub subscriptions createcomando.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Reemplaza lo siguiente:
SUBSCRIPTION_ID: El nombre o ID de tu nueva suscripción de envío.TOPIC_ID: El nombre o ID de tu tema.- PUSH_ENDPOINT: La URL que se usará como extremo para esta suscripción.
Por ejemplo,
https://myproject.appspot.com/myhandler.
REST
Para crear una suscripción de envío, usa el
projects.subscriptions.create
método:
Solicitud:
La solicitud debe autenticarse con un token de acceso en el encabezado Authorization. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Cuerpo de la solicitud:
{
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
// Only needed if you are using push delivery
"pushConfig": {
"pushEndpoint": "PUSH_ENDPOINT"
}
}Aquí:
https://myproject.appspot.com/myhandler.Respuesta:
{
"name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID",
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
"pushConfig": {
"pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler",
"attributes": {
"x-goog-version": "v1"
}
},
"ackDeadlineSeconds": 10,
"messageRetentionDuration": "604800s",
"expirationPolicy": {
"ttl": "2678400s"
}
}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++ .
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#.
Go
En el siguiente ejemplo, se usa la versión principal de la biblioteca cliente de Pub/Sub para Go (v2). Si aún usas la biblioteca v1, consulta la guía de migración a la v2. Para ver una lista de ejemplos de código de la v1, consulta los ejemplos de código obsoletos.
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.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP 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 PHP .
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 Python de Pub/Sub .
Ruby
En el siguiente ejemplo, se usa la biblioteca cliente de Pub/Sub para Ruby v3. Si aún usas la biblioteca v2, consulta la guía de migración a la v3. Para ver una lista de ejemplos de código de la v2 de Ruby, consulta los ejemplos de código obsoletos.
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby 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 Ruby.
Supervisa las suscripciones de envío
Cloud Monitoring proporciona varias métricas para supervisar las suscripciones.
Para obtener una lista de todas las métricas disponibles relacionadas con Pub/Sub y sus descripciones, consulta la documentación de Monitoring para Pub/Sub.
También puedes supervisar las suscripciones desde Pub/Sub.
¿Qué sigue?
- Crea o modifica una suscripción con
gcloudcomandos. - Crea o modifica una suscripción con las APIs de REST.