Cette page décrit la procédure de relocalisation de buckets d'un emplacement à un autre. Pour en savoir plus sur la relocalisation de buckets, consultez la section Relocalisation de buckets.
Avant de commencer
Avant de lancer le processus de réinstallation du bucket, procédez comme suit:
Vérifiez les quotas et les limites pour vous assurer que le nouvel emplacement dispose de quotas suffisants pour accueillir les données du bucket.
Déterminez le type de relocalisation de bucket pour savoir si un temps d'arrêt pour les écritures est nécessaire.
Si vous utilisez des rapports d'inventaire, enregistrez vos configurations.
Rôles requis
Pour obtenir les autorisations nécessaires pour déplacer des buckets d'un emplacement à un autre, demandez à votre administrateur de vous accorder le rôle d'administrateur de l'espace de stockage (roles/storage.admin
) pour le projet.
Ce rôle fournit un ensemble d'autorisations qui vous permettent de déplacer des buckets d'un emplacement à un autre. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Pour utiliser cette méthode, l'utilisateur authentifié doit disposer des autorisations IAM suivantes sur le bucket:
storage.buckets.relocate
storage.bucketOperations.get
Vous avez besoin de cette autorisation pour afficher l'état de l'opération de relocalisation du bucket.storage.bucketOperations.list
Vous avez besoin de cette autorisation pour afficher la liste des opérations de relocalisation de bucket.storage.bucketOperations.cancel
Vous avez besoin de cette autorisation pour annuler l'opération de relocalisation du bucket.
L'utilisateur authentifié peut également avoir besoin des autorisations suivantes sur le bucket pour utiliser cette méthode:
storage.bucket.get
Vous avez besoin de cette autorisation pour afficher les métadonnées d'un bucket lors du test et de la copie incrémentielle des données de l'opération de relocalisation du bucket.storage.objects.list
etstorage.objects.get
: vous avez besoin de ces autorisations pour afficher la liste des objets d'un bucket que vous souhaitez déplacer vers un autre emplacement.
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis. Pour connaître les rôles et les autorisations associées, consultez la page Rôles IAM pour Cloud Storage.
Pour savoir comment attribuer des rôles aux projets, consultez la page Gérer l'accès aux projets.
Déplacer des buckets
Cette section décrit le processus de relocalisation de buckets Cloud Storage d'un emplacement à un autre à l'aide de la relocalisation de bucket. Lorsque vous déplacez un bucket, vous lancez le processus de copie des données incrémentielle, le surveillez, puis lancez l'étape de synchronisation finale. Pour en savoir plus sur ces étapes, consultez la section Comprendre le processus de réinstallation des buckets.
Effectuer une simulation
Pour minimiser les problèmes potentiels lors du processus de réinstallation des buckets, nous vous recommandons d'effectuer un test. Un dry run simule le processus de réinstallation des buckets sans déplacer les données, ce qui vous permet de détecter et de résoudre les problèmes dès le début. Le dry run recherche les incompatibilités suivantes:
- Clés de chiffrement gérées par le client (CMEK) ou clés de chiffrement fournies par le client (CSEK)
- Règles de conservation verrouillées
- Objets soumis à une préservation temporaire
- Importations en plusieurs parties
Bien qu'un exercice préalable ne puisse pas identifier tous les problèmes possibles, car certains ne peuvent apparaître que lors de la migration en direct en raison de facteurs tels que la disponibilité des ressources en temps réel, il réduit le risque de rencontrer des problèmes chronophages lors du transfert réel.
Ligne de commande
Simulez le dry run de la relocalisation des buckets:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Où :
BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.LOCATION
est l'emplacement de destination du bucket.
Lancer un essai sans frais lance une opération de longue durée. Vous recevrez un ID d'opération et une description de l'opération. Pour suivre la progression de l'exercice, vous devez suivre son avancement. Pour savoir comment suivre la progression de la simulation, consultez Obtenir les détails d'une opération de longue durée.
Si le test à blanc révèle des problèmes, corrigez-les avant de passer à l'étape Lancer la copie incrémentielle des données.
API REST
API JSON
Vous devez installer et initialiser gcloud CLI, ce qui vous permet de générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant les paramètres du bucket, qui doit inclure les paramètres
destinationLocation
etvalidateOnly
. Consultez la documentation surBuckets: relocate
pour obtenir la liste complète des paramètres. Les paramètres les plus courants sont les suivants :{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Où :
DESTINATION_LOCATION
est l'emplacement de destination du bucket.LOCATIONS
est une liste de codes d'emplacement à utiliser pour l'emplacement birégional configurable.validateOnly
est défini surtrue
pour effectuer une simulation.
Utilisez
cURL
pour appeler 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"
Où :
JSON_FILE_NAME
correspond au nom du fichier JSON que vous avez créé.BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.
Lancer la copie incrémentielle des données
Ligne de commande
Lancez l'opération de relocalisation de bucket:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Où :
BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.LOCATION
est l'emplacement de destination du bucket.
API REST
API JSON
Vous devez installer et initialiser gcloud CLI, ce qui vous permet de générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant les paramètres du bucket. Consultez la documentation sur
Buckets: relocate
pour obtenir la liste complète des paramètres. Les paramètres les plus courants sont les suivants :{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Où :
DESTINATION_LOCATION
est l'emplacement de destination du bucket.LOCATIONS
est une liste de codes d'emplacement à utiliser pour l'emplacement birégional configurable.validateOnly
est défini surfalse
pour lancer l'étape de copie incrémentielle des données de la relocalisation du bucket.
Utilisez
cURL
pour appeler 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"
Où :
JSON_FILE_NAME
correspond au nom du fichier JSON que vous avez créé.BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.
Surveiller la copie incrémentielle des données
Le processus de relocalisation de bucket est une opération de longue durée qui doit être surveillée pour voir comment elle progresse. Vous pouvez consulter régulièrement la liste des opérations de longue durée pour connaître l'état de l'étape de copie des données incrémentielle. Pour savoir comment obtenir des informations sur une opération de longue durée, en lister ou en annuler, consultez la section Utiliser des opérations de longue durée dans Cloud Storage.
L'exemple suivant montre le résultat généré par une opération de copie de données incrémentielle:
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 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
Le tableau suivant fournit des informations sur les principaux champs de la sortie générée par l'opération de copie de données incrémentielle:
Nom du champ | Description | Valeurs possibles |
---|---|---|
done |
Indique la fin de l'opération de relocalisation du bucket. | true , false |
kind |
Indique que cette ressource représente une opération de stockage. | |
metadata |
Fournit des informations sur l'opération. | |
metadata.@type |
Indique que le type d'opération est un déplacement de bucket. | |
metadata.commonMetadata |
Métadonnées communes à toutes les opérations. | |
metadata.commonMetadata.createTime |
Heure à laquelle l'opération de longue durée a été créée. | |
metadata.commonMetadata.endTime |
Heure de fin de l'opération de longue durée. | |
metadata.commonMetadata.progressPercent |
Progression estimée de l'opération de longue durée, en pourcentage. | Entre 0 et 100 %. Une valeur de -1 signifie que la progression est inconnue ou non applicable. |
metadata.commonMetadata.requestedCancellation |
Indique si l'utilisateur a demandé l'annulation de l'opération de longue durée. | true , false |
metadata.commonMetadata.type |
Indique le type de l'opération de longue durée. | |
metadata.commonMetadata.updateTime |
Heure de la dernière mise à jour de l'opération de longue durée. | |
metadata.destinationLocation |
Emplacement de destination du bucket. | |
metadata.finalizationState |
Indique si l'étape de synchronisation finale peut être lancée. |
|
metadata.progress |
Détails de la progression de l'opération de transfert. | |
metadata.progress.byteProgressPercent |
Progression des octets copiés en pourcentage. | Entre 0 et 100 %. Une valeur de -1 signifie que la progression est inconnue ou non applicable. |
metadata.progress.discoveredBytes |
Nombre d'octets détectés dans le bucket source. | |
metadata.progress.discoveredObjectCount |
Nombre d'objets détectés dans le bucket source. | |
metadata.progress.discoveredSyncCount |
Nombre de mises à jour des métadonnées d'objet détectées dans le bucket source. | |
metadata.progress.objectProgressPercent |
Pourcentage d'objets copiés. | Entre 0 et 100 %. Une valeur de -1 signifie que la progression est inconnue ou non applicable. |
metadata.progress.remainingBytes |
Nombre d'octets restants à copier du bucket source vers le bucket de destination. | |
metadata.progress.remainingObjectCount |
Nombre d'objets restants à copier du bucket source vers le bucket de destination. | |
metadata.progress.remainingSyncCount |
Nombre de mises à jour des métadonnées d'objet restantes à synchroniser. | |
metadata.progress.syncProgressPercent |
Pourcentage de progression des mises à jour des métadonnées d'objet à synchroniser. | Entre 0 et 100 %. Une valeur de -1 signifie que la progression est inconnue ou non applicable. |
metadata.relocationState |
État global de la relocalisation de buckets |
|
metadata.sourceLocation |
Emplacement source du bucket. | |
metadata.validateOnly |
Indique si une simulation de la relocalisation du bucket a été lancée. | true , false |
metadata.writeDowntimeExpireTime |
Heure à laquelle le temps d'arrêt des écritures expire. | |
name |
Identifiant unique de cette opération de transfert. Format: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
Réponse de l'opération. | |
response.@type |
Type de réponse. | |
selfLink |
Lien vers cette opération. |
Vous pouvez rencontrer des problèmes en raison des limites lorsque vous interagissez avec d'autres fonctionnalités de Cloud Storage. Pour en savoir plus sur les limites, consultez la section Limites.
Lancer l'étape de synchronisation finale
L'étape de synchronisation finale implique une période pendant laquelle vous ne pouvez pas effectuer d'opérations d'écriture sur le bucket. Nous vous recommandons de planifier l'étape de synchronisation finale à un moment qui minimise les perturbations pour vos applications.
Avant de continuer, vérifiez que le bucket est entièrement préparé en vérifiant la valeur finalizationState
dans la sortie de l'étape Surveiller le processus de copie des données incrémentielles. La valeur finalizationState
doit être READY
pour passer à l'étape de synchronisation finale.
Si vous lancez prématurément l'étape de synchronisation finale, la commande renvoie un message d'erreur The relocate bucket operation is not ready to advance to finalization running state
, mais le processus de relocalisation se poursuit.
Nous vous recommandons d'attendre que la valeur progressPercent
soit 99
avant de lancer l'étape de synchronisation finale.
Ligne de commande
Lancez l'étape de synchronisation finale de l'opération de réaffectation de bucket une fois que la valeur finalizationState
est READY
:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Où :
BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.OPERATION_ID
est l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel degcloud storage operations list
, et l'ID de l'opération de longue durée estAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Définissez l'indicateur ttl
pour mieux contrôler le processus de réinstallation. Exemple :
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Où :
TTL_DURATION
est la valeur TTL (Time To Live) de la phase de temps d'arrêt d'écriture lors d'un processus de réinstallation. Il est exprimé sous la forme d'une chaîne, par exemple 12h
pour 12 heures. TTL_DURATION
détermine la durée maximale autorisée pour la phase d'arrêt en écriture. Si le temps d'arrêt des écritures dépasse cette limite, le processus de relocalisation revient automatiquement à l'étape de copie incrémentielle, et les opérations d'écriture dans le bucket sont réactivées. La valeur doit être comprise entre 6h
(6 heures) et 48h
(48 heures). Si aucune valeur n'est spécifiée, la valeur par défaut est 12h
(12 heures).
API REST
API JSON
Vous devez installer et initialiser gcloud CLI, ce qui vous permet de générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant les paramètres de relocalisation des buckets. Consultez la documentation sur
Buckets: advanceRelocateBucket
pour obtenir la liste complète des paramètres. Les paramètres les plus courants sont les suivants :{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Où :
EXPIRE_TIME
correspond à l'heure d'expiration du temps d'arrêt d'écriture.TTL_DURATION
est la valeur TTL (Time To Live) de la phase de temps d'arrêt d'écriture lors d'un processus de réinstallation. Il est exprimé sous la forme d'une chaîne, par exemple12h
pour 12 heures.TTL_DURATION
détermine la durée maximale autorisée pour la phase d'arrêt en écriture. Si le temps d'arrêt des écritures dépasse cette limite, le processus de relocalisation revient automatiquement à l'étape de copie incrémentielle, et les opérations d'écriture dans le bucket sont réactivées. La valeur doit être comprise entre6h
(6 heures) et48h
(48 heures). Si aucune valeur n'est spécifiée, la valeur par défaut est12h
(12 heures).
Utilisez
cURL
pour appeler 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"
Où :
JSON_FILE_NAME
correspond au nom du fichier JSON que vous avez créé.BUCKET_NAME
correspond au nom du bucket que vous souhaitez déplacer.OPERATION_ID
est l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel deOperations: list
, et l'ID de l'opération de longue durée estAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Valider le processus de réinstallation des buckets
Une fois la migration lancée, vérifiez qu'elle a bien été effectuée. Cette section fournit des conseils pour confirmer le transfert réussi des données.
Validez la réussite du processus de migration à l'aide des méthodes suivantes:
Interroger les opérations de longue durée: la relocalisation de bucket est une opération de longue durée. Vous pouvez interroger l'opération de longue durée à l'aide de
operation id
pour surveiller sa progression et confirmer sa réussite en vérifiant l'étatsuccess
. Pour ce faire, vous devez interroger régulièrement l'état de l'opération jusqu'à ce qu'elle atteigne un état final. Pour en savoir plus sur la surveillance des opérations de longue durée, consultez Utiliser des opérations de longue durée dans Cloud Storage.Analyser les entrées de Cloud Audit Logs: Cloud Audit Logs fournit un enregistrement détaillé des événements et des opérations dans votre Google Cloud environnement. Vous pouvez analyser les entrées des journaux d'audit Cloud associées à la migration pour vérifier qu'elle a bien réussi. Analysez les journaux pour détecter toute erreur, avertissement ou comportement inattendu pouvant indiquer des problèmes lors du transfert. Pour en savoir plus sur l'affichage des journaux Cloud Audit Logging, consultez la section Afficher les journaux d'audit.
Les entrées de journal suivantes vous aident à déterminer si votre transfert a réussi ou échoué:
Déplacement réussi:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
Échec de la relocalisation:
Relocate bucket has failed. Bucket location remains unchanged.
À l'aide des notifications Pub/Sub, vous pouvez également configurer des alertes qui vous avertissent lorsque l'événement de réussite ou d'échec spécifique apparaît dans les journaux. Pour en savoir plus sur la configuration des notifications Pub/Sub, consultez Configurer les notifications Pub/Sub pour Cloud Storage.
Effectuer les tâches post-relocalisation des buckets
Une fois que vous avez correctement déplacé votre bucket, procédez comme suit:
- Facultatif: Restaurez les contrôles d'accès basés sur des tags sur votre bucket.
- Les configurations existantes des rapports d'inventaire ne sont pas conservées lors du processus de migration. Vous devrez les recréer manuellement. Pour savoir comment créer une configuration de rapport d'inventaire, consultez Créer une configuration de rapport d'inventaire.
- Mettez à jour vos configurations Infrastructure as Code, telles que Terraform et le connecteur de configuration Google Kubernetes Engine, pour spécifier le nouvel emplacement du bucket.
- Les points de terminaison régionaux sont associés à des emplacements spécifiques. Vous devrez modifier le code de votre application pour refléter le nouveau point de terminaison.
Gérer les échecs des opérations de relocalisation de buckets
Tenez compte des facteurs suivants avant de gérer les opérations de réinstallation de buckets ayant échoué:
Un échec de la relocalisation d'un bucket peut laisser des ressources obsolètes, telles que des fichiers temporaires ou des copies de données incomplètes, à la destination. Vous devez attendre sept à 14 jours avant de lancer une autre relocalisation de bucket vers la même destination. Vous pouvez immédiatement lancer le déplacement d'un bucket vers une autre destination.
Si l'emplacement de destination n'est pas optimal pour vos données, vous pouvez annuler la relocalisation. Toutefois, vous ne pouvez pas lancer immédiatement une relocalisation. Vous devez patienter jusqu'à 14 jours avant de pouvoir relancer le processus de transfert. Cette restriction est mise en place pour assurer la stabilité et éviter les conflits de données.
Étape suivante
- En savoir plus sur la relocalisation de buckets