Questa pagina descrive la procedura per spostare i bucket da una località a un'altra. Per informazioni sullo spostamento dei bucket, vedi Spostamento dei bucket.
Prima di iniziare
Prima di poter spostare i bucket, completa i seguenti passaggi:
Controlla le quote e i limiti per assicurarti che la nuova località disponga di quote sufficienti per ospitare i dati del bucket.
Determina il tipo di ricollocamento del bucket per capire se è necessario un tempo di inattività per la scrittura.
Se utilizzi i report sull'inventario, salva le configurazioni.
Ottieni i ruoli richiesti, descritti nella sezione seguente.
Ottenere i ruoli richiesti
Per ottenere le autorizzazioni
necessarie per trasferire i bucket,
chiedi all'amministratore di concederti il
ruolo IAM Storage Admin (roles/storage.admin
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per riassegnare i bucket. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per spostare i bucket sono necessarie le seguenti autorizzazioni:
-
Per spostare un bucket:
storage.buckets.relocate
-
Per visualizzare lo stato di un'operazione di trasferimento del bucket:
storage.bucketOperations.get
-
Per visualizzare l'elenco delle operazioni di trasferimento dei bucket per un progetto:
storage.bucketOperations.list
-
Per annullare un'operazione di trasferimento del bucket:
storage.bucketOperations.cancel
-
Per visualizzare i metadati di un bucket durante le fasi di simulazione e copia incrementale dei dati del trasferimento del bucket:
storage.buckets.get
-
Per ottenere un oggetto in un bucket che vuoi trasferire:
storage.objects.get
-
Per elencare gli oggetti in un bucket che vuoi trasferire:
storage.objects.list
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Sposta bucket
Questa sezione descrive il processo di trasferimento dei bucket Cloud Storage da una località a un'altra. Quando sposti un bucket, avvii il processo di copia incrementale dei dati, lo monitori e poi avvii il passaggio di sincronizzazione finale. Per ulteriori informazioni su questi passaggi, consulta Comprendere la procedura di spostamento dei bucket.
Eseguire una prova
Per ridurre al minimo i potenziali problemi durante il processo di trasferimento dei bucket, ti consigliamo di eseguire una prova dry run. Una prova dry run simula il processo di spostamento del bucket senza spostare i dati, aiutandoti a rilevare e risolvere i problemi in anticipo. La prova dry run verifica le seguenti incompatibilità:
- Chiavi di crittografia gestite dal cliente (CMEK) o chiavi di crittografia fornite dal cliente (CSEK)
- Criteri di conservazione bloccati
- Oggetti con blocchi temporanei
- Caricamenti multiparte
Anche se una prova generale non può identificare ogni possibile problema, in quanto alcuni problemi potrebbero emergere solo durante la migrazione live a causa di fattori quali la disponibilità di risorse in tempo reale, riduce il rischio di affrontare problemi che richiedono molto tempo durante il trasferimento effettivo.
Riga di comando
Simula la prova dello spostamento del bucket:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Dove:
BUCKET_NAME
è il nome del bucket che vuoi trasferire.LOCATION
è la posizione di destinazione del bucket.
Dopo aver avviato un test dry run, viene avviata un'operazione a lunga esecuzione. Riceverai un ID operazione e una descrizione dell'operazione. Monitora l'avanzamento e il completamento del test dry run ottenendo i dettagli dell'operazione a lunga esecuzione.
Se la prova generale rivela problemi, risolvili prima di procedere con il passaggio di copia incrementale dei dati.
API REST
API JSON
Avere gcloud CLI installata e inizializzata, il che ti consente di generare un token di accesso per l'intestazione
Authorization
.Crea un file JSON contenente le impostazioni del bucket, che deve includere i parametri
destinationLocation
evalidateOnly
. Consulta la documentazione relativa aBuckets: relocate
per un elenco completo delle impostazioni. Di seguito sono riportate le impostazioni comuni da includere:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Dove:
DESTINATION_LOCATION
è la posizione di destinazione del bucket.LOCATIONS
è un elenco di codici di località da utilizzare per la doppia regione configurabile.validateOnly
è impostato sutrue
per eseguire una prova.
Utilizza
cURL
per chiamare l'API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Dove:
JSON_FILE_NAME
è il nome del file JSON che hai creato.BUCKET_NAME
è il nome del bucket che vuoi trasferire.
Dopo aver avviato un test dry run, viene avviata un'operazione a lunga esecuzione. La prova dry run ha esito positivo quando sono soddisfatte le seguenti condizioni:
- La prova non segnala errori.
La risorsa
operations
restituisce un valore del campodone
pari atrue
.{ "kind": "storage#operation", "name": "projects/_/buckets/bucket/operations/operation_id", "metadata": { "@type": OperationMetadataType*, metadata OperationMetadata* }, "done": "true", "response": { "@type": ResponseResourceType*, response ResponseResource* } }
Se la prova generale rivela problemi, risolvili prima di procedere con il passaggio di copia incrementale dei dati.
Avviare la copia incrementale dei dati
Riga di comando
Avvia l'operazione di spostamento del bucket:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Dove:
BUCKET_NAME
è il nome del bucket che vuoi trasferire.LOCATION
è la posizione di destinazione del bucket.
API REST
API JSON
Avere gcloud CLI installata e inizializzata, il che ti consente di generare un token di accesso per l'intestazione
Authorization
.Crea un file JSON contenente le impostazioni del bucket. Consulta la documentazione relativa a
Buckets: relocate
per un elenco completo delle impostazioni. Di seguito sono riportate le impostazioni comuni da includere:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Dove:
DESTINATION_LOCATION
è la posizione di destinazione del bucket.LOCATIONS
è un elenco di codici di località da utilizzare per la doppia regione configurabile.validateOnly
è impostato sufalse
per avviare il passaggio di copia incrementale dei dati del trasferimento del bucket.
Utilizza
cURL
per chiamare l'API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Dove:
JSON_FILE_NAME
è il nome del file JSON che hai creato.BUCKET_NAME
è il nome del bucket che vuoi trasferire.
Monitorare la copia incrementale dei dati
Il processo di trasferimento del bucket è un'operazione a lunga esecuzione che deve essere monitorata per vedere come procede. Puoi controllare regolarmente l'elenco delle operazioni a lunga esecuzione per visualizzare lo stato del passaggio di copia incrementale dei dati. Per informazioni su come ottenere i dettagli di un'operazione a lunga esecuzione, elencare o annullare operazioni a lunga esecuzione, consulta Utilizzare operazioni a lunga esecuzione in Cloud Storage.
L'esempio seguente mostra l'output generato da un'operazione di copia incrementale dei dati:
done: false kind: storage#operation metadata: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata commonMetadata: createTime: '2024-10-21T04:26:59.666Z endTime: '2024-12-29T23:39:53.340Z' progressPercent: 99 requestedCancellation: false type: relocate-bucket updateTime: '2024-10-21T04:27:03.2892' destinationLocation: US-CENTRAL1 finalizationState: 'READY' progress: byteProgressPercent: 100 discoveredBytes: 200 remainingBytes: 0 discoveredObjectCount: 10 remainingObjectCount: 8 objectProgressPercent: 100 discoveredSyncCount: 8 remainingSyncCount: 0 syncProgressPercent: 100 relocationState: SYNCING sourceLocation: US validateOnly: false estimatedWriteDowntimeDuration: '7200s' writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z' name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w response: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
La tabella seguente fornisce informazioni sui campi chiave nell'output generato dall'operazione di copia incrementale dei dati:
Nome campo | Descrizione | Valori possibili |
---|---|---|
done |
Indica il completamento dell'operazione di trasferimento del bucket. | true , false |
kind |
Indica che questa risorsa rappresenta un'operazione di archiviazione. | |
metadata |
Fornisce informazioni sull'operazione. | |
metadata.@type |
Indica il tipo di operazione come trasferimento del bucket. | |
metadata.commonMetadata |
Metadati comuni a tutte le operazioni. | |
metadata.commonMetadata.createTime |
L'ora in cui è stata creata l'operazione a lunga esecuzione. | |
metadata.commonMetadata.endTime |
L'ora in cui è terminata l'operazione a lunga esecuzione. | |
metadata.commonMetadata.progressPercent |
L'avanzamento stimato dell'operazione a lunga esecuzione, in percentuale. | Tra 0 e 100 %. Un valore di -1 indica che lo stato di avanzamento è sconosciuto o non applicabile. |
metadata.commonMetadata.requestedCancellation |
Indica se l'utente ha richiesto l'annullamento dell'operazione a lunga esecuzione. | true , false |
metadata.commonMetadata.type |
Indica il tipo di operazione a lunga esecuzione. | |
metadata.commonMetadata.updateTime |
L'ora dell'ultimo aggiornamento dell'operazione a lunga esecuzione. | |
metadata.destinationLocation |
La posizione di destinazione del bucket. | |
metadata.finalizationState |
Indica la preparazione per l'avvio del passaggio di sincronizzazione finale. |
|
metadata.progress |
Dettagli sull'avanzamento dell'operazione di trasferimento. | |
metadata.progress.byteProgressPercent |
Avanzamento della copia dei byte in percentuale. | Tra 0 e 100 %. Un valore di -1 indica che lo stato di avanzamento è sconosciuto o non applicabile. |
metadata.progress.discoveredBytes |
Numero di byte rilevati nel bucket di origine. | |
metadata.progress.discoveredObjectCount |
Numero di oggetti rilevati nel bucket di origine. | |
metadata.progress.discoveredSyncCount |
Numero di aggiornamenti dei metadati degli oggetti rilevati nel bucket di origine. | |
metadata.progress.objectProgressPercent |
Avanzamento della copia degli oggetti in percentuale. | Tra 0 e 100 %. Un valore di -1 indica che lo stato di avanzamento è sconosciuto o non applicabile. |
metadata.progress.remainingBytes |
Numero di byte rimanenti da copiare dal bucket di origine al bucket di destinazione. | |
metadata.progress.remainingObjectCount |
Numero di oggetti rimanenti da copiare dal bucket di origine al bucket di destinazione. | |
metadata.progress.remainingSyncCount |
Numero di aggiornamenti dei metadati degli oggetti rimanenti da sincronizzare. | |
metadata.progress.syncProgressPercent |
Avanzamento degli aggiornamenti dei metadati degli oggetti da sincronizzare in percentuale. | Tra 0 e 100 %. Un valore di -1 indica che lo stato di avanzamento è sconosciuto o non applicabile. |
metadata.relocationState |
Stato complessivo dell'operazione di trasferimento del bucket. |
|
metadata.sourceLocation |
La posizione di origine del bucket. | |
metadata.validateOnly |
Indica se è stata avviata una simulazione del trasferimento del bucket. | true , false |
metadata.estimatedWriteDowntimeDuration |
La durata stimata del tempo di inattività di scrittura; viene compilata una volta che finalizationState è READY . |
Il valore minimo è 7200s . |
metadata.writeDowntimeExpireTime |
L'ora in cui scade il tempo di inattività di scrittura. | |
name |
L'identificatore univoco di questa operazione di riassegnazione. Formato: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
La risposta dell'operazione. | |
response.@type |
Il tipo di risposta. | |
selfLink |
Un link a questa operazione. |
Se riscontri problemi durante l'interazione con altre funzionalità di Cloud Storage, consulta la sezione Limitazioni.
Avviare il passaggio di sincronizzazione finale
Il passaggio di sincronizzazione finale prevede un periodo durante il quale non puoi eseguire operazioni di scrittura sul bucket. Ti consigliamo di pianificare l'ultimo passaggio di sincronizzazione in un momento che riduca al minimo l'interruzione delle tue applicazioni.
Prima di procedere, verifica che il bucket sia completamente preparato controllando il valore di
finalizationState
nell'output del passaggio Copia incrementale dei dati. Per procedere, il valore di finalizationState
deve essere READY
.
Se avvii il passaggio di sincronizzazione finale in anticipo, il comando restituisce
un messaggio di errore The relocate bucket operation is not ready to advance to finalization running state
, ma il processo di trasferimento continua.
Ti consigliamo di attendere che il valore di progressPercent
sia 99
prima di avviare il passaggio di sincronizzazione finale.
Riga di comando
Avvia il passaggio di sincronizzazione finale dell'operazione di trasferimento del bucket
una volta che il valore di finalizationState
è READY
:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Dove:
BUCKET_NAME
è il nome del bucket che vuoi trasferire.OPERATION_ID
è l'ID dell'operazione a lunga esecuzione, che viene restituito nella risposta dei metodi che chiami. Ad esempio, la seguente risposta viene restituita dalla chiamata digcloud storage operations list
e l'ID operazione a lunga esecuzione èAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Imposta il flag ttl
per avere un maggiore controllo sul processo di trasferimento. Ad esempio:
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Dove:
TTL_DURATION
è la durata (TTL) della fase di inattività
di scrittura durante una procedura di trasferimento. È espressa come stringa,
ad esempio 12h
per 12 ore. Il TTL_DURATION
determina la durata massima consentita
per la fase di inattività di scrittura. Se il tempo di inattività di scrittura supera questo limite,
il processo di trasferimento torna automaticamente al passaggio di copia incrementale
e le operazioni di scrittura nel bucket vengono riattivate. Il valore deve essere compreso tra 6h
(6 ore) e 48h
(48 ore). Se non specificato, il valore
predefinito è 12h
(12 ore).
API REST
API JSON
Avere gcloud CLI installata e inizializzata, il che ti consente di generare un token di accesso per l'intestazione
Authorization
.Crea un file JSON contenente le impostazioni per il trasferimento del bucket. Consulta la documentazione relativa a
Buckets: advanceRelocateBucket
per un elenco completo delle impostazioni. Di seguito sono riportate le impostazioni comuni da includere:{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Dove:
EXPIRE_TIME
è l'ora in cui scade il tempo di inattività di scrittura.TTL_DURATION
è la durata (TTL) della fase di inattività di scrittura durante una procedura di trasferimento. È espressa come stringa, ad esempio12h
per 12 ore. IlTTL_DURATION
determina la durata massima consentita per la fase di inattività di scrittura. Se il tempo di inattività di scrittura supera questo limite, il processo di trasferimento torna automaticamente al passaggio di copia incrementale e le operazioni di scrittura nel bucket vengono riattivate. Il valore deve essere compreso tra6h
(6 ore) e48h
(48 ore). Se non specificato, il valore predefinito è12h
(12 ore).
Utilizza
cURL
per chiamare l'API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"
Dove:
JSON_FILE_NAME
è il nome del file JSON che hai creato.BUCKET_NAME
è il nome del bucket che vuoi trasferire.OPERATION_ID
è l'ID dell'operazione a lunga esecuzione, che viene restituito nella risposta dei metodi che chiami. Ad esempio, la seguente risposta viene restituita dalla chiamata diOperations: list
e l'ID operazione a lunga esecuzione èAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Convalidare la procedura di spostamento del bucket
Dopo aver avviato un trasferimento, verifica che sia stato completato correttamente. Questa sezione fornisce indicazioni per confermare il trasferimento dei dati.
Verifica la riuscita della procedura di trasferimento utilizzando i seguenti metodi:
Esegui il polling delle operazioni a lunga esecuzione: il trasferimento del bucket è un'operazione a lunga esecuzione. Puoi eseguire il polling dell'operazione a lunga esecuzione utilizzando
operation id
per monitorare l'avanzamento dell'operazione e confermarne il completamento verificando lo statosuccess
. Ciò comporta l'esecuzione periodica di query sullo stato dell'operazione finché non raggiunge uno stato terminale. Per informazioni sul monitoraggio delle operazioni di lunga durata, consulta Utilizzare le operazioni di lunga durata in Cloud Storage.Analizza le voci di Cloud Audit Logs: Cloud Audit Logs fornisce un record dettagliato di eventi e operazioni nel tuo ambiente Google Cloud . Puoi analizzare le voci di Cloud Audit Logs associate al trasferimento per verificarne la riuscita. Analizza i log per individuare eventuali errori, avvisi o comportamenti imprevisti che potrebbero indicare problemi durante il trasferimento. Per informazioni sulla visualizzazione dei log di Cloud Audit Logs, vedi Visualizzazione dei log di controllo.
Le seguenti voci di log ti aiutano a determinare se lo spostamento è riuscito o meno:
Rilocazione riuscita:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
Rilocazione non riuscita:
Relocate bucket has failed. Bucket location remains unchanged.
Utilizzando le notifiche Pub/Sub, puoi anche configurare avvisi che ti informano quando l'evento specifico di esito positivo o negativo viene visualizzato nei log. Per informazioni sulla configurazione delle notifiche Pub/Sub, consulta Configurare le notifiche Pub/Sub per Cloud Storage.
Completare le attività di riposizionamento dei bucket post
Dopo aver trasferito correttamente il bucket, completa i seguenti passaggi:
- (Facoltativo) Ripristina i controlli dell'accesso basati su tag sul bucket.
- Le configurazioni esistenti del report sull'inventario non vengono mantenute durante la procedura di trasferimento e dovrai ricrearle manualmente. Per informazioni sulla creazione di una configurazione di report dell'inventario, consulta Creare una configurazione di report dell'inventario.
- Aggiorna le configurazioni dell'infrastruttura come codice, ad esempio Terraform e il connettore di configurazione Google Kubernetes Engine, per specificare la nuova posizione del bucket.
- Gli endpoint regionali sono associati a località specifiche e dovrai modificare il codice dell'applicazione per riflettere il nuovo endpoint.
Come gestire le operazioni di riposizionamento dei bucket non riuscite
Prima di gestire le operazioni di riassegnazione dei bucket non riuscite, considera i seguenti fattori:
Il trasferimento non riuscito di un bucket potrebbe lasciare risorse obsolete, come file temporanei o copie incomplete dei dati, nella destinazione. Devi attendere da 7 a 14 giorni prima di avviare un altro spostamento del bucket nella stessa destinazione. Puoi avviare immediatamente il trasferimento di un bucket in una destinazione diversa.
Se la posizione di destinazione non è quella ottimale per i tuoi dati, potresti voler annullare il trasferimento. Tuttavia, non puoi avviare un trasferimento immediatamente. È necessario un periodo di attesa di massimo 14 giorni prima di poter avviare nuovamente la procedura di trasferimento. Questa limitazione è in vigore per garantire la stabilità ed evitare conflitti di dati.
Passaggi successivi
- Scopri di più sullo spostamento dei bucket.