En esta página, se describe el proceso para reubicar los buckets de una ubicación a otra. Para obtener información sobre la reubicación de buckets, consulta Reubicación de buckets.
Antes de comenzar
Antes de iniciar el proceso de reubicación del bucket, completa los siguientes pasos:
Revisa las cuotas y los límites para asegurarte de que la ubicación nueva tenga cuotas suficientes para admitir los datos del bucket.
Determina el tipo de reubicación de bucket para comprender si se requiere un tiempo de inactividad de escritura.
Si usas informes de inventario, guarda tus parámetros de configuración.
Roles obligatorios
Para obtener los permisos necesarios para trasladar buckets de una ubicación a otra, pídele a tu administrador que te otorgue el rol de Administrador de almacenamiento (roles/storage.admin
) para el proyecto.
Este rol proporciona un conjunto de permisos que te permiten reubicar los buckets de una ubicación a otra. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
El usuario autenticado debe tener los siguientes permisos de IAM en el bucket para usar este método:
storage.buckets.relocate
storage.bucketOperations.get
Necesitas este permiso para ver el estado de la operación de reubicación del bucket.storage.bucketOperations.list
Necesitas este permiso para ver la lista de operaciones de reubicación de buckets.storage.bucketOperations.cancel
Necesitas este permiso para cancelar la operación de reubicación del bucket.
Es posible que el usuario autenticado también necesite los siguientes permisos en el bucket para usar este método:
storage.bucket.get
Necesitas este permiso para ver los metadatos de un bucket durante la prueba sin conexión y la copia de datos incremental de la operación de reubicación del bucket.storage.objects.list
ystorage.objects.get
Necesitas estos permisos para ver la lista de objetos de un bucket que deseas trasladar a otra ubicación.
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos. Para ver qué roles están asociados con qué permisos, consulta Roles de IAM para Cloud Storage.
Si deseas obtener instrucciones para otorgar roles a proyectos, consulta Administra el acceso a los proyectos.
Cómo reubicar buckets
En esta sección, se describe el proceso de reubicación de buckets de Cloud Storage de una ubicación a otra con la reubicación de buckets. Cuando trasladas un bucket, se inicia el proceso de copia de datos incremental, se supervisa y, luego, se inicia el paso de sincronización final. Para obtener más información sobre estos pasos, consulta Información sobre el proceso de reubicación de buckets.
Realiza una ejecución de prueba
Para minimizar los posibles problemas durante el proceso de reubicación del bucket, te recomendamos que realices una prueba sin conexión. Una prueba simula el proceso de reubicación del bucket sin mover los datos, lo que te ayuda a detectar y resolver problemas desde el principio. La ejecución de prueba verifica las siguientes incompatibilidades:
- Claves de encriptación administradas por el cliente (CMEK) o Claves de encriptación proporcionadas por el cliente (CSEK)
- Políticas de retención bloqueadas
- Objetos con conservaciones temporales
- Cargas multiparte
Si bien una prueba no puede identificar todos los posibles problemas, ya que algunos solo pueden surgir durante la migración en vivo debido a factores como la disponibilidad de recursos en tiempo real, reduce el riesgo de enfrentar problemas que requieren mucho tiempo durante la reubicación real.
Línea de comandos
Simula la ejecución de prueba de la reubicación de buckets:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Aquí:
BUCKET_NAME
es el nombre del bucket que deseas reubicar.LOCATION
es la ubicación de destino del bucket.
Iniciar una ejecución de prueba inicia una operación de larga duración. Recibirás un ID de operación y una descripción de la operación. Para hacer un seguimiento de la finalización de la prueba, deberás hacer un seguimiento de su progreso. Para obtener información sobre cómo hacer un seguimiento del progreso de la ejecución de prueba, consulta Obtén detalles de una operación de larga duración.
Si la prueba de validación revela algún problema, solucionándolo antes de continuar con el paso Iniciar el paso de copia de datos incremental.
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 configuración del bucket, que debe incluir los parámetros
destinationLocation
yvalidateOnly
. Consulta la documentación deBuckets: relocate
para obtener una lista completa de opciones de configuración. A continuación, se indican las opciones de configuración comunes que puedes incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Aquí:
DESTINATION_LOCATION
es la ubicación de destino del bucket.LOCATIONS
es una lista de códigos de ubicación que se usarán para la región doble configurable.validateOnly
se establece entrue
para realizar una ejecución de prueba.
Usa
cURL
para llamar a la API de 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"
Aquí:
JSON_FILE_NAME
es el nombre del archivo JSON que creaste.BUCKET_NAME
es el nombre del bucket que deseas reubicar.
Cómo iniciar la copia de datos incremental
Línea de comandos
Inicia la operación de reubicación de buckets:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Aquí:
BUCKET_NAME
es el nombre del bucket que deseas reubicar.LOCATION
es la ubicación de destino del bucket.
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 configuración del bucket. Consulta la documentación de
Buckets: relocate
para obtener una lista completa de opciones de configuración. A continuación, se indican las opciones de configuración comunes que puedes incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Aquí:
DESTINATION_LOCATION
es la ubicación de destino del bucket.LOCATIONS
es una lista de códigos de ubicación que se usarán para la región doble configurable.validateOnly
se establece enfalse
para iniciar el paso de copia de datos incremental de la reubicación del bucket.
Usa
cURL
para llamar a la API de 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"
Aquí:
JSON_FILE_NAME
es el nombre del archivo JSON que creaste.BUCKET_NAME
es el nombre del bucket que deseas reubicar.
Supervisa la copia de datos incremental
El proceso de reubicación de buckets es una operación de larga duración que se debe supervisar para ver su progreso. Puedes verificar la lista de operaciones de larga duración con regularidad para ver el estado del paso de copia de datos incremental. Para obtener información sobre cómo obtener los detalles de una operación de larga duración, enumerarla o cancelarla, consulta Cómo usar operaciones de larga duración en Cloud Storage.
En el siguiente ejemplo, se muestra el resultado generado por una operación de copia de datos incremental:
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
En la siguiente tabla, se proporciona información sobre los campos clave en el resultado que genera la operación de copia de datos incremental:
Nombre del campo | Descripción | Valores posibles |
---|---|---|
done |
Indica que se completó la operación de reubicación del bucket. | true , false |
kind |
Indica que este recurso representa una operación de almacenamiento. | |
metadata |
Proporciona información sobre la operación. | |
metadata.@type |
Indica el tipo de operación como una reubicación de bucket. | |
metadata.commonMetadata |
Metadatos comunes a todas las operaciones. | |
metadata.commonMetadata.createTime |
Es la hora en que se creó la operación de larga duración. | |
metadata.commonMetadata.endTime |
Es la hora a la que finalizó la operación de larga duración. | |
metadata.commonMetadata.progressPercent |
Es el progreso estimado de la operación de larga duración, expresado en porcentaje. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no se aplica. |
metadata.commonMetadata.requestedCancellation |
Indica si el usuario solicitó la cancelación de la operación de larga duración. | true , false |
metadata.commonMetadata.type |
Indica el tipo de operación de larga duración. | |
metadata.commonMetadata.updateTime |
Es la hora en la que se actualizó por última vez la operación de larga duración. | |
metadata.destinationLocation |
Es la ubicación de destino del bucket. | |
metadata.finalizationState |
Indica que todo está listo para iniciar el paso de sincronización final. |
|
metadata.progress |
Detalles del progreso de la operación de reubicación | |
metadata.progress.byteProgressPercent |
Es el progreso de los bytes copiados en porcentaje. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no se aplica. |
metadata.progress.discoveredBytes |
Cantidad de bytes descubiertos en el bucket de origen. | |
metadata.progress.discoveredObjectCount |
Cantidad de objetos descubiertos en el bucket de origen. | |
metadata.progress.discoveredSyncCount |
Cantidad de actualizaciones de metadatos de objetos descubiertas en el bucket de origen. | |
metadata.progress.objectProgressPercent |
Porcentaje de objetos copiados. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no se aplica. |
metadata.progress.remainingBytes |
Cantidad de bytes restantes que se deben copiar del bucket de origen al bucket de destino. | |
metadata.progress.remainingObjectCount |
Cantidad de objetos que quedan por copiar del bucket de origen al bucket de destino. | |
metadata.progress.remainingSyncCount |
Es la cantidad de actualizaciones de metadatos de objetos restantes que se deben sincronizar. | |
metadata.progress.syncProgressPercent |
Porcentaje de progreso de las actualizaciones de metadatos de objetos que se sincronizarán. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no se aplica. |
metadata.relocationState |
Estado general de la reubicación del bucket |
|
metadata.sourceLocation |
La ubicación de origen del bucket. | |
metadata.validateOnly |
Indica si se inició una ejecución de prueba de la reubicación del bucket. | true , false |
metadata.writeDowntimeExpireTime |
La hora en la que vence el tiempo de inactividad de escritura. | |
name |
Es el identificador único de esta operación de reubicación. Formato: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
La respuesta de la operación. | |
response.@type |
Es el tipo de respuesta. | |
selfLink |
Es un vínculo a esta operación. |
Es posible que tengas problemas debido a las limitaciones cuando interactúes con otras funciones de Cloud Storage. Para obtener más información sobre las limitaciones, consulta Limitaciones.
Inicia el paso de sincronización final
El paso de sincronización final implica un período en el que no puedes realizar operaciones de escritura en el bucket. Te recomendamos que programes el paso de sincronización final en un momento que minimice las interrupciones de tus aplicaciones.
Antes de continuar, verifica el valor finalizationState
en el resultado del paso supervisa el proceso de copia de datos incrementales para confirmar que el bucket esté completamente preparado. El valor de finalizationState
debe ser READY
para continuar con el paso de sincronización final.
Si inicias el paso de sincronización final antes de tiempo, el comando muestra un mensaje de error The relocate bucket operation is not ready to advance to finalization running state
, pero el proceso de reubicación continúa.
Te recomendamos que esperes hasta que el valor de progressPercent
sea 99
antes de iniciar el paso de sincronización final.
Línea de comandos
Inicia el paso de sincronización final de la operación de reubicación de bucket una vez que el valor de finalizationState
sea READY
:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Aquí:
BUCKET_NAME
es el nombre del bucket que deseas reubicar.OPERATION_ID
es el ID de la operación de larga duración, que se muestra en la respuesta de los métodos a los que llamas. Por ejemplo, se muestra la siguiente respuesta cuando se llama agcloud storage operations list
y el ID de operación de larga duración esAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Establece la marca ttl
para tener un mayor control sobre el proceso de reubicación. Por ejemplo:
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Aquí:
TTL_DURATION
es el tiempo de actividad (TTL) de la fase de tiempo de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, como 12h
para 12 horas. TTL_DURATION
determina la duración máxima permitida para la fase de tiempo de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite,
el proceso de reubicación vuelve automáticamente al paso de copia incremental
y se vuelven a habilitar las operaciones de escritura en el bucket. El valor debe estar dentro del rango de 6h
(6 horas) a 48h
(48 horas). Si no se especifica, el valor predeterminado es 12h
(12 horas).
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 configuración para la reubicación de buckets. Consulta la documentación de
Buckets: advanceRelocateBucket
para obtener una lista completa de opciones de configuración. A continuación, se indican las opciones de configuración comunes que puedes incluir:{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Aquí:
EXPIRE_TIME
es la hora en que vence el tiempo de inactividad de escritura.TTL_DURATION
es el tiempo de actividad (TTL) de la fase de tiempo de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, como12h
para 12 horas.TTL_DURATION
determina la duración máxima permitida para la fase de tiempo de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite, el proceso de reubicación vuelve automáticamente al paso de copia incremental y se vuelven a habilitar las operaciones de escritura en el bucket. El valor debe estar dentro del rango de6h
(6 horas) a48h
(48 horas). Si no se especifica, el valor predeterminado es12h
(12 horas).
Usa
cURL
para llamar a la API de 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"
Aquí:
JSON_FILE_NAME
es el nombre del archivo JSON que creaste.BUCKET_NAME
es el nombre del bucket que deseas reubicar.OPERATION_ID
es el ID de la operación de larga duración, que se muestra en la respuesta de los métodos a los que llamas. Por ejemplo, se muestra la siguiente respuesta cuando se llama aOperations: list
y el ID de operación de larga duración esAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Valida el proceso de reubicación del bucket
Después de iniciar una reubicación, verifica que se haya completado correctamente. En esta sección, se proporciona orientación para confirmar que la transferencia de datos se realizó correctamente.
Valida el éxito del proceso de reubicación con los siguientes métodos:
Sondea operaciones de larga duración: La reubicación de buckets es una operación de larga duración. Puedes sondear la operación de larga duración con
operation id
para supervisar su progreso y confirmar su finalización correcta verificando el estadosuccess
. Esto implica consultar periódicamente el estado de la operación hasta que alcance un estado final. Para obtener información sobre cómo supervisar operaciones de larga duración, consulta Usa operaciones de larga duración en Cloud Storage.Analizar las entradas de los registros de auditoría de Cloud: Los registros de auditoría de Cloud proporcionan un registro detallado de los eventos y las operaciones en tu Google Cloud entorno. Puedes analizar las entradas de los Registros de auditoría de Cloud asociadas con la reubicación para validar su éxito. Analiza los registros en busca de errores, advertencias o comportamientos inesperados que puedan indicar problemas durante la transferencia. Para obtener información sobre cómo ver los registros de auditoría de Cloud, consulta Cómo ver los registros de auditoría.
Las siguientes entradas de registro te ayudan a determinar si el traslado fue exitoso o no:
Reubicación correcta:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
No se pudo realizar la reubicación:
Relocate bucket has failed. Bucket location remains unchanged.
Con las notificaciones de Pub/Sub, también puedes configurar alertas que te notifiquen cuando aparezca el evento específico de éxito o error en los registros. Si deseas obtener información para configurar notificaciones de Pub/Sub, consulta Configura notificaciones de Pub/Sub para Cloud Storage.
Completa las tareas posteriores a la reubicación del bucket
Después de reubicar correctamente tu bucket, completa los siguientes pasos:
- Opcional: Restaura los controles de acceso basados en etiquetas en tu bucket.
- Las configuraciones existentes del informe de inventario no se conservan durante el proceso de reubicación y deberás volver a crearlas de forma manual. Para obtener información sobre cómo crear una configuración de informes de inventario, consulta Crea una configuración de informes de inventario.
- Actualiza tus configuraciones de infraestructura como código, como Terraform y el conector de configuración de Google Kubernetes Engine, para especificar la nueva ubicación del bucket.
- Los extremos regionales están vinculados a ubicaciones específicas y deberás modificar el código de tu aplicación para que refleje el nuevo extremo.
Cómo manejar operaciones de reubicación de bucket fallidas
Ten en cuenta los siguientes factores antes de controlar las operaciones de reubicación de bucket que fallaron:
Si la reubicación de un bucket falla, es posible que queden recursos obsoletos, como archivos temporales o copias de datos incompletas, en el destino. Debes esperar entre 7 y 14 días antes de iniciar otra reubicación de bucket al mismo destino. Puedes iniciar una reubicación de bucket a un destino diferente de inmediato.
Si la ubicación de destino no es la óptima para tus datos, te recomendamos que reviertas la reubicación. Sin embargo, no puedes iniciar una reubicación de inmediato. Se requiere un período de espera de hasta 14 días para que puedas volver a iniciar el proceso de traslado. Esta restricción se implementó para garantizar la estabilidad y evitar conflictos de datos.
¿Qué sigue?
- Obtén más información sobre la reubicación de buckets.