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 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à:

  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 notifiche.

  3. Ottieni l'indirizzo email dell'account di servizio associato al progetto che contiene il bucket Storage Transfer Service.

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

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

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.