Dopo aver completato un trasferimento di Storage Transfer Service, potresti voler avviare un'altra attività, gestire un errore riscontrato durante un trasferimento o registrare che è stato eseguito un trasferimento. Pub/Sub fornisce una coda a cui i tuoi programmi si iscrivono per ricevere messaggi al termine di un trasferimento. In questo modo puoi riutilizzare il codice e programmare i passaggi successivi in base allo stato di un trasferimento.
Per saperne di più su Pub/Sub, consulta Che cos'è Cloud Pub/Sub
Prerequisiti
Prima di poter utilizzare questa funzionalità, segui questi passaggi:
Abilita l'API Pub/Sub per il progetto che riceve le notifiche Pub/Sub.
Avere un argomento Pub/Sub esistente a cui vuoi inviare le notifiche.
Recupera l'indirizzo email del service account associato al progetto che contiene il bucket Storage Transfer Service.
- Concedi al account di servizio il ruolo IAM
roles.pubsub.publisherper l'argomento Pub/Sub desiderato.
- Concedi al account di servizio il ruolo IAM
Configurare le impostazioni di notifica
Per configurare le impostazioni di notifica Pub/Sub di Storage Transfer Service, utilizza l'API transferJobs di Storage Transfer Service per creare il messaggio NotificationConfig. L'argomento riceverà notifiche sul
canale Pub/Sub configurato.
Specifica quanto segue nel messaggio NotificationConfig:
- L'argomento Pub/Sub a cui inviare le notifiche
- Il formato del messaggio,
"JSON"o"NONE" I tipi di eventi desiderati, corrispondenti a
TransferOperation.Statusescompletati:"TRANSFER_OPERATION_SUCCESS""TRANSFER_OPERATION_FAILED""TRANSFER_OPERATION_ABORTED"
Di seguito è riportato un esempio di messaggio NotificationConfig:
{
...
"notificationConfig": {
"pubsubTopic": "projects/project-id/topics/topic-id",
"eventTypes": ["TRANSFER_OPERATION_SUCCESS"],
"payloadFormat": "JSON"
},
...
}
Sostituisci quanto segue:
project-id: l'ID progetto Google Cloud del trasferimentotopic-id: Il nome dell'argomento Pub/Sub
Per maggiori informazioni, consulta la specifica REST di Storage Transfer Service Pub/Sub.
Formato delle notifiche
Le notifiche inviate all'argomento Pub/Sub sono composte da due parti:
- Attributi: un set di coppie chiave:valore che descrivono l'evento.
- Payload: una stringa che contiene i metadati dell'oggetto modificato.
Attributi
Gli attributi sono coppie chiave:valore contenute in tutte le notifiche inviate da Storage Transfer Service al tuo argomento Pub/Sub. Le notifiche contengono sempre il seguente set di coppie chiave:valore, indipendentemente dal payload della notifica:
Per ulteriori informazioni sul formato dei messaggi Pub/Sub, consulta PubsubMessage.
| Nome attributo | Esempio | Descrizione |
|---|---|---|
eventType |
TRANSFER_OPERATION_SUCCESS |
Stato di TransferOperation, a partire dal giorno NotificationConfig.EventType |
payloadFormat |
"JSON" |
Formato del messaggio, "JSON" o "NONE". A partire dal giorno NotificationConfig.PayloadFormat. |
projectId |
project-3 |
ID del progetto host del trasferimento. |
transferJobName |
transferJobs/123 |
Nome del job di trasferimento. |
transferOperationName |
transferOperations/456 |
Nome dell'operazione di trasferimento. |
Payload
Il payload contiene i metadati TransferOperation. Quando crei una configurazione di notifica, specifichi un tipo di payload da includere nelle notifiche attivate da quella configurazione. Puoi specificare i seguenti tipi di payload:
| Tipo payload | Descrizione |
|---|---|
| NONE | Nessun payload è incluso nella notifica. |
| JSON | Il payload è formattato come una risposta JSON in application/json. |
Configurazioni di notifica Pub/Sub di esempio
Notifiche solo per i trasferimenti non riusciti
Per ricevere messaggi solo per i trasferimenti non riusciti, invia un TransferJob con un
NotificationConfig che filtra solo i trasferimenti non riusciti:
// REST JSON format:
// https://cloud.google.com/storage-transfer/docs/create-manage-transfer-program
{
...
"notificationConfig": {
"pubsubTopic": "projects/project-id/topics/topic-id",
"eventTypes": ["TRANSFER_OPERATION_FAILED"],
"payloadFormat: "JSON"
},
...
}
Sostituisci quanto segue:
project-id: l'ID progetto Google Cloud del trasferimentotopic-id: Il nome dell'argomento Pub/Sub
Notifica per tutti i trasferimenti completati
Per ricevere una notifica per tutti i trasferimenti completati, indipendentemente dallo stato, invia un
TransferJob con un NotificationConfig senza filtri EventType:
// REST JSON format:
// https://cloud.google.com/storage-transfer/docs/create-manage-transfer-program
{
...
"notificationConfig": {
"pubsubTopic": "projects/project-id/topics/topic-id",
"payloadFormat: "JSON"
},
...
}
Sostituisci quanto segue:
project-id: l'ID progetto Google Cloud del trasferimentotopic-id: Il nome dell'argomento Pub/Sub
Eseguire azioni arbitrarie su un trasferimento
Per eseguire un'azione arbitraria, crea una notifica Pub/Sub utilizzando una funzione Cloud con un trigger Pub/Sub accoppiata a una funzione Cloud in background. Per saperne di più, consulta il tutorial su Cloud Pub/Sub.
Esempi di azioni arbitrarie includono:
- Invio di un'email
- Avvio di un job Dataflow
- Registrazione dei metadati in Cloud SQL
- Registrazione dei metadati in Spanner
Garanzie di consegna
Storage Transfer Service invia notifiche per qualsiasi TransferOperations avviato
dopo l'aggiunta di una configurazione di notifica e garantisce la
distribuzione almeno una volta a Pub/Sub. Pub/Sub offre anche la
consegna "at-least-once" al destinatario, il che significa che potresti ricevere
più messaggi, con più ID, che rappresentano lo stesso
evento di Storage Transfer Service.
Non è garantito che le notifiche vengano pubblicate nell'ordine in cui le riceve Pub/Sub.
Se una notifica non può essere recapitata in modo coerente a un argomento Pub/Sub, Storage Transfer Service potrebbe eliminarla dopo 7 giorni. L'errore di consegna può verificarsi quando l'argomento Pub/Sub non esiste più, quando Storage Transfer Service non è più autorizzato a pubblicare nell'argomento o quando il progetto proprietario dell'argomento supera la quota di pubblicazione.