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. La replica tra bucket copia gli oggetti nuovi e aggiornati in modo asincrono da un bucket di origine a un bucket di destinazione.

La replica tra bucket è diversa dalla replica predefinita e dalla replica turbo in quanto i dati esistono in due bucket, ognuno con le proprie configurazioni, ad esempio 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 produzione separate: crea bucket e spazi dei nomi distinti, in modo che lo sviluppo non influisca sul tuo workload di produzione.
  • Condividi dati: replica i dati in un bucket di proprietà di un fornitore o partner.
  • Aggregazione dei dati: combina i dati di bucket diversi in un unico bucket per eseguire carichi di lavoro di analisi.
  • Gestisci costi, sicurezza e conformità: mantieni i tuoi dati sotto diverse proprietà, classi di archiviazione e periodi di conservazione.

La replica tra bucket utilizza Storage Transfer Service per replicare gli oggetti e Pub/Sub per ricevere avvisi relativi alle modifiche ai bucket di origine e di destinazione. La replica tra bucket può essere abilitata sui nuovi bucket che crei e su quelli esistenti. La maggior parte degli oggetti può essere replicata in pochi minuti, mentre gli oggetti più grandi di 1 GB possono richiedere diverse ore.

Limitazioni

  • La replica tra bucket non è supportata per i bucket con spazi dei nomi gerarchici.

Prima di iniziare

Prima di iniziare, completa i seguenti passaggi.

Abilita l'API Storage Transfer Service

Se non l'hai ancora 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 il ruolo IAM Utente Storage Transfer (roles/storagetransfer.user) sul bucket o sul progetto di origine.

Questo ruolo predefinito contiene le autorizzazioni necessarie per utilizzare la replica tra bucket. Per vedere quali sono esattamente le autorizzazioni richieste, 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 sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket. Per istruzioni sulla concessione dei ruoli nei progetti, vedi Gestire l'accesso ai progetti.

Concedere i ruoli richiesti

La replica tra bucket utilizza Storage Transfer Service per replicare gli oggetti dal bucket di origine al bucket di destinazione e Pub/Sub per ricevere notifiche relative alle modifiche apportate al bucket di origine.

Affinché la replica tra bucket possa utilizzare questi servizi, devi concedere le autorizzazioni richieste all'account di servizio utilizzato da Storage Transfer Service per replicare i dati, nonché all'agente di servizio utilizzato da Pub/Sub per scrivere le notifiche.

Concedi i ruoli richiesti per Storage Transfer Service

Le autorizzazioni richieste per replicare i dati utilizzando Storage Transfer Service possono essere concesse a uno dei due service account:

  • L'agente di servizio Storage Transfer Service, creato e gestito automaticamente da Google. L'indirizzo email di questo agente di servizio segue il formato di denominazione project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Puoi ottenere l'indirizzo email dell'agente di servizio Storage Transfer Service utilizzando l'API Storage Transfer Service googleServiceAccounts.get.

  • Un account di servizio gestito dall'utente. L'indirizzo email di questo account di servizio segue il formato di denominazione SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. Puoi creare il tuo account di servizio e concedere le autorizzazioni necessarie per replicare i dati.

L'agente di servizio Storage Transfer Service o il account di servizio utente necessitano delle seguenti autorizzazioni per replicare gli oggetti e configurare le notifiche Pub/Sub per il bucket di origine:

Autorizzazioni obbligatorie

Devono essere concesse le seguenti autorizzazioni per il progetto di origine:

  • pubsub.topics.create
  • pubsub.subscriptions.create
  • pubsub.subscriptions.consume
  • iam.serviceAccounts.actAs se utilizzi un account di servizio gestito dall'utente. Non richiesto per l'agente di servizio Storage Transfer Service.

Devono essere concesse le seguenti autorizzazioni per il bucket di origine:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get

Devono essere concesse le seguenti autorizzazioni per il bucket di destinazione:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get

Queste autorizzazioni possono essere concesse tramite ruoli personalizzati o concedendo tutti i seguenti ruoli predefiniti:

  • Ruolo Editor Pub/Sub (roles/pubsub.editor) nel progetto di origine
  • Ruoli Proprietario bucket legacy Storage (roles/storage.legacyBucketOwner) e Visualizzatore oggetti Storage (roles/storage.objectViewer) nel bucket di origine
  • Ruoli Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) e Storage Object Viewer (roles/storage.objectViewer) nel bucket di destinazione
  • Creatore token service account (roles/iam.serviceAccountTokenCreator) nel progetto di origine, se utilizzi un account di servizio gestito dall'utente. Non richiesto per l'agente di servizio Storage Transfer Service.

Concedi i ruoli richiesti per Pub/Sub

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

L'agente di servizio Cloud Storage ha bisogno delle seguenti autorizzazioni per configurare Pub/Sub e pubblicare messaggi in un argomento:

Autorizzazioni obbligatorie

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

Questa autorizzazione può essere concessa tramite il ruolo 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 i bucket esistenti.

Per creare un job di replica, utilizza il comando gcloud alpha transfer jobs create con il flag --replication:

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 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 la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Crea un file JSON che contenga 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 assegnare al job di replica. Per i requisiti di denominazione, consulta la documentazione di riferimentotransferJobs.

    • SOURCE_BUCKET_NAME con il nome del bucket di origine che contiene 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 la modalità di sovrascrittura degli oggetti esistenti nel bucket di destinazione in seguito a un job di replica, che può verificarsi quando l'oggetto di 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 solo gli oggetti nel bucket di destinazione se i dati dell'oggetto di destinazione sono diversi da quelli dell'oggetto di origine

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

  3. Utilizza cURL per chiamare l'API REST 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 Cloud Logging per i logStorage Transfer Servicei Storage.

Elenca i job di replica

Console

Per istruzioni sulla 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 la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST Storage Transfer Service con una 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"

Visualizzare 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, elenca i job di replica.

API REST

API JSON

  1. Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST di Storage Transfer Service con una 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 job 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 su Pub/Sub

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

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

Console

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

Riga di comando

Utilizza il comando gcloud alpha transfer jobs update con i flag che controllano le proprietà del job di replica che vuoi aggiornare. Per un elenco dei 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 tuo job di trasferimento, elenca o visualizza il tuo job di trasferimento.

  • OVERWRITE_OPTION con un'opzione per la sovrascrittura degli oggetti esistenti nel bucket di destinazione in seguito a un job di replica, che può verificarsi quando l'oggetto di destinazione e l'oggetto di origine 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 dell'oggetto di origine.

    • never: non sovrascrivere mai gli oggetti di destinazione.

API REST

API JSON

  1. Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Crea un file JSON che contenga 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 saperne di più, consulta la rappresentazione della risorsa TransferJob.

    • UPDATE_MASK è un elenco separato da virgole dei 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 dei campi che puoi includere, consulta il corpo della richiesta transferJobs.patch.

  3. Utilizza cURL per chiamare l'API REST Storage Transfer Service con una 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 job di replica, elenca i job di replica.

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

API REST

API JSON

  1. Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API REST Storage Transfer Service con una 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 job di replica. Ad esempio, 1234567890. Per trovare l'ID del job di replica, elenca i job di replica.