Utilizzare la replica tra bucket

Questa pagina fornisce una panoramica della replica tra bucket e istruzioni su come utilizzare la funzionalità.

Panoramica della replica tra bucket

In alcuni casi, potresti voler copiare i dati da un bucket Cloud Storage a un altro. Copie della replica tra bucket oggetti nuovi e aggiornati in modo asincrono da un bucket di origine a una destinazione di sincronizzare la directory di una VM con un bucket.

La replica tra bucket è diversa dalla replica predefinita e dalla replica turbo in quanto i dati esistono in due bucket, ciascuno con le proprie configurazioni, come posizione di archiviazione, crittografia, accesso e classe di archiviazione. Di conseguenza, offre recupero e disponibilità dei dati, ma è adatto anche a:

  • Sovranità dei dati: mantieni i dati in regioni geograficamente distanti.
  • Mantieni versioni di sviluppo e di produzione separate: crea bucket e spazi dei nomi distinti in modo che lo sviluppo non influisca sul carico di lavoro di produzione.
  • Condividi i dati: replica i dati in un bucket di proprietà di un fornitore o partner.
  • Aggregazione dei dati: combina i dati di diversi bucket in un unico per eseguire carichi di lavoro di analisi.
  • Gestisci costi, sicurezza e conformità: gestisci i tuoi dati in base a proprietà, classi di archiviazione e periodi di conservazione diversi.

La replica tra bucket utilizza Storage Transfer Service per replicare gli oggetti e Pub/Sub per ricevere avvisi sulle modifiche ai bucket di origine e di destinazione. La replica tra bucket può essere abilitata sui nuovi bucket che crei sui bucket esistenti. La maggior parte degli oggetti può essere replicata nell'ordine di alcuni minuti, mentre gli oggetti di dimensioni superiori a 1 GB possono richiedere diverse ore.

Prima di iniziare

Prima di iniziare, completa i seguenti passaggi.

Abilita l'API Storage Transfer Service

Se non lo hai già fatto, abilita l'API Storage Transfer Service.

Ottenere i ruoli richiesti

Per ottenere le autorizzazioni necessarie per utilizzare la replica tra bucket, chiedi all'amministratore di concederti Ruolo IAM Storage Transfer User (roles/storagetransfer.user) nel bucket o nel progetto.

Questo ruolo predefinito contiene le autorizzazioni necessarie per utilizzare la replica tra bucket. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per utilizzare la replica tra bucket sono necessarie le seguenti autorizzazioni:

  • storagetransfer.jobs.create
  • storagetransfer.jobs.delete
  • storagetransfer.jobs.get
  • storagetransfer.jobs.list
  • storagetransfer.jobs.run
  • storagetransfer.jobs.update

Per istruzioni su come concedere i ruoli ai bucket, consulta Utilizzare IAM con i bucket. Per istruzioni su come concedere i ruoli nei progetti, consulta Gestire l'accesso ai progetti.

Concedi i ruoli richiesti

La replica tra bucket utilizza Pub/Sub per ricevere notifiche delle modifiche al bucket di origine e Storage Transfer Service per replicare gli oggetti dal bucket di origine al bucket di destinazione. Per utilizzare tra bucket, devi anche concedere le autorizzazioni richieste agente di servizio utilizzato da Storage Transfer Service per replicare i dati e il servizio usato da Pub/Sub per scrivere notifiche.

Concedi i ruoli richiesti all'agente di servizio Storage Transfer

Storage Transfer Service utilizza un agente di servizio gestito da Google per replicare i dati. La l'indirizzo email di questo agente di servizio segue il formato di denominazione project-PROJECT_NUMBER@storage-transfer-service.. Puoi ottenere l'indirizzo email dell'agente di servizio Storage Transfer Service utilizzando l'API Storage Transfer Service googleServiceAccounts.get.

L'agente di servizio Storage Transfer Service ha bisogno delle seguenti autorizzazioni per la replica gli oggetti e configurare le notifiche Pub/Sub per il bucket di origine:

Autorizzazioni obbligatorie

  • storage.buckets.get sul bucket di origine e di destinazione
  • storage.buckets.update nel bucket di origine
  • storage.objects.list sul bucket di origine
  • storage.objects.get sul bucket di origine
  • storage.objects.rewrite nel bucket di destinazione
  • pubsub.topics.create nel progetto

Queste autorizzazioni possono essere concesse tramite il ruolo Editor Pub/Sub (roles/pubsub.editor) e il ruolo Amministratore Storage (roles/storage.admin). Per un ruolo meno permissivo rispetto al ruolo Storage Admin, puoi anche utilizzare un ruolo personalizzato.

Concedi i ruoli richiesti all'agente di servizio Cloud Storage

Cloud Storage utilizza un agente di servizio gestito da Google per gestire Notifiche Pub/Sub. L'indirizzo email di questo agente di servizio segue il formato di denominazione service-PROJECT_NUMBER@gs-project-accounts..

L'agente di servizio Cloud Storage necessita delle seguenti autorizzazioni per configura Pub/Sub e pubblica messaggi in un argomento:

Autorizzazioni obbligatorie

  • pubsub.topics.publish nell'argomento Pub/Sub
  • pubsub.subscriptions.consume nell'argomento Pub/Sub
  • pubsub.subscriptions.create sul progetto

Queste autorizzazioni possono essere concesse tramite il publisher Pub/Sub (roles/pubsub.publisher).

Crea un job di replica

Console

Per istruzioni sulla console Google Cloud su come creare un job di replica, Consulta Creare un job di replica utilizzando la console Google Cloud.

Riga di comando

Quando utilizzi Google Cloud CLI, puoi creare un job di replica per nei bucket esistenti.

Per creare un job di replica, utilizza il metodo Comando gcloud alpha transfer jobs create con --replication Segnala:

gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication

Sostituisci:

  • SOURCE_BUCKET_NAME con il nome del bucket di origine da replicare. Ad esempio, my-source-bucket.

  • DESTINATION_BUCKET_NAME con il nome del del bucket di destinazione. Ad esempio, my-destination-bucket.

API REST

API JSON

Quando utilizzi l'API JSON, puoi creare un job di replica per i bucket esistenti.

  1. Avere gcloud CLI installato e inizializzato, che consente generi un token di accesso per l'intestazione Authorization.

  2. Crea un file JSON contenente un oggetto TransferJob con una risorsa ReplicationSpec inizializzata:

    TransferJob {
     "name": "TRANSFER_JOB_NAME",
     ...
     ReplicationSpec: {
       "gcsDataSource": {
         "bucketName": "SOURCE_BUCKET_NAME"
       },
       "gcsDataSink" {
         "bucketName": "DESTINATION_BUCKET_NAME"
       },
       "objectConditions": {
       },
       "transferOptions": {
         "overwriteWhen": "OVERWRITE_OPTION"
       }
     }
     ...
    }

    Sostituisci:

    • TRANSFER_JOB_NAME con il nome che vuoi per assegnare il job di replica. Consulta le Documentazione di riferimento di transferJobs per la denominazione i tuoi requisiti.

    • SOURCE_BUCKET_NAME con il nome del bucket di origine contenente gli oggetti da replicare. Ad esempio, example-source-bucket.

    • DESTINATION_BUCKET_NAME con il nome del bucket di destinazione in cui verranno replicati gli oggetti. Ad esempio, example-destination-bucket.

    • OVERWRITE_OPTION con un'opzione per le istruzioni gli oggetti esistenti nel bucket di destinazione possono essere sovrascritti risultato di un job di replica, che può verificarsi quando la destinazione e l'oggetto di origine hanno lo stesso nome. Il valore deve essere uno dei seguenti:

      • ALWAYS: sovrascrivi sempre gli oggetti nel bucket di destinazione

      • DIFFERENT: sovrascrivi gli oggetti nel bucket di destinazione solo se i dati dell'oggetto di destinazione sono diversi da quelli dell'oggetto dati oggetto

      • NEVER: non sovrascrivere mai gli oggetti nel bucket di destinazione

  3. Utilizza cURL per chiamare l'API REST di Storage Transfer Service con una richiesta transferJobs.create:

    curl -X POST --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

    Dove:

    • JSON_FILE_NAME è il nome del file JSON che hai creato nel passaggio 2.

Per controllare lo stato del job di replica, visualizza i log di Cloud Logging per Storage Transfer Service.

Elenca job di replica

Console

Per istruzioni nella console Google Cloud su come elencare i job di replica, Consulta Elencare i job di replica utilizzando la console Google Cloud.

Riga di comando

Utilizza il comando gcloud alpha transfer jobs list con il flag --job-type:

gcloud alpha transfer jobs list --job-type=replication

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, che consente generi un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST Storage Transfer Service con un Richiesta transferJobs.list:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

Visualizza un job di replica

Console

Per istruzioni sulla console Google Cloud su come visualizzare un job di replica, consulta Visualizzare un job di replica utilizzando la console Google Cloud.

Riga di comando

Utilizza il comando gcloud alpha transfer jobs describe:

gcloud alpha transfer jobs describe JOB_NAME

Sostituisci:

  • JOB_NAME con l'ID univoco del job di replica. Ad esempio, 1234567890. Per trovare l'ID del job di trasferimento, elencare i job di replica.

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, che consente generi un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST Storage Transfer Service con un Richiesta transferJobs.get:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Sostituisci:

    • JOB_NAME con l'ID univoco del di replica. Ad esempio, 1234567890. Per trovare l'ID del job di replica, elenca i job di replica.

Aggiorna un job di replica

Puoi aggiornare i seguenti campi di un job di replica:

  • La descrizione del job di replica

  • La configurazione per l'esecuzione di un job di replica

  • La configurazione delle notifiche pubblicate in Pub/Sub

  • Il comportamento di logging per le operazioni del job di replica

  • Lo stato del job di replica (se è attivato, disattivato o eliminato)

Console

Per istruzioni su come aggiornare un job di replica nella console Google Cloud, Consulta Aggiornare un job di replica utilizzando la console Google Cloud.

Riga di comando

Utilizzare il comando gcloud alpha transfer jobs update con i flag che controllano le proprietà del job di replica che vuoi aggiornare. Per un elenco di possibili flag, consulta la documentazione di gcloud alpha transfer jobs update.

Ad esempio, per aggiornare il comportamento di sovrascrittura degli oggetti del job di replica, esegui il comando gcloud alpha transfer jobs update con il flag --overwrite-when:

gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION

Sostituisci:

  • JOB_NAME con l'ID univoco del job di replica. Ad esempio, 1234567890. Per trovare l'ID del job di trasferimento, elencare o visualizzare il job di trasferimento.

  • OVERWRITE_OPTION con un'opzione per indicare come esistenti oggetti nel bucket di destinazione possono essere sovrascritti a causa di un un job di replica, che può verificarsi quando l'oggetto di destinazione e hanno lo stesso nome. Il valore deve essere uno dei seguenti:

    • always: sovrascrivi sempre gli oggetti di destinazione.

    • different: sovrascrivi solo gli oggetti nel bucket di destinazione se i dati dell'oggetto di destinazione sono diversi da quelli di origine e i dati di un oggetto.

    • never: non sovrascrivere mai gli oggetti di destinazione.

API REST

API JSON

  1. Avere installato e inizializzato l'interfaccia a riga di comando gcloud, che consente di generare un token di accesso per l'intestazione Authorization.

  2. Crea un file JSON contenente la seguente struttura che include i campi dell'oggetto TransferJob che vuoi aggiornare:

    {
     "projectId": string,
     "transferJob": {
       object (TransferJob)
     },
       "updateTransferJobFieldMask": UPDATE_MASK
    }

    Dove:

    • object (TransferJob) viene sostituito con i campi del job di replica che vuoi aggiornare. Per scoprire di più, consulta la rappresentazione della risorsa TransferJob.

    • UPDATE_MASK è un elenco separato da virgole di nomi dei campi che vuoi aggiornare. I valori possono essere uno o più dei seguenti: description, transferSpec, notificationConfig, loggingConfig, status.

    Per ulteriori informazioni sui nomi di campo che puoi includere, consulta il corpo della richiesta transferJobs.patch.

  3. Utilizza cURL per chiamare l'API REST Storage Transfer Service con un Richiesta transferJobs.patch:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Sostituisci:

    • JOB_NAME con l'ID univoco del job di replica. Ad esempio, 1234567890. Per trovare l'ID del tuo job di replica, elenca i job di replica.

Eliminare un job di replica

Console

Per istruzioni sulla console Google Cloud su come eliminare un job di replica, Consulta Eliminare un job di replica utilizzando la console Google Cloud.

Riga di comando

Utilizza il comando gcloud alpha transfer jobs delete:

gcloud alpha transfer jobs delete JOB_NAME

Sostituisci:

  • JOB_NAME con l'ID univoco del job di replica. Ad esempio, 1234567890. Per trovare l'ID del job di replica, elencare i job di replica.

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, che consente generi un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST Storage Transfer Service con un Richiesta transferJobs.delete:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Sostituisci:

    • JOB_NAME con l'ID univoco del di replica. Ad esempio, 1234567890. Per trovare l'ID del tuo job di replica, elenca i job di replica.