Cette page présente la réplication entre buckets et fournit des instructions. sur la façon d'utiliser la fonctionnalité.
Présentation de la réplication entre buckets
Dans certains cas, vous pouvez souhaiter copier des données d'un bucket Cloud Storage vers un autre. Copies de réplication entre buckets objets nouveaux et mis à jour de manière asynchrone depuis un bucket source vers une destination bucket.
La réplication entre buckets diffère de la réplication par défaut et de la réplication turbo dans la mesure où vos données sont réparties dans deux buckets, chacun avec sa propre configuration, comme l'emplacement de stockage, le chiffrement, l'accès et la classe de stockage. Il offre ainsi la récupération et la disponibilité des données, mais est également adapté aux cas suivants :
- Souveraineté des données : conservez les données dans des régions géographiquement éloignées.
- Gérer des versions de développement et de production distinctes: créez des versions distinctes des buckets et des espaces de noms, de sorte que le développement n'affecte pas charge de travail spécifique.
- Partager des données : répliquez des données dans un bucket appartenant à un fournisseur ou à un partenaire.
- Agrégation de données : combinez les données de différents buckets dans un seul bucket pour exécuter des charges de travail d'analyse.
- Gérez les coûts, la sécurité et la conformité: gérez vos données sous des propriétés, classes de stockage et durées de conservation différentes.
La réplication entre les buckets utilise le service de transfert de stockage pour répliquer les objets et Pub/Sub pour recevoir des alertes sur les modifications apportées aux buckets source et de destination. La réplication entre les buckets peut être activée pour les nouveaux buckets que vous créez et pour les buckets existants. La plupart des objets peuvent être répliqués dans l'ordre minutes, tandis que les objets de plus d'un Gio peuvent prendre plusieurs heures.
Avant de commencer
Avant de commencer, suivez les étapes ci-dessous.
Activer l'API Storage Transfer Service
Si vous ne l'avez pas déjà fait, activez l'API Storage Transfer Service.
Obtenir les rôles requis
Pour obtenir les autorisations nécessaires pour utiliser la réplication entre les buckets, demandez à votre administrateur de vous accorder le rôle IAM Utilisateur de transfert Storage (roles/storagetransfer.user
) sur le bucket ou le projet.
Ce rôle prédéfini contient les autorisations requises pour utiliser la réplication entre buckets. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour utiliser la réplication entre buckets:
-
storagetransfer.jobs.create
-
storagetransfer.jobs.delete
-
storagetransfer.jobs.get
-
storagetransfer.jobs.list
-
storagetransfer.jobs.run
-
storagetransfer.jobs.update
Pour savoir comment attribuer des rôles aux buckets, consultez la section Utiliser IAM avec des buckets. Pour obtenir des instructions sur l'attribution de rôles sur les projets, consultez Gérer l'accès aux projets.
Attribuer les rôles requis
La réplication entre buckets utilise Pub/Sub pour recevoir des notifications de modifications apportées à votre bucket source et le service de transfert de stockage pour répliquer les objets de votre bucket source vers votre bucket de destination. Pour utiliser la réplication entre buckets, vous devez également accorder les autorisations requises agent de service utilisé par le service de transfert de stockage pour répliquer les données et le service utilisé par Pub/Sub pour écrire des notifications.
Attribuer les rôles requis à l'agent de service de transfert de stockage
Le service de transfert de stockage utilise un agent de service géré par Google pour répliquer les données. L'adresse e-mail de cet agent de service suit le format de dénomination project-PROJECT_NUMBER@storage-transfer-service.
.
Vous pouvez obtenir l'adresse e-mail de l'agent de service du service de transfert de stockage à l'aide de l'API googleServiceAccounts.get
du service de transfert de stockage.
L'agent de service du service de transfert de stockage a besoin des autorisations suivantes pour répliquer vos objets et configurer des notifications Pub/Sub pour votre bucket source :
Autorisations requises
storage.buckets.get
sur le bucket source et de destinationstorage.buckets.update
sur le bucket sourcestorage.objects.list
sur le bucket sourcestorage.objects.get
sur le bucket sourcestorage.objects.rewrite
sur le bucket de destinationpubsub.topics.create
sur le projet
Ces autorisations peuvent être accordées via l'éditeur Pub/Sub
(roles/pubsub.editor
) et du rôle Administrateur de l'espace de stockage (roles/storage.admin
).
Pour un rôle moins permissif que le rôle d'administrateur de l'espace de stockage, vous pouvez également utiliser un rôle personnalisé.
Attribuer les rôles requis à l'agent de service Cloud Storage
Cloud Storage utilise un agent de service géré par Google pour gérer les notifications Pub/Sub. L'adresse e-mail de cet agent de service respecte le format de dénomination service-PROJECT_NUMBER@gs-project-accounts.
.
L'agent de service Cloud Storage a besoin des autorisations suivantes pour configurer Pub/Sub et publier des messages dans un sujet:
Autorisations requises
pubsub.topics.publish
sur le sujet Pub/Subpubsub.subscriptions.consume
sur le sujet Pub/Subpubsub.subscriptions.create
sur le projet
Ces autorisations peuvent être accordées via l'Diffuseur Pub/Sub
(roles/pubsub.publisher
).
Créer une tâche de réplication
Console
Pour obtenir des instructions sur la création d'une tâche de réplication dans la console Google Cloud, consultez Créer une tâche de réplication à l'aide de la console Google Cloud.
Ligne de commande
Lorsque vous utilisez Google Cloud CLI, vous pouvez créer une tâche de réplication pour les buckets existants.
Pour créer un job de réplication, utilisez la
Commande gcloud alpha transfer jobs create
avec --replication
:
gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication
Remplacez :
SOURCE_BUCKET_NAME
par le nom de la source ; bucket que vous souhaitez répliquer. Exemple :my-source-bucket
DESTINATION_BUCKET_NAME
par le nom du bucket de destination. Exemple :my-destination-bucket
API REST
API JSON
Lorsque vous utilisez l'API JSON, vous pouvez créer une tâche de réplication pour les buckets existants.
Avoir gcloud CLI installée et initialisée, ce qui permet vous devez générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant un objet
TransferJob
avec une ressourceReplicationSpec
initialisée :TransferJob { "name": "TRANSFER_JOB_NAME", ... ReplicationSpec: { "gcsDataSource": { "bucketName": "SOURCE_BUCKET_NAME" }, "gcsDataSink" { "bucketName": "DESTINATION_BUCKET_NAME" }, "objectConditions": { }, "transferOptions": { "overwriteWhen": "OVERWRITE_OPTION" } } ... }
Remplacez :
TRANSFER_JOB_NAME
par le nom que vous souhaitez attribuer à la tâche de réplication. Consultez le Documentation de référence surtransferJobs
pour l'attribution de noms exigences.SOURCE_BUCKET_NAME
par le nom du bucket source contenant les objets que vous souhaitez répliquer. Exemple :example-source-bucket
.DESTINATION_BUCKET_NAME
avec le nom du bucket de destination dans lequel vos objets seront répliqués. Exemple :example-destination-bucket
.OVERWRITE_OPTION
avec une option indiquant comment des objets existants dans le bucket de destination peuvent être écrasés d'un job de réplication, ce qui peut se produire lorsque la destination et l'objet source ont le même nom. La valeur doit correspondre à l'un des éléments suivants :ALWAYS
: toujours remplacer les objets dans le bucket de destinationDIFFERENT
: ne remplacez les objets du bucket de destination que si les données de l'objet de destination sont différentes de celles de l'objet source.NEVER
: ne jamais écraser les objets du bucket de destination
Utilisez cURL pour appeler l'API REST du service de transfert de stockage avec une Requête
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"
Où :
JSON_FILE_NAME
est le nom du fichier JSON. que vous avez créés à l'étape 2.
Pour vérifier l'état de la tâche de réplication, consultez les journaux Cloud Logging du service de transfert de stockage.
Lister les tâches de réplication
Console
Pour obtenir des instructions sur la console Google Cloud permettant de lister les jobs de réplication, consultez Répertorier les tâches de réplication à l'aide de la console Google Cloud.
Ligne de commande
Exécutez la commande gcloud alpha transfer jobs list
avec l'option --job-type
:
gcloud alpha transfer jobs list --job-type=replication
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
.Utilisez cURL pour appeler l'API REST du service de transfert de stockage avec une Requête
transferJobs.list
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
Afficher un job de réplication
Console
Pour obtenir des instructions sur l'affichage d'un job de réplication dans la console Google Cloud, consultez Afficher un job de réplication à l'aide de la console Google Cloud.
Ligne de commande
Exécutez la commande gcloud alpha transfer jobs describe
:
gcloud alpha transfer jobs describe JOB_NAME
Remplacez :
JOB_NAME
par l'ID unique de la réplication. tâche. Exemple :1234567890
Pour trouver l'ID de votre tâche de transfert, procédez comme suit : répertorier vos tâches de réplication.
API REST
API JSON
Avoir gcloud CLI installée et initialisée, ce qui permet vous devez générer un jeton d'accès pour l'en-tête
Authorization
.Utilisez
cURL
pour appeler l'API REST du service de transfert de stockage avec une requêtetransferJobs.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"
Remplacez :
JOB_NAME
par l'identifiant unique du du job de réplication. Exemple :1234567890
Pour trouver l'ID de votre tâche de réplication, listez vos tâches de réplication.
Mettre à jour un job de réplication
Vous pouvez mettre à jour les champs suivants d'une tâche de réplication :
Description du job de réplication
Configuration pour exécuter une tâche de réplication
Configuration des notifications publiées dans Pub/Sub
Comportement de journalisation des opérations de tâche de réplication
État du job de réplication (activé, désactivé ou supprimé)
Console
Pour obtenir des instructions sur la mise à jour d'une tâche de réplication dans la console Google Cloud, consultez Mettre à jour une tâche de réplication à l'aide de la console Google Cloud.
Ligne de commande
Exécutez la commande gcloud alpha transfer jobs update
avec les options qui contrôlent les propriétés de la tâche de réplication que vous souhaitez mettre à jour. Pour une liste
des options possibles, consultez la
Documentation sur gcloud alpha transfer jobs update
Par exemple, pour mettre à jour le comportement d'écrasement des objets du job de réplication,
exécutez la commande gcloud alpha transfer jobs update
avec
Indicateur --overwrite-when
:
gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION
Remplacez :
JOB_NAME
avec l'ID unique de la tâche de réplication. Exemple :1234567890
Pour trouver l'ID de votre tâche de transfert, procédez comme suit : répertorier ou afficher votre tâche de transfert.OVERWRITE_OPTION
avec une option permettant de déterminer comment les objets existants du bucket de destination peuvent être écrasés à la suite d'une tâche de réplication, ce qui peut se produire lorsque l'objet de destination et l'objet source portent le même nom. La valeur doit correspondre à l'un des éléments suivants :always
: écrase toujours les objets de destination.different
: ne remplace que les objets du bucket de destination. si les données de l'objet de destination sont différentes de celles des données d'objet.never
: n'écrase jamais les objets de destination.
API REST
API JSON
Avoir gcloud CLI installée et initialisée, ce qui permet vous devez générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant la structure suivante, qui inclut les champs de l'objet
TransferJob
que vous souhaitez mettre à jour :{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
Où :
object (TransferJob)
est remplacé par les champs du job de réplication que vous souhaitez mettre à jour. Consultez le Représentation de la ressourceTransferJob
pour en savoir plus.UPDATE_MASK
est une liste des éléments séparés par une virgule. de champs que vous souhaitez mettre à jour. Les valeurs peuvent correspondre à une ou plusieurs suivant:description
,transferSpec
,notificationConfig
,loggingConfig
,status
.
Pour en savoir plus sur les noms de champs que vous pouvez inclure, consultez le corps de la requête
transferJobs.patch
.Utilisez cURL pour appeler l'API REST du service de transfert de stockage avec une Requête
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"
Remplacez :
JOB_NAME
avec l'ID unique de la tâche de réplication. Exemple :1234567890
Pour trouver l'ID de votre tâche de réplication, listez vos tâches de réplication.
Supprimer une tâche de réplication
Console
Pour savoir comment supprimer une tâche de réplication dans la console Google Cloud, consultez Supprimer une tâche de réplication à l'aide de la console Google Cloud.
Ligne de commande
Exécutez la commande gcloud alpha transfer jobs delete
:
gcloud alpha transfer jobs delete JOB_NAME
Remplacez :
JOB_NAME
avec l'ID unique de la tâche de réplication. Exemple :1234567890
Pour trouver l'ID de votre tâche de réplication, listez vos tâches de réplication.
API REST
API JSON
Avoir gcloud CLI installée et initialisée, ce qui permet vous devez générer un jeton d'accès pour l'en-tête
Authorization
.Utilisez cURL pour appeler l'API REST du service de transfert de stockage avec une requête
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"
Remplacez :
JOB_NAME
par l'identifiant unique du du job de réplication. Exemple :1234567890
Pour trouver l'ID de votre tâche de réplication, listez vos tâches de réplication.