Cómo transferir buckets con espacio de nombres jerárquico de Cloud Storage

El espacio de nombres jerárquico de Cloud Storage almacena datos en una estructura de sistema de archivos lógico con carpetas para organizar los objetos. Para obtener más información, consulta Espacio de nombres jerárquico.

El Servicio de transferencia de almacenamiento puede transferir datos desde y hacia buckets de Cloud Storage que usan espacio de nombres jerárquico. Para transferir correctamente las carpetas y los metadatos de las carpetas, se deben otorgar permisos adicionales al agente de servicio del Servicio de transferencia de almacenamiento.

Permisos necesarios

Además de los permisos estándar necesarios para una transferencia, al agente de servicio del Servicio de transferencia de almacenamiento se le deben otorgar los siguientes permisos de IAM.

Cuando la fuente es un bucket con espacio de nombres jerárquico, haz lo siguiente:

  • storage.folders.list en el bucket de origen. Este permiso se incluye en el rol de visualizador de objetos de almacenamiento (roles/storage.objectViewer) que es obligatorio para todas las transferencias. No se requiere ningún rol adicional.

Cuando el destino es un bucket con espacio de nombres jerárquico, haz lo siguiente:

  • storage.folders.create en el bucket de destino. Este permiso se incluye en el rol de usuario de objetos de almacenamiento (roles/storage.objectUser). Otorga este rol además de los roles que se indican en Permisos de transferencia sin agente.

Para obtener instrucciones sobre cómo agregar roles al agente de servicio, consulta los siguientes artículos:

Comportamiento de transferencia

Cuando se transfiere entre dos buckets de espacio de nombres jerárquicos, ocurre lo siguiente:

  • Se transfieren los objetos y los metadatos de los objetos.
  • Se transfieren las carpetas y sus metadatos.
  • No se admite la eliminación de carpetas en la fuente o el destino.

Cuando se transfiere de un bucket con espacio de nombres jerárquico a un bucket con espacio de nombres plano, ocurre lo siguiente:

  • Se transfieren los objetos y los metadatos de los objetos.
  • Las carpetas se transfieren como prefijos de objetos. Por ejemplo, object1 en folderA se transfiere al destino como folderA/object1.
  • No se transfieren los metadatos de las carpetas.
  • No se admite la eliminación de carpetas en la fuente.

Cuando transfieras datos de un bucket con espacio de nombres plano a un bucket con espacio de nombres jerárquico, ten en cuenta lo siguiente:

  • Se transfieren los objetos y los metadatos de los objetos.
  • Los prefijos de objetos se usan para crear las carpetas que faltan. Por ejemplo, cuando se transfiere folderA/object1, el Servicio de transferencia de almacenamiento crea una carpeta nueva llamada folderA y transfiere object1 a esa carpeta.
  • No se admite la eliminación de carpetas en el receptor.