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, 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 per:
- 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 bucket per eseguire i 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 attivata sui nuovi bucket che crei e su quelli 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 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 di trasferimento dati (roles/storagetransfer.user
) nel bucket o nel progetto.
Questo ruolo predefinito contiene le autorizzazioni necessarie per utilizzare la replica tra bucket. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
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 la replica tra bucket, devi anche concedere le autorizzazioni richieste all'agente di servizio utilizzato da Storage Transfer Service per replicare i dati e all'agente di servizio utilizzato da Pub/Sub per scrivere le 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. L'indirizzo email di questo agente di servizio segue il formato di denominazioneproject-PROJECT_NUMBER@storage-transfer-service.
.
Puoi ottenere l'indirizzo email dell'agente di servizio Storage Transfer Service utilizzando
l'API googleServiceAccounts.get
Storage Transfer Service.
L'agente di servizio Storage Transfer Service ha bisogno delle seguenti autorizzazioni per replicare i tuoi oggetti e configurare le notifiche Pub/Sub per il bucket di origine:
Autorizzazioni obbligatorie
storage.buckets.get
sul bucket di origine e di destinazionestorage.buckets.update
nel bucket di originestorage.objects.list
nel bucket di originestorage.objects.get
nel bucket di originestorage.objects.rewrite
nel bucket di destinazionepubsub.topics.create
sul 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
le 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 ha bisogno delle seguenti autorizzazioni per configurare Pub/Sub e pubblicare messaggi in un argomento:
Autorizzazioni obbligatorie
pubsub.topics.publish
nell'argomento Pub/Subpubsub.subscriptions.consume
nell'argomento Pub/Subpubsub.subscriptions.create
sul progetto
Queste autorizzazioni possono essere concesse 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.
Avere installato e inizializzatogcloud CLI, che consente di generare un token di accesso per l'intestazione
Authorization
.Crea un file JSON contenente un oggetto
TransferJob
con una risorsaReplicationSpec
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 riferimento ditransferJobs
.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 la modalità di sovrascrittura degli oggetti esistenti nel bucket di destinazione come risultato di 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 destinazioneDIFFERENT
: sovrascrivi gli oggetti nel bucket di destinazione solo se i dati dell'oggetto di destinazione sono diversi da quelli dell'oggetto di origineNEVER
: non sovrascrivere mai gli oggetti nel bucket di destinazione
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 sulla console Google Cloud su come elencare i job di replica, consulta Elenca 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
Avere installato e inizializzatogcloud CLI, che consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza cURL per chiamare l'API REST di 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
Avere installato e inizializzatogcloud CLI, che consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API REST di Storage Transfer Service con una richiestatransferJobs.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.
Aggiornare 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 registrazione 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
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
--overwrite-when
flag:
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, elenca o visualizza il job di trasferimento.OVERWRITE_OPTION
con un'opzione per la modalità di sovrascrittura degli oggetti esistenti nel bucket di destinazione a seguito di 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 gli oggetti nel bucket di destinazione solo se i dati degli oggetti di destinazione sono diversi da quelli degli oggetti di origine.never
: non sovrascrivere mai gli oggetti di destinazione.
API REST
API JSON
Avere installato e inizializzatogcloud CLI, che consente di generare un token di accesso per l'intestazione
Authorization
.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 risorsaTransferJob
.UPDATE_MASK
è un elenco separato da virgole dei nomi dei campi da 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
.Utilizza cURL per chiamare l'API REST di 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.
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, elenca i job di replica.
API REST
API JSON
Avere installato e inizializzatogcloud CLI, che consente di generare un token di accesso per l'intestazione
Authorization
.Utilizza cURL per chiamare l'API REST di 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.