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 si è verificato un trasferimento. Pub/Sub fornisce una coda a cui i tuoi programmi si abbonano per ricevere messaggi al completamento 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à:
Abilita l'API Pub/Sub per il progetto che riceve le notifiche Pub/Sub.
Avere 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.
- Concedi all'account di servizio il ruolo IAM
roles.pubsub.publisher
per l'argomento Pub/Sub desiderato.
- Concedi 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 Transfer Jobs di Storage Transfer Service per creare il messaggio NotificationConfig
. L'argomento riceverà notifiche sul
canale Pub/Sub configurato.
Specifica quanto segue nel tuo messaggio NotificationConfig
:
- L'argomento Pub/Sub a cui inviare notifiche
- Il formato del messaggio,
"JSON"
o"NONE"
I tipi di evento desiderati, corrispondenti al completamento di
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
: nome dell'argomento Pub/Sub
Per ulteriori informazioni, consulta la specifica REST 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, vedi PubsubMessage
.
Nome dell'attributo | Esempio | Descrizione |
---|---|---|
eventType |
TRANSFER_OPERATION_SUCCESS |
Stato di TransferOperation , dal giorno 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 |
---|---|
NESSUNA | Non è incluso nessun payload nella notifica. |
JSON | Il payload è formattato come una risposta JSON, in application/json. |
Esempi di configurazioni di notifiche Pub/Sub
Notifica solo per 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
: nome dell'argomento Pub/Sub
Notifica su tutti i trasferimenti completati
Per notificare 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
: nome dell'argomento Pub/Sub
Esecuzione di azioni arbitrarie su un trasferimento
Per eseguire un'azione arbitraria, puoi creare una notifica Pub/Sub utilizzando una funzione Cloud con un trigger Pub/Sub abbinata a una funzione Cloud Functions in background. Per ulteriori informazioni, consulta il tutorial di 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 consegna "at-least-once" a Pub/Sub. Pub/Sub offre anche 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 Pub/Sub le riceve.
Se non è sempre possibile recapitare una notifica a un argomento Pub/Sub, Storage Transfer Service potrebbe eliminarla dopo 7 giorni. Un 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.