Activadores de Cloud Storage (1.ª gen.)

En las funciones de Cloud Run, un activador de Cloud Storage permite que se llame a una función en respuesta a los cambios en Cloud Storage. Cuando especificas un activador de Cloud Storage para una función, eliges un tipo de evento y especificas un segmento de Cloud Storage. Se llamará a tu función cada vez que se produzca un cambio en un objeto (archivo) del contenedor especificado.

.

Se admiten los siguientes tipos de eventos de Cloud Storage:

Evento Tipo de evento Descripción
Objeto finalizado
  • google.storage.object.finalize
Se produce cuando se crea un objeto o se sobrescribe un objeto y se crea una nueva generación de ese objeto.
Objeto eliminado
  • google.storage.object.delete
Se produce cuando se elimina un objeto de forma no definitiva. Para obtener más información, consulta Eliminación lógica.
Objeto archivado
  • google.storage.object.archive
Se produce cuando una versión activa de un objeto se convierte en una versión no actual. Para obtener más información, consulta Gestión de versiones de objetos.
Metadatos de objeto actualizados
  • google.storage.object.metadataUpdate
Se produce cuando cambian los metadatos de un objeto.

Para que una función use un activador de Cloud Storage, debe implementarse como una función basada en eventos:

El repositorio Eventos de Google contiene recursos adicionales para trabajar con datos de eventos.

Implementación

Puedes especificar un activador de Cloud Storage al desplegar una función. Consulta Desplegar una función de Cloud Run para obtener instrucciones generales sobre cómo desplegar una función. Para obtener información adicional específica sobre cómo configurar activadores de Cloud Storage durante el despliegue, consulta lo siguiente.

gcloud

Si despliega con la CLI de gcloud, puede usar el tipo de evento Object finalized (Objeto finalizado) de Cloud Storage con las siguientes marcas:

gcloud functions deploy YOUR_FUNCTION_NAME \
--no-gen2 \
--trigger-bucket=YOUR_STORAGE_BUCKET \
[--retry] \
...
  • La marca --trigger-bucket especifica el segmento de Cloud Storage que monitorizará el activador. Los eventos Object finalized de este segmento activarán llamadas a tu función.
  • La marca --retry controla si se vuelve a intentar automáticamente las llamadas de función fallidas. Para obtener más información, consulta Reintentar funciones basadas en eventos.

Para usar tipos de eventos distintos de Object finalized, usa las siguientes marcas:

  gcloud functions deploy YOUR_FUNCTION_NAME 
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...

Eventos antiguos de Cloud Storage

Las funciones antiguas de Cloud Run Functions (1.ª gen.) usan notificaciones de cambios de objetos antiguas para los activadores de Cloud Storage:

gcloud functions deploy YOUR_FUNCTION_NAME \
--no-gen2 \
--trigger-event=providers/cloud.storage/eventTypes/object.change \
--trigger-resource=YOUR_STORAGE_BUCKET \
...

Este tipo de evento se admite en las funciones antiguas que ya consumen estos eventos. Sin embargo, no recomendamos usar este tipo de evento, ya que podría retirarse en el futuro.

Consola

Si despliega con la consola Google Cloud , puede configurar un activador de Cloud Storage en la sección Activador:

  1. En el campo Tipo de activador, selecciona Cloud Storage.
  2. En el campo Tipo de evento, seleccione un tipo de evento.
  3. En el campo Segmento, haz clic en Examinar para seleccionar un segmento de Cloud Storage que monitorizar con el activador. Los cambios en los objetos de este contenedor activarán llamadas a tu función.
  4. Marca o desmarca la casilla Volver a intentar si falla para controlar si las llamadas a funciones fallidas se vuelven a intentar automáticamente. Para obtener más información, consulta Volver a intentar funciones basadas en eventos.

Entrega de eventos

Los activadores de Cloud Storage se implementan con notificaciones de Pub/Sub para Cloud Storage. Los eventos están sujetos a las garantías de entrega de notificaciones de Pub/Sub.

Un segmento de Cloud Storage puede tener un máximo de 10 configuraciones de notificaciones que se activen con un evento concreto. Si se superan los límites de notificaciones del contenedor, se producirá un error en las implementaciones de funciones posteriores, como el siguiente:

Cloud Storage bucket ...: Pub/Sub notification limit reached

Para solucionar este problema, puedes gestionar tu propio tema de Pub/Sub y registrarlo para recibir notificaciones de Cloud Storage del tipo al que quieras que responda tu función. Por ejemplo, puede configurar una sola notificación para el evento que elija (como la creación de un objeto) en un tema de Pub/Sub. A continuación, haz que tantos suscriptores de funciones como sean necesarios para el tema procesen el evento y lo distribuyan a varios destinos. Por ejemplo:

  1. Crea tu propio tema de Pub/Sub.
  2. Crea una sola configuración de notificación en tu segmento de Cloud Storage que se active con un evento específico (como OBJECT_FINALIZE para la creación de objetos) y envíe el evento a tu único tema de Pub/Sub.
  3. Crea una o varias funciones activadas por tu tema de Pub/Sub.

Consulta las cuotas y los límites de Cloud Storage para obtener más información sobre las limitaciones de Cloud Storage.

Pasos siguientes