El Servicio de transferencia de almacenamiento admite la transferencia de archivos u objetos específicos, que se especifican con un manifiesto. Un manifiesto es un archivo CSV que se sube a Cloud Storage y que contiene una lista de archivos u objetos sobre los que el Servicio de transferencia de almacenamiento realizará acciones.
Se puede usar un manifiesto para las siguientes transferencias:
Desde AWS S3, almacenamiento compatible con S3, Azure Blobstore o Cloud Storage a un bucket de Cloud Storage
De un sistema de archivos a un bucket de Cloud Storage
Desde un bucket de Cloud Storage a un sistema de archivos
Entre dos sistemas de archivos
Desde una fuente HTTP/HTTPS de acceso público a un bucket de Cloud Storage. Sigue las instrucciones que se indican en Cómo crear una lista de URLs, ya que el formato del manifiesto es único para las listas de URLs.
Crea un manifiesto
Los archivos de manifiesto tienen los siguientes requisitos:
- Los manifiestos deben tener formato CSV.
- Pueden contener cualquier carácter UTF-8.
- La primera columna debe ser un nombre de archivo o de objeto. El nombre es relativo a la ruta de acceso raíz o al bucket y la carpeta especificados en el trabajo de transferencia. Consulta Transferencias del sistema de archivos y Transferencias de almacenamiento de objetos para obtener más detalles.
- Los archivos de manifiesto no admiten comodines. No se admiten nombres de carpetas sin un nombre de archivo o de objeto.
- Si un nombre de archivo o de objeto contiene una coma, el nombre debe estar entre comillas dobles. Por ejemplo,
"doe,john.txt"
. - En el caso de las transferencias que usan agentes de transferencia (es decir, transferencias del sistema de archivos o transferencias desde almacenamiento compatible con S3), el tamaño máximo del archivo de manifiesto es de 1 GiB, lo que se traduce en aproximadamente 1 millón de filas. Si tu archivo de manifiesto supera 1 GiB, puedes dividirlo en varios archivos y ejecutar varios trabajos de transferencia. En el caso de las transferencias sin agente, no hay límite para el tamaño del archivo de manifiesto.
Te recomendamos que pruebes la transferencia con un pequeño subconjunto de archivos u objetos para evitar llamadas a la API innecesarias debido a errores de configuración.
Puedes supervisar el estado de las transferencias de archivos desde la página Trabajos de transferencia. Los archivos o los objetos que no se pueden transferir se muestran en los registros de transferencia.
Transferencias del sistema de archivos
Para crear un manifiesto de archivos en un sistema de archivos, crea un archivo CSV con una sola columna que contenga las rutas de acceso a archivos relativas al directorio raíz especificado en la creación del trabajo de transferencia.
Por ejemplo, para transferir los siguientes archivos del sistema de archivos:
Ruta de acceso al archivo |
---|
rootdir/dir1/subdir1/file1.txt |
rootdir/file2.txt |
rootdir/dir2/subdir1/file3.txt |
Tu manifiesto debería verse como el siguiente ejemplo:
dir1/subdir1/file1.txt
file2.txt
dir2/subdir1/file3.txt
Guarda el archivo de manifiesto con cualquier nombre de archivo y una extensión .csv
.
Transferencias de almacenamiento de objetos
Para crear un manifiesto de objetos, crea un archivo CSV cuya primera columna contenga los nombres de los objetos relacionados con el nombre y la ruta de acceso del bucket especificados en la creación del trabajo de transferencia. Todos los objetos deben estar en el mismo bucket.
También puedes especificar una segunda columna opcional con el número de generación de Cloud Storage de la versión específica que se transferirá.
Por ejemplo, es posible que desees transferir los siguientes objetos:
Ruta de acceso del objeto | Número de generación de Cloud Storage |
---|---|
SOURCE_PATH/object1.pdf |
1664826685911832 |
SOURCE_PATH/object2.pdf |
|
SOURCE_PATH/object3.pdf |
1664826610699837 |
Tu manifiesto debería verse como el siguiente ejemplo:
object1.pdf,1664826685911832
object2.pdf
object3.pdf,1664826610699837
Guarda el archivo de manifiesto con cualquier nombre de archivo y una extensión .csv
.
Transferencias HTTP/HTTPS
Para transferir archivos específicos desde una fuente HTTP o HTTPS, consulta las instrucciones en Crea una lista de URLs.
Publica el manifiesto
Una vez que hayas creado el manifiesto, debes ponerlo a disposición del Servicio de transferencia de almacenamiento. El Servicio de transferencia de almacenamiento puede acceder al archivo en un bucket de Cloud Storage o en tu sistema de archivos.
Sube el manifiesto a Cloud Storage
Puedes almacenar el archivo de manifiesto en cualquier bucket de Cloud Storage.
El agente de servicio que ejecuta la transferencia debe tener el permiso storage.objects.get
para el bucket que contiene el manifiesto. Consulta Otorga los permisos necesarios para obtener instrucciones sobre cómo encontrar el ID del agente de servicio y otorgarle permisos en un bucket.
Para obtener instrucciones sobre cómo subir el manifiesto a un bucket, consulta Carga objetos en la documentación de Cloud Storage.
Por ejemplo, para usar la CLI de gcloud
y subir un archivo a Cloud Storage, usa el comando gcloud storage cp
:
gcloud storage cp MANIFEST.CSV gs://DESTINATION_BUCKET_NAME/
Aquí:
MANIFEST.CSV
es la ruta local a tu archivo de manifiesto. Por ejemplo,Desktop/manifest01.csv
DESTINATION_BUCKET_NAME
es el nombre del bucket al que subes el objeto. Por ejemplo,my-bucket
Si se ejecuta de forma correcta, la respuesta se parece al siguiente ejemplo:
Completed files 1/1 | 164.3kiB/164.3kiB
Puedes encriptar un manifiesto con claves de encriptación de Cloud KMS administradas por el cliente. En este caso, asegúrate de que cualquier cuenta de servicio que acceda al manifiesto tenga asignadas las claves de encriptación aplicables. No se admiten las claves proporcionadas por el cliente.
Almacena el manifiesto en un sistema de archivos
Puedes almacenar el archivo de manifiesto en el sistema de archivos de origen o destino.
Los agentes de transferencia deben poder acceder a la ubicación del archivo. Si restringes el acceso al directorio de tus agentes, asegúrate de que el archivo de manifiesto se encuentre dentro de un directorio montado.
Cómo iniciar una transferencia
No modifiques el archivo de manifiesto hasta que se complete una operación de transferencia. Te recomendamos que bloquees el archivo de manifiesto mientras se realiza una transferencia.
Consola de Cloud
Para iniciar una transferencia con un manifiesto desde la consola de Cloud, sigue estos pasos:
Sigue las instrucciones en Crea transferencias para seleccionar tu fuente, destino y opciones.
En el paso final, Choose settings, selecciona la casilla de verificación llamada Provide list of files to transfer via manifest file.
Ingresa la ubicación del archivo de manifiesto.
gcloud
Para transferir los archivos o los objetos que se enumeran en el manifiesto, incluye la marca --manifest-file=MANIFEST_FILE
con el comando gcloud transfer jobs create
.
gcloud transfer jobs create SOURCE DESTINATION \
--manifest-file=MANIFEST_FILE
MANIFEST_FILE puede ser cualquiera de los siguientes valores:
La ruta de acceso al archivo CSV en un bucket de Cloud Storage:
--manifest-file=gs://my_bucket/sample_manifest.csv
Consulta Cómo subir el manifiesto a Cloud Storage para obtener detalles sobre los permisos necesarios si el bucket o el archivo no son públicos.
Ruta de acceso relativa desde el sistema de archivos SOURCE, incluida cualquier ruta de acceso que se haya especificado:
--manifest-file=source://relative_path/sample_manifest.csv
Ruta de acceso relativa desde el sistema de archivos DESTINATION, incluida cualquier ruta de acceso que se haya especificado:
--manifest-file=destination://relative_path/sample_manifest.csv
REST y bibliotecas cliente
REST
Para transferir los archivos o los objetos que se enumeran en el manifiesto, realiza una llamada a la API de createTransferJob
que especifique un transferSpec
con el campo transferManifest
agregado. Por ejemplo:
POST https://storagetransfer.googleapis.com/v1/transferJobs ... "transferSpec": { "posixDataSource": { "rootDirectory": "/home/", }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME", "path": "GCS_SINK_PATH", }, "transferManifest": { "location": "gs://my_bucket/sample_manifest.csv" } }
El archivo de manifiesto se puede almacenar en un bucket de Cloud Storage o en el sistema de archivos de origen o destino. Los buckets de Cloud Storage deben usar el prefijo gs://
y deben incluir la ruta de acceso completa, incluido el nombre del bucket. Las ubicaciones del sistema de archivos deben usar un prefijo source://
o destination://
, y son relativas al origen o destino del sistema de archivos, y al directorio raíz opcional.
Go
Java
Node.js
Python
Los objetos o archivos del manifiesto no se transfieren necesariamente en el orden indicado.
Si el manifiesto incluye archivos que ya existen en el destino, se omitirán, a menos que se especifique la opción overwrite objects already existing in sink.
Si el manifiesto incluye objetos que existen en una versión diferente en el destino, el objeto del destino se reemplaza por la versión de origen del objeto. Si el destino es un bucket con versiones, se crea una versión nueva del objeto.
¿Qué sigue?
- Obtén información sobre cómo filtrar objetos de transferencias.
- Obtén más información para programar trabajos de transferencia.