Dopo aver completato un trasferimento di Storage Transfer Service, potresti voler avviare un'altra attività, gestire un errore rilevato durante un trasferimento o registrare un trasferimento. Pub/Sub fornisce una coda a cui i tuoi programmi si abbonano per ricevere i 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 ulteriori informazioni 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.
Disporre di un argomento Pub/Sub esistente a cui vuoi inviare notifiche.
Ottieni l'indirizzo email dell'account di servizio associato al progetto che contiene il bucket Storage Transfer Service.
- Concede all'account di servizio il ruolo IAM
roles.pubsub.publisher
per l'argomento Pub/Sub desiderato.
- Concede all'account di servizio il ruolo IAM
Configurazione delle 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 un 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 completato
TransferOperation.Statuses
:"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 ulteriori informazioni, consulta la specifica REST di Pub/Sub di Storage Transfer Service.
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 contenente 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 insieme 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 del TransferOperation , da NotificationConfig.EventType |
payloadFormat |
"JSON" |
Formato del messaggio, "JSON" o "NONE" . Da NotificationConfig.PayloadFormat . |
projectId |
project-3 |
ID del progetto host di 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 di payload | Descrizione |
---|---|
NONE | La notifica non include alcun payload. |
JSON | Il payload è formattato come risposta JSON, in application/json. |
Configurazioni di notifiche 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 per 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 su tutti i trasferimenti completati, indipendentemente dallo stato, invia un messaggio 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 attivatore Pub/Sub abbinata a una funzione Cloud in background. Per ulteriori informazioni, 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
- Metadati delle registrazioni in Spanner
Garanzie di consegna
Storage Transfer Service invia notifiche per qualsiasi TransferOperations
avviato
dopo aver aggiunto una configurazione di notifica e garantisce l'invio almeno una volta
a Pub/Sub. Pub/Sub offre inoltre la consegna "almeno una volta" 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 vengono ricevute da Pub/Sub.
Se una notifica non può essere inviata in modo coerente a un argomento Pub/Sub, Storage Transfer Service potrebbe eliminarla dopo 7 giorni. L'errore di caricamento può verificarsi quando l'argomento Pub/Sub non esiste più, quando Storage Transfer Service non ha più l'autorizzazione a pubblicare nell'argomento o quando il progetto proprietario dell'argomento supera la quota di pubblicazione.