En esta página, se proporciona una descripción general de la replicación entre bucket y las instrucciones para usar la función.
Descripción general de la replicación entre bucket
En algunos casos, es posible que desees copiar datos de un bucket de Cloud Storage a otro. La replicación entre buckets copia objetos nuevos y actualizados de forma asíncrona de un bucket de origen a uno de destino.
La replicación entre buckets difiere de la replicación predeterminada y la replicación turbo en que tus datos existen en dos buckets, cada uno con su propia configuración, como la ubicación de almacenamiento, la encriptación, el acceso y la clase de almacenamiento. Como resultado, ofrece disponibilidad y recuperación de datos, pero también es adecuada para lo siguiente:
- Soberanía de los datos: Mantén los datos en regiones geográficamente distantes.
- Mantén versiones de desarrollo y producción separadas: Crea buckets y espacios de nombres distintos para que el desarrollo no afecte tu carga de trabajo de producción.
- Compartir datos: Replica los datos en un bucket que pertenece a un proveedor o socio.
- Agregación de datos: Combina datos de diferentes buckets en uno solo para ejecutar cargas de trabajo de análisis.
- Administra el costo, la seguridad y el cumplimiento: Mantén tus datos con diferentes propiedades, clases de almacenamiento y períodos de retención.
La replicación entre bucket usa el Servicio de transferencia de almacenamiento para replicar objetos y Pub/Sub para recibir alertas sobre cambios en los buckets de origen y destino. La replicación entre buckets se puede habilitar en los buckets nuevos que crees y en los existentes. La mayoría de los objetos se pueden replicar en cuestión de minutos, mientras que los objetos de más de un GiB pueden tardar varias horas.
Antes de comenzar
Antes de comenzar, completa los pasos que se indican a continuación.
Habilita la API de Storage Transfer Service
Si aún no lo hiciste, habilita la API de Storage Transfer Service.
Obtén las funciones necesarias
Para obtener los permisos que necesitas para usar la replicación entre buckets, pídele a tu administrador que te otorgue el rol de IAM de usuario de transferencia de almacenamiento (roles/storagetransfer.user
) en el bucket o el proyecto.
Este rol predefinido contiene los permisos necesarios para usar la replicación entre buckets. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para usar la replicación entre buckets:
-
storagetransfer.jobs.create
-
storagetransfer.jobs.delete
-
storagetransfer.jobs.get
-
storagetransfer.jobs.list
-
storagetransfer.jobs.run
-
storagetransfer.jobs.update
Para obtener instrucciones para otorgar roles a los buckets, consulta Usa IAM con buckets. Si deseas obtener instrucciones para otorgar roles a proyectos, consulta Administra el acceso a los proyectos.
Otorga roles necesarios
La replicación entre buckets usa Pub/Sub para recibir notificaciones de cambios en tu bucket de origen y el Servicio de transferencia de almacenamiento para replicar objetos de tu bucket de origen a tu bucket de destino. Para usar la replicación entre buckets, también debes otorgar los permisos necesarios al agente de servicio que usa el Servicio de transferencia de almacenamiento para replicar datos y al agente de servicio que usa Pub/Sub para escribir notificaciones.
Otorga los roles necesarios al agente de servicio del Servicio de transferencia de almacenamiento
El Servicio de transferencia de almacenamiento usa un agente de servicio administrado por Google para replicar los datos. La dirección de correo electrónico de este agente de servicio sigue el formato de nombres project-PROJECT_NUMBER@storage-transfer-service.
.
Puedes obtener la dirección de correo electrónico del agente de servicio del Servicio de transferencia de almacenamiento con la API de googleServiceAccounts.get
del Servicio de transferencia de almacenamiento.
El agente de servicio del Servicio de transferencia de almacenamiento necesita los siguientes permisos para replicar tus objetos y configurar notificaciones de Pub/Sub para tu bucket de origen:
Permisos necesarios
storage.buckets.get
en el bucket de origen y de destinostorage.buckets.update
en el bucket de origenstorage.objects.list
en el bucket de origenstorage.objects.get
en el bucket de origenstorage.objects.rewrite
en el bucket de destinopubsub.topics.create
en el proyecto
Estos permisos se pueden otorgar a través del rol de Editor de Pub/Sub (roles/pubsub.editor
) y del rol de Administrador de almacenamiento (roles/storage.admin
).
Para obtener un rol menos permisivo que el de administrador de almacenamiento, también puedes usar un rol personalizado.
Otorga los roles necesarios al agente de servicio de Cloud Storage
Cloud Storage usa un agente de servicio administrado por Google para administrar las notificaciones de Pub/Sub. La dirección de correo electrónico de este agente de servicio sigue el formato de nombres service-PROJECT_NUMBER@gs-project-accounts.
.
El agente de servicio de Cloud Storage necesita los siguientes permisos para configurar Pub/Sub y publicar mensajes en un tema:
Permisos necesarios
pubsub.topics.publish
en el tema de Pub/Subpubsub.subscriptions.consume
en el tema de Pub/Subpubsub.subscriptions.create
en el proyecto
Estos permisos se pueden otorgar a través del rol de publicador de Pub/Sub (roles/pubsub.publisher
).
Crea un trabajo de replicación
Console
Para obtener instrucciones sobre cómo crear un trabajo de replicación con la consola de Google Cloud, consulta Crea un trabajo de replicación con la consola de Google Cloud.
Línea de comandos
Cuando usas Google Cloud CLI, puedes crear un trabajo de replicación para buckets existentes.
Para crear un trabajo de replicación, usa el comando gcloud alpha transfer jobs create
con la marca --replication
:
gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication
Reemplaza lo siguiente:
SOURCE_BUCKET_NAME
por el nombre del bucket de origen que deseas replicar. Por ejemplo,my-source-bucket
DESTINATION_BUCKET_NAME
por el nombre del bucket de destino. Por ejemplo,my-destination-bucket
APIs de REST
API de JSON
Cuando usas la API de JSON, puedes crear un trabajo de replicación para los buckets existentes.
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga un objeto
TransferJob
con un recursoReplicationSpec
inicializado:TransferJob { "name": "TRANSFER_JOB_NAME", ... ReplicationSpec: { "gcsDataSource": { "bucketName": "SOURCE_BUCKET_NAME" }, "gcsDataSink" { "bucketName": "DESTINATION_BUCKET_NAME" }, "objectConditions": { }, "transferOptions": { "overwriteWhen": "OVERWRITE_OPTION" } } ... }
Reemplaza lo siguiente:
TRANSFER_JOB_NAME
por el nombre que deseas asignar al trabajo de replicación. Consulta la documentación de referencia detransferJobs
para conocer los requisitos de nombres.SOURCE_BUCKET_NAME
con el nombre del bucket de origen que contiene los objetos que deseas replicar. Por ejemplo,example-source-bucket
.DESTINATION_BUCKET_NAME
por el nombre del bucket de destino en el que se replicarán tus objetos. Por ejemplo,example-destination-bucket
.OVERWRITE_OPTION
con una opción para indicar cómo se pueden reemplazar los objetos existentes en el bucket de destino como resultado de un trabajo de replicación, lo que puede ocurrir cuando el objeto de destino y el objeto de origen tienen el mismo nombre. El valor debe ser uno de los siguientes:ALWAYS
: Siempre reemplaza los objetos en el bucket de destino.DIFFERENT
: Solo reemplaza los objetos en el bucket de destino si los datos del objeto de destino son diferentes de los datos del objeto de origen.NEVER
: Nunca reemplaza objetos en el bucket de destino.
Usa cURL para llamar a la API de REST del Servicio de transferencia de almacenamiento con una solicitud
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"
Donde:
JSON_FILE_NAME
es el nombre del archivo JSON que creaste en el paso 2.
Para verificar el estado de la tarea de replicación, consulta Cloud Logging para ver los registros del Servicio de transferencia de almacenamiento.
Enumera los trabajos de replicación
Console
Si deseas obtener instrucciones sobre cómo enumerar trabajos de replicación en la consola de Google Cloud, consulta Cómo enumerar trabajos de replicación con la consola de Google Cloud.
Línea de comandos
Usa el comando gcloud alpha transfer jobs list
con la marca --job-type
:
gcloud alpha transfer jobs list --job-type=replication
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Usa cURL para llamar a la API de REST del Servicio de transferencia de almacenamiento con una solicitud
transferJobs.list
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
Ve un trabajo de replicación
Console
Si deseas obtener instrucciones sobre cómo ver un trabajo de replicación en la consola de Google Cloud, consulta Cómo ver un trabajo de replicación con la consola de Google Cloud.
Línea de comandos
Usa el comando gcloud alpha transfer jobs describe
:
gcloud alpha transfer jobs describe JOB_NAME
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de transferencia, enumera tus trabajos de replicación.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API de REST del Servicio de transferencia de almacenamiento con una solicitudtransferJobs.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"
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de replicación, enumera tus trabajos de replicación.
Actualiza un trabajo de replicación
Puedes actualizar los siguientes campos de un trabajo de replicación:
La descripción del trabajo de replicación
La configuración para ejecutar un trabajo de replicación
La configuración de las notificaciones publicadas en Pub/Sub
El comportamiento de registro para las operaciones de trabajos de replicación
El estado del trabajo de replicación (si está habilitado, inhabilitado o eliminado)
Console
Si deseas obtener instrucciones sobre cómo actualizar un trabajo de replicación en la consola de Google Cloud, consulta Cómo actualizar un trabajo de replicación con la consola de Google Cloud.
Línea de comandos
Usa el comando gcloud alpha transfer jobs update
con las marcas que controlan las propiedades del trabajo de replicación que deseas actualizar. Para obtener una lista de marcas posibles, consulta la documentación de gcloud alpha transfer jobs update
.
Por ejemplo, para actualizar el comportamiento de reemplazo de objetos del trabajo de replicación, ejecuta el comando gcloud alpha transfer jobs update
con la marca --overwrite-when
:
gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de transferencia, enumera o consulta el trabajo.OVERWRITE_OPTION
con una opción para indicar cómo se pueden reemplazar los objetos existentes en el bucket de destino como resultado de un trabajo de replicación, lo que puede ocurrir cuando el objeto de destino y el objeto de origen tienen el mismo nombre. El valor debe ser uno de los siguientes:always
: Siempre reemplaza los objetos de destino.different
: Solo reemplaza los objetos en el bucket de destino si los datos del objeto de destino son diferentes de los datos del objeto de origen.never
: Nunca reemplaza los objetos de destino.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente estructura que incluya los campos del objeto
TransferJob
que deseas actualizar:{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
Donde:
object (TransferJob)
se reemplaza por los campos del trabajo de replicación que deseas actualizar. Consulta la representación de recursosTransferJob
para obtener más información.UPDATE_MASK
es una lista separada por comas de los nombres de campo que deseas actualizar. Los valores pueden ser uno o más de los siguientes:description
,transferSpec
,notificationConfig
,loggingConfig
ystatus
.
Para obtener más información sobre los nombres de campos que puedes incluir, consulta el cuerpo de la solicitud de
transferJobs.patch
.Usa cURL para llamar a la API de REST del Servicio de transferencia de almacenamiento con una solicitud
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"
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de replicación, enumera tus trabajos de replicación.
Borra un trabajo de replicación
Console
Si deseas obtener instrucciones sobre cómo borrar un trabajo de replicación con la consola de Google Cloud, consulta Borra un trabajo de replicación con la consola de Google Cloud.
Línea de comandos
Usa el comando gcloud alpha transfer jobs delete
:
gcloud alpha transfer jobs delete JOB_NAME
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de replicación, enumera tus trabajos de replicación.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Usa cURL para llamar a la API de REST del Servicio de transferencia de almacenamiento con una solicitud
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"
Reemplaza lo siguiente:
JOB_NAME
con el ID único del trabajo de replicación. Por ejemplo,1234567890
Para encontrar el ID de tu trabajo de replicación, enumera tus trabajos de replicación.