En Cloud Run, puedes activar servicios en respuesta a mensajes de Pub/Sub con Eventarc. Cuando especificas un activador de Pub/Sub para tu servicio, también especificas un tema de Pub/Sub. Como resultado de este activador, se llama a tu servicio cada vez que publicas un mensaje en el tema especificado.
El repositorio de eventos de Google incluye recursos adicionales para trabajar con datos de eventos.
Antes de comenzar
Asegúrate de haber configurado un proyecto nuevo para Cloud Run, como se describe en la página de configuración.
Habilita las APIs de Artifact Registry, Cloud Build, Cloud Run Admin, Eventarc, Cloud Logging y Pub/Sub:
Roles necesarios para la cuenta del implementador
Para obtener los permisos que necesitas para activar eventos de Pub/Sub, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
- Editor de Cloud Build (
roles/cloudbuild.builds.editor) - Administrador de Cloud Run (
roles/run.admin) - Administrador de Eventarc (
roles/eventarc.admin) - Descriptor de acceso de vista de registros (
roles/logging.viewAccessor) - Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin) - Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin) - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) - Administrador de Service Usage ()
roles/serviceusage.serviceUsageAdmin
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Ten en cuenta que, de forma predeterminada, los permisos de Cloud Build incluyen permisos para subir y descargar artefactos de Artifact Registry.
Crea un activador para servicios
Después de implementar un servicio, puedes configurar un activador con la Google Cloud consola, Google Cloud CLI o Terraform.
Console
Implementa tu servicio de Cloud Run con contenedores o desde la fuente.
En la Google Cloud consola de, ve a Cloud Run:
En la lista de servicios, haz clic en un servicio existente.
En la página de detalles del servicio, navega a la pestaña Activadores.
Haz clic en Agregar activador y selecciona Activador de Pub/Sub.
En el panel Activador de Eventarc, modifica los detalles del activador de la siguiente manera:
En el campo Nombre del activador , ingresa un nombre para el activador o usa el nombre predeterminado.
Selecciona un Tipo de activador de la lista para especificar uno de los siguientes tipos de activadores:
Fuentes de Google para especificar activadores para Pub/Sub, Cloud Storage, Firestore y otros proveedores de eventos de Google.
Terceros para integrarte a proveedores externos a Google que ofrecen una fuente de Eventarc. Para obtener más información, consulta Eventos de terceros en Eventarc.
Selecciona Pub/Sub en la lista Proveedor de eventos para seleccionar un producto que proporcione el tipo de evento para activar tu servicio. Para obtener la lista de proveedores de eventos, consulta Proveedores y destinos de eventos.
Selecciona google.cloud.pubsub.topic.v1.messagePublished en la lista Tipo de evento. La configuración del activador varía según el tipo de evento compatible. Para obtener más información, consulta Tipos de eventos.
En el campo de tema Selecciona un tema de Cloud Pub/Sub, elige un tema para que el activador lo supervise. Los mensajes que publiques en este tema activarán llamadas a tu función.
Si el campo Región está habilitado, selecciona una ubicación para el activador de Eventarc. En general, la ubicación de un activador de Eventarc debe coincidir con la ubicación del Google Cloud recurso que deseas supervisar para detectar eventos. En la mayoría de los casos, también debes implementar tu servicio en la misma región. Consulta Información sobre las ubicaciones de Eventarc para obtener más detalles sobre las ubicaciones de activadores de Eventarc.
En el campo Cuenta de servicio, selecciona una cuenta de servicio. Los activadores de Eventarc están vinculados a cuentas de servicio para usarlos como identidad cuando se invoca tu servicio. La cuenta de servicio del activador de Eventarc debe tener el permiso para invocar tu servicio. De forma predeterminada, Cloud Run usa la cuenta de servicio predeterminada de Compute Engine.
De manera opcional, especifica la ruta de URL del servicio a la que se enviará la solicitud entrante. Esta es la ruta de acceso relativa en el servicio de destino al que se deben enviar los eventos del activador. Por ejemplo:
/,/route,routeyroute/subroute.De manera opcional, para habilitar los reintentos si falla el intento de entrega, selecciona la casilla de verificación Habilitar reintento en caso de falla ; de lo contrario, el comportamiento predeterminado es un solo intento de entrega sin reintentos. Para obtener más información, consulta Reintenta eventos.
Una vez que hayas completado los campos obligatorios, haz clic en Guardar activador.
Después de crear el activador, verifica su estado. Para esto, asegúrate de que haya una marca de verificación check_circle en la pestaña Activadores.
gcloud
Implementa tu servicio de Cloud Run con contenedores o desde la fuente.
Ejecuta el siguiente comando para crear un activador que filtre y enrute eventos:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comReemplaza lo siguiente:
TRIGGER_NAME: el ID del activador o un identificador completamente calificado.LOCATION: la ubicación del activador de Eventarc. De forma alternativa, puedes establecer laeventarc/locationpropiedad; por ejemplo,gcloud config set eventarc/location us-central1.Para evitar problemas de rendimiento y residencia de datos, la ubicación debe coincidir con la ubicación del Google Cloud servicio que genera eventos. Para obtener más información, consulta Ubicaciones de Eventarc.
-
DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento. -
DESTINATION_RUN_REGION: (opcional) la ubicación de Cloud Run en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador. - La marca
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo. TOPIC_ID: el ID del tema de Pub/Sub existente. El tema debe estar en el mismo proyecto que el activador.SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio administrada por el usuario.PROJECT_ID: Es el ID del Google Cloud proyecto de.
Notas:
- De manera opcional, para especificar un solo intento de entrega de eventos sin reintentos, usa la
--max-retry-attemptsmarca. El único valor válido es1. Si omites la marca, se aplica el comportamiento de reintento estándar. Para obtener más información, consulta Reintenta eventos. - Hay otras marcas disponibles. Para obtener más información, consulta
gcloud eventarc triggers create.
Terraform
Para crear un activador de Eventarc para un servicio de Cloud Run, consulta Crea un activador con Terraform.
Crea un activador para funciones
Después de implementar una función, puedes configurar un activador con la Google Cloud consola, Google Cloud CLI o Terraform.
Console
Cuando usas la Google Cloud consola de para crear una función, también puedes agregar un activador a tu función. Sigue estos pasos para crear un activador para tu función:
En la Google Cloud consola, ve a Cloud Run:
Haz clic en Escribe una función y, luego, ingresa los detalles de la función. Para obtener más información sobre cómo configurar funciones durante la implementación, consulta Implementa funciones.
En la sección Activador, haz clic en Agregar activador.
Selecciona Activador de Pub/Sub.
En el panel Activador de Eventarc, modifica los detalles del activador de la siguiente manera:
Ingresa un nombre para el activador en el campo Nombre del activador o usa el nombre predeterminado.
Selecciona un Tipo de activador de la lista:
Fuentes de Google para especificar activadores para Pub/Sub, Cloud Storage, Firestore y otros proveedores de eventos de Google.
Terceros para integrarte a proveedores externos a Google que ofrecen una fuente de Eventarc. Para obtener más información, consulta Eventos de terceros en Eventarc.
Selecciona Pub/Sub en la lista Proveedor de eventos para seleccionar un producto que proporcione el tipo de evento para activar tu función. Para obtener la lista de proveedores de eventos, consulta Proveedores y destinos de eventos.
Selecciona google.cloud.pubsub.topic.v1.messagePublished en la lista Tipo de evento. La configuración del activador varía según el tipo de evento compatible. Para obtener más información, consulta Tipos de eventos.
En el campo de tema Selecciona un tema de Cloud Pub/Sub, elige un tema para que el activador lo supervise. Los mensajes que publiques en este tema activarán llamadas a tu función.
Si el campo Región está habilitado, selecciona una ubicación para el activador de Eventarc. En general, la ubicación de un activador de Eventarc debe coincidir con la ubicación del Google Cloud recurso que deseas supervisar para detectar eventos. En la mayoría de los casos, también debes implementar tu función en la misma región. Consulta Información sobre las ubicaciones de Eventarc para obtener más detalles sobre las ubicaciones de activadores de Eventarc.
En el campo Cuenta de servicio, selecciona una cuenta de servicio. Los activadores de Eventarc están vinculados a cuentas de servicio para usarlos como identidad cuando se invoca la función. La cuenta de servicio del activador de Eventarc debe tener el permiso para invocar tu función. De forma predeterminada, Cloud Run usa la cuenta de servicio predeterminada de Compute Engine.
De manera opcional, especifica la ruta de URL del servicio a la que se enviará la solicitud entrante. Esta es la ruta de acceso relativa en el servicio de destino al que se deben enviar los eventos del activador. Por ejemplo:
/,/route,routeyroute/subroute.De manera opcional, para habilitar los reintentos si falla el intento de entrega, selecciona la casilla de verificación Habilitar reintento en caso de falla ; de lo contrario, el comportamiento predeterminado es un solo intento de entrega sin reintentos. Para obtener más información, consulta Reintenta eventos.
Una vez que hayas completado los campos obligatorios, haz clic en Guardar activador.
Haz clic en Crear.
En la pestaña Fuente , edita el código fuente si es necesario y, luego, selecciona Guardar y volver a implementar.
gcloud
Cuando creas una función con gcloud CLI, primero debes implementarla y, luego, crear un activador. Sigue estos pasos para crear un activador para tu función:
Ejecuta el siguiente comando en el directorio que contiene el código de muestra para implementar tu función:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGIONReemplaza lo siguiente:
FUNCTION: el nombre de la función que implementas. Puedes omitir este parámetro por completo, pero se te solicitará el nombre si lo omites.FUNCTION_ENTRYPOINT: el punto de entrada a tu función en tu código fuente. Este es el código que ejecuta Cloud Run cuando se ejecuta tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente.BASE_IMAGE_ID: el entorno de imagen base para tu función. Para obtener más detalles sobre las imágenes base y los paquetes incluidos en cada imagen, consulta Imágenes base de entornos de ejecución.REGION: la Google Cloud región en la que deseas implementar tu función. Por ejemplo,europe-west1.
Ejecuta el siguiente comando para crear un activador que filtre y enrute eventos:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comReemplaza lo siguiente:
TRIGGER_NAME: el ID del activador o un identificador completamente calificado.LOCATION: la ubicación del activador de Eventarc. De forma alternativa, puedes establecer laeventarc/locationpropiedad; por ejemplo,gcloud config set eventarc/location us-central1.Para evitar problemas de rendimiento y residencia de datos, la ubicación debe coincidir con la ubicación del Google Cloud servicio que genera eventos. Para obtener más información, consulta Ubicaciones de Eventarc.
-
FUNCTION: el nombre de la función de Cloud Run implementada que recibe los eventos para el activador. -
DESTINATION_RUN_REGION: (opcional) la ubicación de Cloud Run en la que se puede encontrar la función de Cloud Run de destino. Si no se especifica, se supone que la función se encuentra en la misma región que el activador. - La marca
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo. TOPIC_ID: el ID del tema de Pub/Sub existente. El tema debe estar en el mismo proyecto que el activador.SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio administrada por el usuario.PROJECT_ID: Es el ID del Google Cloud proyecto de.
Notas:
- De manera opcional, para especificar un solo intento de entrega de eventos sin reintentos, usa la
--max-retry-attemptsmarca. El único valor válido es1. Si omites la marca, se aplica el comportamiento de reintento estándar. Para obtener más información, consulta Reintenta eventos. - Hay otras marcas disponibles. Para obtener más información, consulta
gcloud eventarc triggers create.
Terraform
Para crear un activador de Eventarc para una función de Cloud Run, consulta Crea un activador con Terraform.
Próximos pasos
- Obtén información para activar con eventos.
- Obtén información para activar servicios desde Pub/Sub.
- Obtén información para configurar reintentos.