Storage Transfer Service può ascoltare le notifiche di eventi in Google Cloud per trasferire automaticamente i dati aggiunti o aggiornati in un bucket Cloud Storage. Scopri di più sui vantaggi dei trasferimenti basati su eventi.
I trasferimenti basati su eventi da Cloud Storage utilizzano le notifiche Pub/Sub per sapere quando gli oggetti nel bucket di origine sono stati modificati o aggiunti. Le eliminazioni degli oggetti non vengono rilevate; l'eliminazione di un oggetto nell'origine non elimina l'oggetto associato nel bucket di destinazione.
I trasferimenti basati su eventi utilizzano sempre un bucket Cloud Storage come destinazione.
Configura autorizzazioni
Oltre alle
autorizzazioni richieste per tutti i job di trasferimento,
i trasferimenti basati su eventi richiedono il ruolo Pub/Sub Subscriber.
Trova il nome dell'agente di servizio Storage Transfer Service per il tuo progetto:
Vai alla pagina di riferimento
googleServiceAccounts.get.Si apre un riquadro interattivo intitolato Prova questo metodo.
Nel riquadro, in Parametri della richiesta, inserisci l'ID progetto. Il progetto che specifichi qui deve essere il progetto che utilizzi per gestire Storage Transfer Service, che potrebbe essere diverso dal progetto del bucket di origine.
Fai clic su Esegui.
L'indirizzo email dell'agente di servizio viene restituito come valore di
accountEmail. Copia questo valore.L'indirizzo email dell'agente di servizio utilizza il formato
project-PROJECT_NUMBER@storage-transfer-service..Concedi il ruolo
Pub/Sub Subscriberall'agente di servizio Storage Transfer Service.console Cloud
Segui le istruzioni riportate in Controllare l'accesso tramite la Google Cloud console per concedere il ruolo
Pub/Sub Subscriberal servizio Storage Transfer Service. Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.gcloudCLISegui le istruzioni riportate in Impostare un criterio per aggiungere il seguente binding:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service." }
Configura Pub/Sub
Assicurati di aver soddisfatto i prerequisiti per l'utilizzo di Pub/Sub con Cloud Storage.
Crea una notifica Pub/Sub per il bucket Cloud Storage di origine.
Non puoi gestire le notifiche Pub/Sub con la Google Cloud console. Utilizza invece gcloud CLI o una delle librerie client disponibili.
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
Crea una sottoscrizione pull per l'argomento. Devi creare una sottoscrizione separata per ogni job di trasferimento.
L'esempio seguente mostra il comando Google Cloud CLI per creare una sottoscrizione pull. Per le istruzioni della console e il codice della libreria client, vedi Creare una sottoscrizione pull.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Creare un job di trasferimento
Puoi utilizzare la Google Cloud console, Google Cloud CLI o l'API REST per creare un job di trasferimento basato su eventi.
Non includere informazioni sensibili come quelle che consentono l'identificazione personale (PII) o dati di sicurezza nel nome del job di trasferimento. I nomi delle risorse potrebbero essere propagati ai nomi di altre risorse Google Cloud e potrebbero essere esposti a sistemi interni di Google al di fuori del tuo progetto.
console Cloud
Vai alla pagina Crea job di trasferimento nella Google Cloud console.
Seleziona Cloud Storage come origine e destinazione.
Come Modalità di pianificazione , seleziona Basato su eventi e fai clic su Passaggio successivo.
Seleziona il bucket di origine per questo trasferimento.
Nella sezione Stream di eventi, inserisci il nome della sottoscrizione:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_IDFacoltativamente, definisci i filtri, quindi fai clic su Passaggio successivo.
Seleziona il bucket di destinazione per questo trasferimento.
Facoltativamente, inserisci un'ora di inizio e di fine per il trasferimento. Se non specifichi un'ora, il trasferimento inizierà immediatamente e verrà eseguito fino all' interruzione manuale.
Specifica le opzioni di trasferimento. Per ulteriori informazioni, consulta la pagina Crea trasferimenti.
Fai clic su Crea.
Una volta creato, il job di trasferimento inizia l'esecuzione e un listener di eventi attende le notifiche sulla sottoscrizione Pub/Sub. La pagina dei dettagli del job mostra un'operazione all'ora e include i dettagli sui dati trasferiti per ogni job.
gcloud
Per creare un job di trasferimento basato su eventi utilizzando Google Cloud CLI, utilizza il comando gcloud transfer jobs create con il flag --event-stream-name:
gcloud transfer jobs create \
gs://SOURCE_BUCKET \
gs://DESTINATION_BUCKET \
--event-stream-name=projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID \
--event-stream-starts=EVENT_STREAM_STARTS \
--event-stream-expires=EVENT_STREAM_EXPIRES
Sostituisci i segnaposto con i valori effettivi:
- SOURCE_BUCKET: il nome del bucket Cloud Storage di origine.
- DESTINATION_BUCKET: il bucket Cloud Storage di destinazione.
- PROJECT_NAME: il progetto che contiene la sottoscrizione Pub/Sub.
- SUBSCRIPTION_ID: l'ID della sottoscrizione Pub/Sub che hai creato (ad es.
my-subscription). - EVENT_STREAM_STARTS: quando iniziare ad ascoltare gli eventi
utilizzando il formato di data e ora %Y-%m-%dT%H:%M:%S%z (ad es.
2020-04-12T06:42:12+04:00). Se non è impostato, il job inizia l'esecuzione e l'ascolto degli eventi dopo l'invio riuscito del comando di creazione del job - EVENT_STREAM_EXPIRES: quando interrompere l'ascolto degli eventi. Se non è impostato, il job continua fino all'interruzione manuale.
Per un elenco completo dei campi supportati, consulta il
gcloud transfer jobs create riferimento.
REST
Per creare un trasferimento basato su eventi utilizzando l'API REST, invia il seguente oggetto JSON all'endpoint transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
eventStreamStartTime e eventStreamExpirationTime sono facoltativi.
Se l'ora di inizio viene omessa, il trasferimento inizia immediatamente; se l'ora di fine viene omessa, il trasferimento continua fino all'interruzione manuale.
Librerie client
Go
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Go.
Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell' API Java di Storage Transfer Service.
Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Node.js.
Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Python.
Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Monitorare un trasferimento basato su eventi
Quando crei un trasferimento basato su eventi, Storage Transfer Service crea un job di trasferimento. Una volta raggiunta l'ora di inizio, viene avviata un'operazione di trasferimento e un listener di eventi attende le notifiche dalla coda Pub/Sub.
L'operazione di trasferimento viene eseguita, con lo stato in progress, per circa 24 ore. Dopo 24 ore, l'operazione termina e ne inizia una nuova.
Viene creata una nuova operazione ogni 24 ore fino al raggiungimento dell'ora di fine del job di trasferimento o fino all'interruzione manuale del job.
Se è in corso un trasferimento di file quando è prevista la fine dell'operazione, l'operazione corrente rimane in corso finché il file non è stato trasferito completamente. Viene avviata una nuova operazione e le due operazioni vengono eseguite contemporaneamente fino al completamento della vecchia operazione. Gli eventi rilevati durante questo periodo vengono gestiti dalla nuova operazione.
Per visualizzare l'operazione corrente e le operazioni completate:
Google Cloud Console
Vai alla pagina Storage Transfer Service nella Google Cloud console.
Nell'elenco dei job, seleziona la scheda Tutti o Da cloud a cloud.
Fai clic sull'ID job per il trasferimento. La colonna Modalità di pianificazione identifica tutti i trasferimenti basati su eventi rispetto ai trasferimenti batch.
Seleziona la scheda Operazioni. Vengono visualizzati i dettagli dell'operazione corrente e le operazioni completate sono elencate nella tabella Cronologia delle esecuzioni. Fai clic su un'operazione completata per visualizzare ulteriori dettagli.
gcloud
Per monitorare l'avanzamento di un job in tempo reale, utilizza gcloud transfer jobs monitor. La risposta mostra l'operazione corrente, l'ora di inizio del job, la quantità di dati trasferiti, i byte ignorati e i conteggi degli errori.
gcloud transfer jobs monitor JOB_NAME
Per recuperare il nome dell'operazione corrente:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
Per elencare le operazioni correnti e completate:
gcloud transfer operations list --job-names=JOB_NAME
Per visualizzare i dettagli di un'operazione:
gcloud transfer operations describe OPERATION_NAME