Activadores de Cloud Storage (1ª gen.)
En Cloud Run Functions, 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 un bucket de Cloud Storage. Se llamará a tu función cada vez que se produzca un cambio en un objeto (archivo) dentro del bucket especificado.
Se admiten los siguientes tipos de eventos de Cloud Storage:
| Evento | Tipo de evento | Descripción |
|---|---|---|
| Objeto finalizado |
|
Ocurre cuando se crea un objeto nuevo o se reemplaza un objeto existente y se crea una generación nueva de ese objeto. |
| Eliminación de un objeto |
|
Ocurre cuando un objeto se borra de forma no definitiva. Para obtener más información, consulta Eliminación no definitiva. |
| Objeto archivado |
|
Ocurre cuando una versión publicada de un objeto se convierte en una versión no actual. Para obtener más información, consulta Control de versiones de objetos. |
| Actualización de los metadatos de un objeto |
|
Ocurre cuando cambian los metadatos de un objeto existente. |
Para que una función use un activador de Cloud Storage, debe implementarse como una función controlada por eventos:
Si usas una función de CloudEvent, los datos de eventos de Cloud Storage se pasan a tu función en el formato de CloudEvents y la carga útil de datos de CloudEvent es del tipo
StorageObjectData.Si usas una función en segundo plano, la carga útil de datos de eventos de Cloud Storage se pasa directamente a tu función en el formato
StorageObjectData.
El repositorio de Eventos de Google contiene recursos adicionales para trabajar con datos de eventos.
Implementación
Puedes especificar un activador de Cloud Storage cuando implementes una función. Consulta Implementa una Cloud Run Functions para obtener instrucciones generales sobre cómo implementar una función y, además, consulta la siguiente información adicional que está destinada específicamente a la configuración de activadores de Cloud Storage durante la implementación.
gcloud
Si implementas con la CLI de gcloud, puedes usar el tipo de evento 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-bucketespecifica el bucket de Cloud Storage que supervisará el activador. Los eventos Objeto finalizado dentro de este bucket activarán llamadas a tu función. - La marca
--retrycontrola si se reintentan las llamadas a funciones con errores. Consulta Reintenta las funciones controladas por eventos para obtener más información.
Para usar tipos de eventos que no sean Objeto finalizado, usa las siguientes marcas:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
Eventos heredados de Cloud Storage
Las funciones heredadas en Cloud Run Functions (1ª gen.) usan notificaciones de cambio de objeto heredadas 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 es compatible con funciones heredadas que ya consumen estos eventos. Sin embargo, no recomendamos usar este tipo de evento porque podría quitarse en un futuro.
Console
Si realizas una implementación con la Google Cloud consola, puedes configurar un activador de Cloud Storage en la sección Activador:
- En el campo Tipo de activador, selecciona Cloud Storage.
- En el campo Tipo de evento, selecciona un tipo de evento.
- En el campo Bucket , haz clic en Explorar para seleccionar un bucket de Cloud Storage a fin de que el activador lo supervise. Los cambios en los objetos dentro de este bucket activarán llamadas a tu función.
- Selecciona o desmarca la casilla de verificación Reintentar en caso de error para controlar si las llamadas a funciones con errores se reintentan automáticamente. Consulta Reintenta las funciones controladas por eventos para obtener más información.
Entrega de eventos
Los activadores de Cloud Storage se implementan con las notificaciones de Pub/Sub para Cloud Storage. Los eventos están sujetos a las garantías de entrega de notificaciones de Pub/Sub.
Un bucket de Cloud Storage puede tener hasta 10 configuraciones de notificación definidas para activarse con un evento específico. Si superas los límites de notificaciones del bucket, se producirá un error como el siguiente cuando se implementen más funciones:
Cloud Storage bucket ...: Pub/Sub notification limit reached
Puedes solucionar esta limitación administrando tu propio tema de Pub/Sub y registrándolo para las notificaciones de Cloud Storage del tipo al que quieres que responda tu función. Por ejemplo, puedes configurar una sola notificación para el evento que elijas (como la creación de objetos) en un tema de Pub/Sub. Luego, ten tantos suscriptores de funciones como sean necesarios para que el tema procese el evento y lo distribuya a varios destinos. Por ejemplo:
- Crea tu propio tema de Pub/Sub.
- Crea una sola configuración de notificación en tu bucket de Cloud Storage que se active con un evento específico (como
OBJECT_FINALIZEpara la creación de objetos) y envíe el evento a tu único tema de Pub/Sub. - Crea una o más funciones activadas por tu tema de Pub/Sub.
Consulta Cuotas y límites de Cloud Storage para obtener más información sobre las limitaciones de Cloud Storage.
Próximos pasos
- Obtén información sobre cómo escribir funciones controladas por eventos.
- Aprende a implementar una función de Cloud Run Functions.
- Consulta el instructivo de función de Cloud Storage para ver un ejemplo de escritura, implementación y llamada a una función con un activador de Cloud Storage.