Notifiche Pub/Sub

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:

  1. Abilita l'API Pub/Sub per il progetto che riceve le notifiche Pub/Sub.

    Abilita l'API

  2. Avere un argomento Pub/Sub esistente a cui vuoi inviare le notifiche.

  3. Recupera l'indirizzo email del service account associato al progetto che contiene il bucket Storage Transfer Service.

    1. Concedi al account di servizio il ruolo IAM roles.pubsub.publisher per l'argomento Pub/Sub desiderato.

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.Statuses completati:

    • "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 trasferimento
  • topic-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 trasferimento
  • topic-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 trasferimento
  • topic-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:

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.