El Servicio de transferencia de Storage puede copiar archivos de una lista de URLs públicas a tu segmento de Cloud Storage.
Cuando crea una transferencia, proporciona un enlace a un archivo de valores separados por tabulaciones (TSV) que contiene las URLs y los detalles de los objetos que se van a transferir. El archivo TSV se puede alojar en cualquier ubicación HTTP o HTTPS de acceso público, o bien se puede almacenar en un segmento de Cloud Storage.
En esta página se explica cómo crear una lista de URLs y pasarla al comando de creación de trabajos.
Requisitos de los archivos de origen
- Las URLs deben ser de acceso público y usar los protocolos HTTP o HTTPS.
- El servidor que aloja cada objeto:
- No debe denegar el acceso al objeto con un
robots.txt
. - Admite solicitudes de
Range
. - Devuelve un encabezado
Content-Length
en cada respuesta.
- No debe denegar el acceso al objeto con un
Formato de lista de URL
Una lista de URLs debe cumplir los siguientes requisitos:
- El archivo debe tener el formato de valores separados por tabulaciones.
- Las URLs deben estar en orden lexicográfico UTF-8.
- La primera línea debe especificar
TsvHttpData-1.0
. - Después de la primera línea, especifique un objeto por fila.
- Cada fila debe contener la URL y puede incluir el tamaño del archivo y la suma de comprobación MD5 codificada en Base64 del objeto.
A continuación, se muestra un archivo TSV de ejemplo que especifica dos objetos que se van a transferir. Nota: En esta página, las pestañas se representan como espacios. En tu archivo, asegúrate de usar tabulaciones entre los campos.
TsvHttpData-1.0
https://example.com/myfile.pdf 1357 wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png 2468 R9acAaveoPd2y8nniLUYbw==
Cada línea contiene lo siguiente:
- URL HTTP o HTTPS de un objeto de origen.
(Opcional) El tamaño del objeto en bytes.
Asegúrate de que el tamaño especificado coincida con el tamaño real del objeto cuando se obtenga. Si el tamaño del objeto recibido por Cloud Storage no coincide con el tamaño especificado, se producirá un error en la transferencia del objeto.
(Opcional) Suma de comprobación MD5 del objeto codificada en Base64.
Asegúrate de que la suma de comprobación MD5 especificada coincida con la suma de comprobación MD5 calculada a partir de los bytes transferidos. Si la suma de comprobación MD5 del objeto recibido por Cloud Storage no coincide con la suma de comprobación MD5 especificada, se producirá un error en la transferencia del objeto.
Aunque los valores del tamaño del objeto y de la suma de comprobación MD5 son opcionales, le recomendamos que los incluya para ayudar a asegurar la integridad de los datos.
Alojar la lista de URLs
La lista de URLs se puede alojar en una de estas dos ubicaciones:
- Una URL de acceso público.
Un segmento de Cloud Storage al que se le haya concedido acceso al agente de servicio del Servicio de transferencia de Storage.
URLs de acceso público
Si almacena la lista de URLs en una URL de acceso público, debe cumplir los siguientes requisitos:
- La URL debe empezar por
http://
ohttps://
. - El servidor debe definir una cabecera
Etag
segura en la respuesta HTTP cuando devuelva la lista de URLs.
Por ejemplo, puedes almacenar la lista en un segmento de Cloud Storage y compartir el objeto públicamente para obtener un enlace a él.
Segmentos de Cloud Storage
Para evitar que tu lista se almacene en una ubicación pública, puedes guardarla en un segmento de Cloud Storage y conceder acceso al agente de servicio del Servicio de transferencia de Storage.
El agente de servicio debe tener los siguientes permisos:
- El permiso
storage.object.get
del objeto. Para ello, se puede asignar el rolroles/storage.legacyObjectReader
al contenedor o usar un rol personalizado. - El permiso
storage.buckets.get
en el segmento. Se puede conceder asignando el rolroles/storage.legacyBucketReader
o con un rol personalizado.
Para conceder permisos al agente de servicio, sigue estos pasos:
Buscar el correo del agente de servicio
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo titulado Prueba este método.
En el panel, en Parámetros de solicitud, introduce tu ID de proyecto. El proyecto que especifiques aquí debe ser el que utilices para gestionar el Servicio de transferencia de Storage, que puede ser diferente del proyecto del segmento de la lista de URLs.
Haz clic en la opción para ejecutar.
El correo de tu agente de asistencia se devuelve como el valor de accountEmail
y usa el formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Copia este valor.
Concede los roles necesarios
Para conceder los roles roles/storage.objectViewer
y roles/storage.bucketViewer
al agente de servicio en el segmento que contiene la lista de URLs, sigue las instrucciones que se indican en el artículo Definir y gestionar políticas de IAM en segmentos.
El principal que vas a añadir es la dirección de correo del agente de servicio. Si es necesario, el identificador principal es serviceAccount
. Por ejemplo, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Crear una tarea de transferencia de lista de URLs
Para especificar una lista de URLs al crear un trabajo de transferencia, siga estas instrucciones:
Google Cloud consola
Sigue las instrucciones de Crear una tarea de transferencia.
Al elegir una fuente, ten en cuenta lo siguiente:
En Tipo de fuente, seleccione Lista de URLs y haga clic en Paso siguiente.
En URL of TSV file (URL de archivo TSV), indique la URL de su archivo de valores separados por tabulaciones (TSV). La URL es una dirección HTTP o HTTPS (por ejemplo,
https://example.com/urllist.tsv
) o una ruta de Cloud Storage (por ejemplo,gs://my-bucket/urllist.tsv
).
CLI de gcloud
Para crear una tarea de transferencia, usa el comando gcloud transfer jobs create
.
gcloud transfer jobs create \
SOURCE DESTINATION
En el caso de las transferencias de listas de URLs, el valor de SOURCE es la URL del archivo TSV. La URL es una dirección HTTP o HTTPS (por ejemplo, https://example.com/urllist.tsv
) o una ruta de Cloud Storage (por ejemplo, gs://my-bucket/urllist.tsv
).
Para obtener más información sobre cómo crear transferencias con la CLI de gcloud, consulta Crear tareas de transferencia.
REST
Para crear un trabajo de transferencia de lista de URLs mediante la API REST, especifica la URL del archivo TSV en el campo listUrl
:
{
"projectId": "PROJECT_ID",
"transferSpec": {
"httpDataSource": {
"listUrl": "URL"
},
"gcsDataSink": {
"bucketName": "DESTINATION_BUCKET"
}
},
"status": "ENABLED"
}
El valor de URL es una dirección HTTP o HTTPS (por ejemplo, https://example.com/urllist.tsv
) o una ruta de Cloud Storage (por ejemplo, gs://my-bucket/urllist.tsv
).
Para obtener más información sobre cómo crear transferencias con la API REST, consulta la referencia de la API REST.