Questa guida è destinata agli utenti della funzionalità Notifiche di modifica degli oggetti di Cloud Storage, di cui è stato eseguito il ritiro. Le notifiche Pub/Sub per Cloud Storage sono lo strumento consigliato per generare notifiche che tengono traccia delle modifiche apportate agli oggetti nei bucket Cloud Storage. Le notifiche Pub/Sub offrono maggiore velocità, flessibilità, facilità di configurazione e convenienza. Questa guida spiega le differenze tra le notifiche di modifica degli oggetti e le notifiche Pub/Sub per Cloud Storage e fornisce i passaggi di migrazione dalle notifiche di modifica degli oggetti alle notifiche Pub/Sub.
Panoramica delle notifiche di modifica degli oggetti
Le notifiche di modifica degli oggetti sono un meccanismo legacy in Cloud Storage per
notificare a un'applicazione le modifiche apportate agli oggetti all'interno di un bucket. Quando viene configurata una notifica di modifica degli oggetti, Cloud Storage invia richieste HTTP POST (webhook) a un URL dell'applicazione specificato ogni volta che un oggetto viene aggiunto, aggiornato o eliminato. Le notifiche di modifica degli oggetti vengono stabilite inviando una richiesta watchAll
a Cloud Storage utilizzando l'API JSON, le librerie client o il comando gsutil notification watchbucket
. Non esiste un meccanismo pull
e devi disporre di un nome di dominio accessibile pubblicamente supportato da un server HTTP
per ricevere i messaggi webhook. Per le nuove implementazioni, consigliamo di utilizzare le notifiche Pub/Sub per Cloud Storage per la loro affidabilità, scalabilità e flessibilità.
Per informazioni più dettagliate, vedi Notifica di modifica dell'oggetto.
Panoramica delle notifiche Pub/Sub
Le notifiche Pub/Sub per Cloud Storage forniscono un modo moderno, scalabile e affidabile per attivare azioni in risposta alle modifiche apportate ai bucket Cloud Storage inviando informazioni sugli eventi a un argomento Pub/Sub. Pub/Sub offre la distribuzione basata sul push dei messaggi come richieste POST HTTP ai webhook. Quando gli oggetti vengono creati, aggiornati o eliminati, Cloud Storage pubblica messaggi contenenti metadati degli oggetti in un argomento Pub/Sub specificato, che può poi essere utilizzato da vari abbonati come funzioni Cloud Run, pipeline di dati o microservizi, consentendo architetture flessibili e basate su eventi con funzionalità di gestione degli errori robuste e di distribuzione almeno una volta.
Per informazioni più dettagliate, vedi Notifiche Pub/Sub per Cloud Storage.
Confronto tra le notifiche di modifica degli oggetti e le notifiche Pub/Sub
La seguente tabella mette a confronto le notifiche di modifica degli oggetti con le funzionalità di notifica Pub/Sub:
Funzionalità | Notifiche di modifica degli oggetti | Notifiche Pub/Sub |
---|---|---|
Purpose | Notifica un'applicazione direttamente tramite richieste POST HTTP (webhook) quando gli oggetti in un bucket cambiano. | Invia a un argomento Pub/Sub informazioni sulle modifiche apportate agli oggetti nei bucket Cloud Storage. |
Meccanismo di pubblicazione | HTTP POST diretto (webhook) a un URL dell'applicazione specificato. | I messaggi pubblicati in un argomento Pub/Sub possono essere utilizzati da vari abbonati, come funzioni Cloud Run, altre applicazioni e pipeline di dati. |
Affidabilità | Tenta la consegna affidabile, ma la tempestività non è garantita. Le notifiche possono subire ritardi a tempo indeterminato. | Offre la consegna "at-least-once", il che significa che i messaggi potrebbero essere consegnati più volte, ma non vengono persi. Pub/Sub gestisce la persistenza e i nuovi tentativi dei messaggi. |
Scalabilità | Meno scalabile, in quanto si basa su webhook diretti che la tua applicazione deve gestire. | Altamente scalabile e progettato per l'elaborazione di eventi su larga scala. |
Flessibilità | Limitato all'integrazione webhook diretta. | Altamente flessibile. I messaggi Pub/Sub possono attivare funzioni Cloud Run, alimentare pipeline di dati (Dataflow) ed essere utilizzati da altri microservizi. |
Filtri | Nessuno | Opzioni di filtro avanzate disponibili a livello di sottoscrizione Pub/Sub, che consentono agli abbonati di ricevere solo i messaggi che soddisfano criteri specifici. |
Sicurezza | Richiede che l'endpoint dell'applicazione sia accessibile pubblicamente (HTTPS). | Pub/Sub offre IAM per controllo dell'accesso granulare a argomenti e sottoscrizioni. Pub/Sub contribuisce alla distribuzione sicura dei messaggi, sia che tu estragga le notifiche direttamente sia che le invii a un endpoint pubblico. |
Complessità | Può essere più semplice da configurare per i casi d'uso di base, ma la gestione della distribuzione affidabile e dello scaling può diventare complessa. | Richiede la comprensione dei concetti di Pub/Sub (argomenti, abbonamenti), ma offre una soluzione più solida e gestibile per le architetture basate su eventi. |
Stato di ritiro | Deprecato. Consigliamo di utilizzare le notifiche Pub/Sub per le nuove implementazioni. | Attivo. Questo è il metodo principale e in fase di sviluppo per le notifiche di Cloud Storage. |
Uso consigliato | Non consigliato per i nuovi progetti. Principalmente per le integrazioni legacy meno complesse che non puoi eseguire la migrazione. | Altamente consigliato per la creazione di architetture robuste, scalabili e basate su eventi che reagiscono alle modifiche di Cloud Storage. |
Perché eseguire la migrazione alle notifiche Pub/Sub?
La migrazione dalle notifiche di modifica degli oggetti legacy a Pub/Sub per le notifiche di Cloud Storage è un passo importante per una gestione robusta degli eventi. Pub/Sub è consigliato per le architetture basate su eventi all'interno di Google Cloud, in quanto offre vantaggi tecnici e operativi significativi rispetto alle notifiche di modifica degli oggetti.
Di seguito sono riportati i vantaggi della migrazione alle notifiche Pub/Sub:
- Consegna affidabile: Pub/Sub consegna ogni messaggio pubblicato almeno una volta per ogni sottoscrizione, verificando che gli eventi raggiungano i tuoi consumatori. La distribuzione affidabile riduce al minimo la perdita di dati e migliora l'affidabilità dei tuoi flussi di lavoro rispetto al modello di distribuzione meno solido delle notifiche di modifica degli oggetti.
- Scalabilità: progettate per un'elevata velocità effettiva, le notifiche Pub/Sub possono gestire automaticamente grandi volumi di eventi. Utilizzando le notifiche Pub/Sub, puoi eliminare i colli di bottiglia delle prestazioni che potresti riscontrare con le notifiche di modifica degli oggetti man mano che aumenta la frequenza di dati o eventi.
- Integrazione con i servizi Google Cloud : Pub/Sub si integra perfettamente con più servizi Google Cloud , offrendo flessibilità per la creazione di flussi di lavoro automatizzati utilizzando le funzioni Cloud Run, Cloud Run, Dataflow e una migliore osservabilità tramite Cloud Logging e Cloud Monitoring.
- Controllo granulare: con Pub/Sub puoi filtrare i messaggi a livello di abbonamento. In questo modo, i consumatori ricevono solo eventi pertinenti, riducendo l'elaborazione e il traffico di rete non necessari.
- Supporto della piattaforma: le notifiche Pub/Sub sono il servizio di messaggistica supportato. La migrazione ti consente di utilizzare una tecnologia che riceve miglioramenti continui, aggiornamenti della sicurezza e documentazione completa, a differenza delle notifiche di modifica degli oggetti ritirate.
Passi per la migrazione
Sia le notifiche di modifica degli oggetti sia le notifiche Pub/Sub per Cloud Storage possono occasionalmente inviare messaggi duplicati. Pertanto, il tuo codice di consumo deve essere progettato per gestire in modo sicuro i messaggi duplicati.
Per eseguire la migrazione dalle notifiche di modifica degli oggetti alle notifiche Pub/Sub, segui questi passaggi:
Inizia a utilizzare le notifiche Pub/Sub per Cloud Storage in aggiunta alla configurazione esistente delle notifiche di modifica degli oggetti. Per informazioni su come configurare le notifiche Pub/Sub, consulta Configurare le notifiche Pub/Sub per Cloud Storage.
Testa e verifica che il flusso di lavoro di elaborazione delle notifiche Pub/Sub della tua applicazione funzioni correttamente. Per informazioni su come monitorare la sottoscrizione Pub/Sub, consulta Monitorare le sottoscrizioni in Pub/Sub.
Interrompere l'elaborazione dei messaggi ricevuti da un canale di notifiche di modifica degli oggetti. Per interrompere un canale di notifiche, invia una richiesta di interruzione.
Considerazioni per la sottoscrizione push Pub/Sub
Sebbene le sottoscrizioni pull Pub/Sub offrano maggiore flessibilità e controllo, le sottoscrizioni push Pub/Sub assomigliano molto ai messaggi di notifica di modifica degli oggetti. Di conseguenza, gli abbonamenti push diventano un percorso di migrazione più rapido per gli utenti esistenti delle notifiche di modifica degli oggetti. Per un confronto dettagliato tra le sottoscrizioni push e pull, consulta Scegliere un tipo di sottoscrizione.
Se prevedi di utilizzare la sottoscrizione push e di riutilizzare il codice di gestione delle notifiche esistente, devi considerare le differenze tra i formati delle richieste push delle notifiche di modifica degli oggetti e delle notifiche Pub/Sub e le interpretazioni dei codici di risposta. Le differenze sono descritte nelle sezioni seguenti.
Formato della richiesta push
Questa sezione descrive le differenze di formato delle richieste push tra le notifiche di modifica degli oggetti e le notifiche Pub/Sub.
Notifiche di modifica degli oggetti: una notifica di modifica degli oggetti viene inviata come richiesta HTTP POST all'URL dell'applicazione, nel seguente formato:
POST /ApplicationUrlPath Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost X-Goog-Channel-Id: ChannelId X-Goog-Channel-Token: ClientToken X-Goog-Resource-Id: ResourceId X-Goog-Resource-State: ResourceState X-Goog-Resource-Uri: https://storage.googleapis.com/storage/v1/b/BucketName/o?alt=json { "kind": "storage#object", "id": "BucketName/ObjectName", "selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName", "name": "ObjectName", "bucket": "BucketName", "generation": "1367014943964000", "metageneration": "1", "contentType": "application/octet-stream", "updated": "2013-04-26T22:22:23.832Z", "size": "10", "md5Hash": "xHZY0QLVuYng2gnOQD90Yw==", "mediaLink": "https://content-storage.googleapis.com/storage/v1/b/BucketName/o/ObjectName?generation=1367014943964000&alt=media", "owner": { "entity": "user-jeffersonloveshiking@gmail.com" }, "crc32c": "C7+82w==", "etag": "COD2jMGv6bYCEAE=" }
Notifiche Pub/Sub: una notifica Pub/Sub, se configurata per la distribuzione push, viene inviata come richiesta HTTP POST. Il campo
data
contiene il payload dell'evento Cloud Storage codificato in base64. Quando il campo dati viene decodificato, corrisponde al corpo del messaggio delle notifiche di modifica degli oggetti.POST /YourSpecifiedURL Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost { "deliveryAttempt": 5, "message": {"attributes": {"notificationConfig":"projects/_/buckets/foo/notificationConfigs/3", "eventType": "OBJECT_FINALIZE", "payloadFormat": "JSON_API_V1", "bucketId": "foo", "objectId": "bar", "objectGeneration": 123456, "eventTime": "2021-01-15T01:30:15.01Z" }, "data": "ewogImtpbm", "messageId": "2070443601311540", "message_id": "2070443601311540", "orderingKey": "key", "publishTime": "2021-02-26T19:13:55.749Z", "publish_time": "2021-02-26T19:13:55.749Z" }, "subscription": "projects/myproject/subscriptions/mysubscription" }
Codice di risposta
La seguente tabella descrive le differenze di interpretazione del codice di risposta tra le notifiche di modifica degli oggetti e le notifiche Pub/Sub:
Funzionalità | Codice di risposta | Interpretazione | Azione |
---|---|---|---|
Notifiche di modifica degli oggetti | |||
102 , 200 , 201 , 202 , 204
|
Operazione riuscita | Messaggio elaborato | |
500 , 502 , 503 , 504
|
Impossibile elaborare | Riprova più tardi | |
Timeout, connessioni non riuscite, nessuna risposta | Impossibile elaborare | Riprova più tardi | |
Qualsiasi altro codice HTTP. Ad esempio, 404
|
Errore permanente | Non riprovare a inviare il messaggio | |
Notifiche Pub/Sub | |||
102 , 200 , 201 , 202 , 204
|
Operazione riuscita | Messaggio confermato | |
Tutti gli altri codici di risposta, timeout ed errori di connessione | Operazione non riuscita | Riprova più tardi |
Passaggi successivi
- Configura le notifiche Pub/Sub per Cloud Storage.
- Scopri di più su Pub/Sub.
- Iscriviti a un bucket per ricevere le notifiche inviate a Pub/Sub.