Trigger di Cloud Storage (1ª generazione.)
Nelle funzioni Cloud Run, un trigger Cloud Storage consente di chiamare una funzione in risposta alle modifiche in Cloud Storage. Quando specifichi un trigger Cloud Storage per una funzione, scegli un tipo di evento e specifica un bucket Cloud Storage. La tua funzione verrà chiamata ogni volta che si verifica una modifica a un oggetto (file) all'interno del bucket specificato.
Sono supportati i seguenti tipi di eventi Cloud Storage:
Evento | Tipo di evento | Descrizione |
---|---|---|
Oggetto finalizzato |
|
Si verifica quando viene creato un nuovo oggetto o un oggetto esistente viene sovrascritto e viene creata una nuova generazione di quell'oggetto. |
Oggetto eliminato |
|
Si verifica quando un oggetto viene eliminato definitivamente. |
Oggetto archiviato |
|
Si verifica quando una versione attiva di un oggetto diventa una versione non corrente. Per saperne di più, consulta la sezione Controllo delle versioni degli oggetti. |
Object metadata updated |
|
Si verifica quando i metadati di un oggetto esistente cambiano. |
Affinché una funzione utilizzi un trigger Cloud Storage, deve essere implementata come una funzione basata su eventi:
Se utilizzi una funzione CloudEvent, i dati degli eventi Cloud Storage vengono passati alla funzione nel formato CloudEvents e il payload dei dati CloudEvent è di tipo
StorageObjectData
.Se utilizzi una funzione in background, il payload dei dati degli eventi Cloud Storage viene passato direttamente alla tua funzione nel formato
StorageObjectData
.
Il repository Google Events contiene risorse aggiuntive per lavorare con i dati sugli eventi.
Deployment
Puoi specificare un trigger Cloud Storage quando esegui il deployment di una funzione. Consulta Eseguire il deployment di una funzione Cloud Run per istruzioni generali su come eseguire il deployment di una funzione e consulta quanto segue per informazioni aggiuntive specifiche per la configurazione dei trigger Cloud Storage durante il deployment.
gcloud
Se esegui il deployment utilizzando gcloud CLI, puoi utilizzare il tipo di evento Oggetto finalizzato di Cloud Storage con i seguenti flag:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-bucket=YOUR_STORAGE_BUCKET \ [--retry] \ ...
- Il flag
--trigger-bucket
specifica il bucket Cloud Storage che il trigger monitorerà. Gli eventi Object finalized all'interno di questo bucket attiveranno chiamate alla tua funzione. - Il flag
--retry
controlla se i tentativi di chiamata di funzione non riusciti vengono ripetuti automaticamente. Per saperne di più, consulta Nuovo tentativo di esecuzione delle funzioni basate su eventi.
Per utilizzare tipi di eventi diversi da Oggetto finalizzato, utilizza i seguenti flag:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
Eventi legacy di Cloud Storage
Le funzioni legacy in Cloud Run Functions (1ª generazione.) utilizzano le notifiche di modifica degli oggetti legacy per i trigger Cloud Storage:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-event=providers/cloud.storage/eventTypes/object.change \ --trigger-resource=YOUR_STORAGE_BUCKET \ ...
Questo tipo di evento è supportato per le funzioni legacy che consumano già questi eventi. Tuttavia, non consigliamo di utilizzare questo tipo di evento perché potrebbe essere rimosso in futuro.
Console
Se esegui il deployment utilizzando la Google Cloud console, puoi configurare un trigger Cloud Storage nella sezione Trigger:
- Nel campo Tipo di trigger, seleziona Cloud Storage.
- Nel campo Tipo di evento, seleziona un tipo di evento.
- Nel campo Bucket, fai clic su Sfoglia per selezionare un bucket Cloud Storage da monitorare per il trigger. Le modifiche agli oggetti all'interno di questo bucket attiveranno chiamate alla tua funzione.
- Seleziona o deseleziona la casella di controllo Riprova in caso di errore per controllare se le chiamate di funzioni non riuscite vengono ritentate automaticamente. Per saperne di più, consulta Nuovo tentativo per le funzioni basate su eventi.
Distribuzione di eventi
I trigger Cloud Storage vengono implementati con le notifiche Pub/Sub per Cloud Storage. Gli eventi sono soggetti alle garanzie di distribuzione delle notifiche Pub/Sub.
Un bucket Cloud Storage può avere fino a 10 configurazioni di notifica impostate per attivare un evento specifico. Il superamento dei limiti delle notifiche del bucket causerà l'esito negativo di ulteriori deployment di funzioni con un errore simile al seguente:
Cloud Storage bucket ...: Pub/Sub notification limit reached
Puoi aggirare questa limitazione gestendo il tuo argomento Pub/Sub e registrandolo per le notifiche Cloud Storage del tipo a cui vuoi che la tua funzione risponda. Ad esempio, puoi configurare una singola notifica per l'evento scelto (ad esempio la creazione di oggetti) in un argomento Pub/Sub. Quindi, aggiungi tutti gli abbonati alla funzione necessari all'argomento per elaborare l'evento e distribuirlo a più destinazioni. Ad esempio:
- Crea il tuo argomento Pub/Sub.
- Crea una singola configurazione di notifica nel bucket Cloud Storage
che si attiva in base a un evento specifico (ad esempio
OBJECT_FINALIZE
per la creazione di oggetti) e invia l'evento al tuo singolo argomento Pub/Sub. - Crea una o più funzioni attivate dall'argomento Pub/Sub.
Consulta Quote e limiti di Cloud Storage per saperne di più sulle limitazioni di Cloud Storage.
Passaggi successivi
- Scopri come scrivere funzioni basate sugli eventi.
- Scopri come eseguire il deployment di una funzione Cloud Run.
- Consulta il tutorial sulla funzione Cloud Storage per un esempio di scrittura, deployment e chiamata di una funzione con un trigger Cloud Storage.