En este documento, se describe cómo crear una suscripción de envío. Puedes usar la la consola de Google Cloud, la Google Cloud CLI, la biblioteca cliente o la La API de Pub/Sub para crear una suscripción de envío.
Antes de comenzar
- Obtén más información sobre las suscripciones.
- Comprende cómo funcionan las suscripciones push.
Funciones y permisos requeridos
Para crear una suscripción, debes configurar el control de acceso en a nivel de proyecto. También necesitas permisos a nivel de recursos si tus suscripciones y los temas están en proyectos diferentes, como lo analizamos más adelante en esta sección.
A fin de obtener los permisos que necesitas para crear suscripciones de envío,
solicita a tu administrador que te otorgue el
Rol de IAM de 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 suscripciones 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 suscripciones push:
-
Crea una suscripción:
pubsub.subscriptions.create
-
Borra una suscripción:
pubsub.subscriptions.delete
-
Obtén una suscripción:
pubsub.subscriptions.get
-
Muestra una suscripción:
pubsub.subscriptions.list
-
Actualiza una suscripción:
pubsub.subscriptions.update
-
Adjunta una suscripción a un tema:
pubsub.topics.attachSubscription
-
Obtén la política de IAM de una suscripción:
pubsub.subscriptions.getIamPolicy
-
Configura la política de IAM para una suscripción:
pubsub.subscriptions.setIamPolicy
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Si necesitas crear listas
suscripciones en un proyecto que están asociadas con un tema de otro
solicita a tu administrador de temas que también te otorgue el Editor de Pub/Sub
(roles/pubsub.editor)
rol de IAM en el tema.
Propiedades de suscripción de envío
Cuando configuras una suscripción de envío, puedes especificar lo siguiente propiedades.
Propiedades comunes
Obtén más información sobre las propiedades de suscripción comunes que puedes configurar en todas las suscripciones.
Extremos
URL del extremo (obligatoria). Una dirección HTTPS de acceso público. El servidor para el envío debe tener un certificado SSL válido firmado por una autoridad certificadora. El servicio Pub/Sub entrega mensajes a los extremos de envío desde la misma región de Google Cloud en la que el servicio de Pub/Sub almacena los mensajes. El servicio Pub/Sub entrega mensajes de la misma región de Google Cloud según el criterio del mejor esfuerzo.
Pub/Sub ya 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
Habilita la autenticación. Cuando se habilita, los mensajes entregados por Pub/Sub al extremo de envío incluyen un encabezado de autorización al permitir que el extremo autentique la solicitud. La autenticación automática y Hay mecanismos de autorización disponibles para los extremos de las funciones de App Engine Standard y Cloud Run alojados en el mismo proyecto que la suscripción.
La configuración de autenticación de una suscripción de envío autenticada consta de una cuenta de servicio administrada por el usuario, y los parámetros del público se especifican en un create, parche o ModifyPushConfig llamada. También debes otorgar un rol específico a un agente de servicio, como se explica en la siguiente sección.
Cuenta de servicio administrada por el usuario (obligatorio). La cuenta de servicio asociada con la suscripción de envío. Esta cuenta se usa como la reclamación
email
del token web JSON (JWT) generado. A continuación, se incluye una lista de los requisitos de la cuenta de servicio:Esta cuenta de servicio 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.actAs
en la cuenta de servicio Puedes otorgar un rol con este permiso en el proyecto, la carpeta o una organización para permitir la para robar la identidad de varias cuentas de servicio, o bien otorgar un rol con este permiso en el servicio cuenta para permitir que la persona que llama hacerse pasar por esta cuenta de servicio.
Público. Una única cadena que no distingue mayúsculas de minúsculas que usa para validar el público objetivo de este token en particular.
Agente de servicio (obligatorio).
Pub/Sub crea automáticamente una cuenta de servicio para ti con el formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Se debe otorgar a este agente de servicio el permiso
iam.serviceAccounts.getOpenIdToken
(incluido en el rolroles/iam.serviceAccountTokenCreator
) para permitir que Pub/Sub cree tokens JWT para solicitudes push autenticadas.
Separación de la carga útil
La opción Habilitar la separación de la carga útil quita Pub/Sub mensajes de todos los metadatos de mensajes, excepto los datos de mensajes. Con carga útil la separación, los datos del mensaje se entregan directamente como el cuerpo HTTP.
- Escribe metadatos. Vuelve a agregar los metadatos de los mensajes que se quitaron anteriormente al encabezado de la solicitud.
Controles del servicio de VPC
Para un proyecto protegido por 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 se haya configurado el extremo configurado en un servicio de Cloud Run con una URL
run.app
predeterminada o una Ejecución de Workflows. Los dominios personalizados no funcionan.Cuando enrutas eventos a través de Eventarc a Workflows destinos para los que el extremo de envío se configura como Workflows solo puedes crear nuevas suscripciones de envío con Eventarc.
No puedes actualizar las suscripciones push existentes. Estas suscripciones de envío seguirán funcionando, aunque no estén protegidos 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 envío con la configuración predeterminada proporcionada.
De forma predeterminada, las suscripciones usan la entrega de extracción, a menos que establezcas explícitamente una configuración de envío, como se muestra en los siguientes ejemplos.
Console
Para crear una suscripción de envío, completa los siguientes pasos:
- En la consola de Google Cloud, ve a la página Suscripciones.
- Haz clic en Crear suscripción.
- En el campo ID de la 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 de 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 consola de Google Cloud, 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 Envío como el Tipo de entrega.
- Especifica una URL de extremo.
- Conserva todos los demás valores predeterminados.
- 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.
-
Para crear una suscripción de envío, ejecuta el comando
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Reemplaza lo siguiente:
SUBSCRIPTION_ID
: Es el nombre o ID del envío nuevo. suscripción.TOPIC_ID
: Es el nombre o el ID de tu tema.- PUSH_ENDPOINT: Es la URL que se usará como extremo de 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# que se encuentran en el Guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de C# de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de Go de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de Java de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
Node.js
Node.js
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que se encuentran en el Guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de PHP de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python que se encuentran en el Guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de Python de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la API de Ruby de Pub/Sub documentación de referencia.
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 bibliotecas cliente.
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?
- Crear o modificar una suscripción con los comandos de
gcloud
- Crea o modifica una suscripción con las APIs de REST.