En esta página, se describe el proceso para trasladar buckets de una ubicación a otra. Para obtener información sobre la reubicación de bucket, consulta Reubicación de buckets.
Antes de comenzar
Antes de reubicar buckets, completa los siguientes pasos:
Verifica las cuotas y los límites para asegurarte de que la nueva ubicación tenga cuotas suficientes para admitir los datos del bucket.
Determina el tipo de reubicación del bucket para saber si se requiere tiempo de inactividad de escritura.
Si usas informes de inventario, guarda tus configuraciones.
Obtén los roles necesarios, que se describen en la siguiente sección.
Obtén las funciones necesarias
Para obtener los permisos que necesitas para reubicar buckets, pídele a tu administrador que te otorgue el rol de IAM Administrador de almacenamiento (roles/storage.admin
) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para reubicar buckets. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para cambiar la ubicación de los buckets:
-
Para reubicar un bucket, haz lo siguiente:
storage.buckets.relocate
-
Para ver el estado de una operación de reubicación de bucket, haz lo siguiente:
storage.bucketOperations.get
-
Para ver la lista de operaciones de reubicación de bucket de un proyecto, haz lo siguiente:
storage.bucketOperations.list
-
Para cancelar una operación de reubicación de un bucket, haz lo siguiente:
storage.bucketOperations.cancel
-
Para ver los metadatos de un bucket durante las fases de ejecución de prueba y copia de datos incremental de la reubicación del bucket, haz lo siguiente:
storage.buckets.get
-
Para obtener un objeto en un bucket que deseas reubicar, haz lo siguiente:
storage.objects.get
-
Para enumerar los objetos en un bucket que deseas reubicar, haz lo siguiente:
storage.objects.list
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Reubicar buckets
En esta sección, se describe el proceso para cambiar la ubicación de los buckets de Cloud Storage. Cuando reubicas un bucket, inicias el proceso de copia de datos incremental, lo supervisas y, luego, inicias el paso de sincronización final. Para obtener más información sobre estos pasos, consulta Información sobre el proceso de reubicación bucket 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 de validación. Una prueba de validación simula el proceso de reubicación del bucket sin mover datos, lo que te ayuda a detectar y resolver problemas de forma anticipada. 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 problemas posibles, 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 consumen mucho tiempo durante la reubicación real.
Línea de comandos
Simula la prueba de validación de la reubicación del bucket:
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.
Después de iniciar una ejecución de prueba, se inicia una operación de larga duración. Recibirás un ID de operación y una descripción de la operación. Haz un seguimiento del progreso y la finalización de la ejecución de prueba obteniendo los detalles de la operación de larga duración.
Si la prueba de validación revela algún problema, soluciónalo antes de continuar con el paso para iniciar la 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.
Después de iniciar una ejecución de prueba, se inicia una operación de larga duración. La simulación se realiza correctamente cuando se cumplen las siguientes condiciones:
- La ejecución de prueba no informa ningún error.
El recurso
operations
devuelve un valor de campodone
detrue
.{ "kind": "storage#operation", "name": "projects/_/buckets/bucket/operations/operation_id", "metadata": { "@type": OperationMetadataType*, metadata OperationMetadata* }, "done": "true", "response": { "@type": ResponseResourceType*, response ResponseResource* } }
Si la prueba de validación revela algún problema, soluciónalo antes de continuar con el paso para iniciar la copia de datos incremental.
Inicia la copia de datos incrementales
Línea de comandos
Inicia la operación de reubicación del bucket:
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 del bucket es una operación de larga duración que se debe supervisar para ver cómo avanza. Puedes consultar periódicamente la lista de operaciones de larga duración para ver el estado del paso de copia de datos incremental. Para obtener información sobre cómo obtener detalles de una operación de larga duración, enumerar o cancelar operaciones de larga duración, consulta Usa operaciones de larga duración en Cloud Storage.
En el siguiente ejemplo, se muestra el resultado que genera 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 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
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 la finalización de 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 reubicación de bucket. | |
metadata.commonMetadata |
Son los metadatos comunes a todas las operaciones. | |
metadata.commonMetadata.createTime |
Es la fecha y hora en que se creó la operación de larga duración. | |
metadata.commonMetadata.endTime |
Es la hora en 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 aplicable. |
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 fecha y hora en la que se actualizó la operación de larga duración por última vez. | |
metadata.destinationLocation |
Es la ubicación de destino del bucket. | |
metadata.finalizationState |
Indica la disponibilidad para iniciar el paso de sincronización final. |
|
metadata.progress |
Son los detalles del progreso de la operación de reubicación. | |
metadata.progress.byteProgressPercent |
Progreso de los bytes copiados en porcentaje. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no aplicable. |
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 |
Es la cantidad de actualizaciones de metadatos de objetos descubiertas en el bucket de origen. | |
metadata.progress.objectProgressPercent |
Es el progreso de los objetos copiados en porcentaje. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no aplicable. |
metadata.progress.remainingBytes |
Es la cantidad de bytes que aún se deben copiar del bucket de origen al bucket de destino. | |
metadata.progress.remainingObjectCount |
Cantidad de objetos que aún se deben 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 |
Es el progreso de las actualizaciones de metadatos de objetos que se sincronizarán, expresado en porcentaje. | Entre 0 y 100 %. Un valor de -1 significa que el progreso es desconocido o no aplicable. |
metadata.relocationState |
Es el estado general de la operación de reubicación del bucket. |
|
metadata.sourceLocation |
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.estimatedWriteDowntimeDuration |
Es la duración estimada del tiempo de inactividad de escritura. Se propaga una vez que finalizationState es READY . |
El valor mínimo es 7200s . |
metadata.writeDowntimeExpireTime |
Fecha y hora en que vence el tiempo de inactividad por escritura. | |
name |
Es el identificador único de esta operación de reubicación. Formato: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
Es la respuesta de la operación. | |
response.@type |
Es el tipo de respuesta. | |
selfLink |
Es un vínculo a esta operación. |
Si tienes problemas cuando interactúas con otras funciones de Cloud Storage, 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 en tus aplicaciones.
Antes de continuar, verifica que el bucket esté completamente preparado. Para ello, revisa el valor de finalizationState
en el resultado del paso de copia de datos incremental. El valor de finalizationState
debe ser READY
para continuar.
Si inicias el paso de sincronización final antes de tiempo, el comando devolverá un mensaje de error The relocate bucket operation is not ready to advance to finalization running state
, pero el proceso de reubicación continuará.
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 del 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) para la fase de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, por ejemplo, 12h
para 12 horas. El parámetro TTL_DURATION
determina la duración máxima permitida para la fase de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite, el proceso de reubicación volverá automáticamente al paso de copia incremental y se volverán 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 del bucket. 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 fecha y hora en que vence el tiempo de inactividad de escritura.TTL_DURATION
es el tiempo de actividad (TTL) para la fase de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, por ejemplo,12h
para 12 horas. El parámetroTTL_DURATION
determina la duración máxima permitida para la fase de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite, el proceso de reubicación volverá automáticamente al paso de copia incremental y se volverán 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 la transferencia correcta de datos.
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 que se completó correctamente 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.Analiza 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 entorno de Google Cloud . Puedes analizar las entradas de los Registros de auditoría de Cloud asociadas con la reubicación para validar su éxito. Analiza los registros para detectar errores, advertencias o comportamientos inesperados que puedan indicar problemas durante la transferencia. Para obtener información sobre cómo ver los registros de Registros de auditoría de Cloud, consulta Visualiza los registros de auditoría.
Las siguientes entradas de registro te ayudan a determinar si la migración se realizó correctamente o no:
Reubicación exitosa:
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 el evento específico de éxito o falla aparezca en los registros. Para obtener información sobre cómo configurar las notificaciones de Pub/Sub, consulta Configura las notificaciones de Pub/Sub para Cloud Storage.
Completa las tareas posteriores a la reubicación del bucket
Después de que hayas reubicado correctamente tu bucket, completa los siguientes pasos:
- Opcional: Restaura los controles de acceso basados en etiquetas en tu bucket.
- Las configuraciones existentes de los informes de inventario no se conservan durante el proceso de reubicación, por lo que 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, por lo que deberás modificar el código de tu aplicación para reflejar el nuevo extremo.
Cómo controlar las operaciones de reubicación de bucket fallidas
Ten en cuenta los siguientes factores antes de controlar las operaciones de reubicación de bucket fallidas:
Si falla la reubicación de un bucket, 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 del bucket al mismo destino. Puedes iniciar la reubicación de un bucket a otro destino de inmediato.
Si la ubicación de destino no es la óptima para tus datos, es posible que desees revertir 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 antes de que puedas volver a iniciar el proceso de reubicación. Esta restricción se aplica para garantizar la estabilidad y evitar conflictos de datos.
¿Qué sigue?
- Obtén más información sobre la reubicación de buckets.