El Servicio de transferencia de almacenamiento puede copiar archivos de una lista de URLs públicas a tu bucket de Cloud Storage.
Cuando creas una transferencia, proporcionas un vínculo a un archivo de valores separados por tabulaciones (TSV) que contiene las URLs y los detalles de los objetos que se transferirán. El archivo TSV se puede alojar en cualquier ubicación HTTP o HTTPS de acceso público, o bien se puede almacenar en un bucket 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
Range
- Devuelve un encabezado
Content-Length
en cada respuesta.
- No debe denegar el acceso al objeto con un
Formato de listas de URL
Una lista de URLs debe cumplir con 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, especifica un objeto por fila.
- Cada fila debe contener la URL y también puede contener el tamaño del archivo y la suma de comprobación MD5 codificada en base64 del objeto.
El siguiente es un archivo TSV de muestra que especifica dos objetos para transferir. Ten en cuenta que, en esta página, las tabulaciones se renderizan como espacios. En tu propio archivo, asegúrate de usar tabulaciones entre 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:
- La URL HTTP o HTTPS de un objeto de origen.
Es el tamaño del objeto en bytes (opcional).
Asegúrese de que el tamaño especificado coincida con el tamaño real del objeto cuando se recupera. Si el tamaño del objeto recibido por Cloud Storage no coincide con el tamaño especificado, la transferencia del objeto fallará.
La suma de comprobación MD5 codificada en base64 del objeto (opcional).
Asegúrese de que la suma de verificación MD5 especificada coincida con la suma de verificación MD5 calculada a partir de los bytes transferidos. Si la suma de verificación MD5 del objeto recibido por Cloud Storage no coincide con la suma de verificación MD5 especificada, la transferencia del objeto fallará.
Si bien el tamaño del objeto y los valores de la suma de comprobación MD5 son opcionales, te recomendamos que los incluyas para garantizar la integridad de los datos.
Cómo alojar la lista de URLs
La lista de URLs se puede alojar en una de las siguientes ubicaciones:
- Una URL de acceso público
Un bucket de Cloud Storage al que se le otorgó acceso al agente de servicio del Servicio de transferencia de almacenamiento
URLs de acceso público
Cuando almacenas la lista de URLs en una URL de acceso público, se aplican los siguientes requisitos:
- La URL debe comenzar con
http://
ohttps://
. - El servidor debe establecer un encabezado
Etag
sólido en la respuesta HTTP cuando muestra la lista de URL.
Por ejemplo, puedes almacenar la lista en un bucket de Cloud Storage y compartir el objeto de forma pública para obtener un vínculo a él.
Depósitos de Cloud Storage
Para evitar almacenar tu lista en una ubicación pública, puedes almacenarla en un bucket de Cloud Storage y otorgar acceso al agente de servicio del Servicio de transferencia de almacenamiento.
Se deben otorgar los siguientes permisos al agente de servicio:
- El permiso
storage.object.get
en el objeto. Para ello, otorga el rolroles/storage.legacyObjectReader
en el bucket o con un rol personalizado. - El permiso
storage.buckets.get
en el bucket. Para otorgar este permiso, se puede otorgar el rolroles/storage.legacyBucketReader
o un rol personalizado.
Para otorgar permisos al agente de servicio, haz lo siguiente:
Busca el correo electrónico del agente de servicio
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de solicitud, ingresa el ID de tu proyecto. El proyecto que especifiques aquí debe ser el proyecto que usas para administrar el Servicio de transferencia de almacenamiento, que puede ser diferente del proyecto del bucket de la lista de URLs.
Haz clic en Ejecutar.
El correo electrónico del agente de servicio se muestra como el valor de accountEmail
y usa el formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Copia este valor.
Otorga los roles necesarios
Para otorgar el rol roles/storage.objectViewer
y el rol roles/storage.bucketViewer
al agente de servicio en el bucket que contiene la lista de URLs, sigue las instrucciones que se indican en Configura y administra políticas de IAM en buckets.
El principal que agregas es la dirección de correo electrónico del agente de servicio. Si es necesario, el identificador principal es serviceAccount
. Por ejemplo, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
Crea un trabajo de transferencia de lista de URLs
Para especificar una lista de URLs cuando creas un trabajo de transferencia, sigue estas instrucciones:
Consola de Google Cloud
Sigue las instrucciones en Crea un trabajo de transferencia.
Cuando elijas una fuente, ten en cuenta lo siguiente:
En Tipo de fuente, selecciona Lista de URL y haz clic en Siguiente paso.
En URL de archivo TSV, proporciona la URL a tu archivo de valores separados por tabulaciones (TSV). La URL es una dirección HTTP/HTTPS (p.ej.,
https://example.com/urllist.tsv
) o una ruta de acceso de Cloud Storage (p.ej.,gs://my-bucket/urllist.tsv
).
gcloud CLI
Para crear un nuevo trabajo 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/HTTPS (p.ej., https://example.com/urllist.tsv
) o una ruta de acceso de Cloud Storage (p.ej., gs://my-bucket/urllist.tsv
).
Para obtener más información sobre cómo crear transferencias con gcloud CLI, consulta Cómo crear trabajos de transferencia.
REST
Para crear una tarea de transferencia de lista de URLs con la API de 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/HTTPS (p.ej., https://example.com/urllist.tsv
) o una ruta de acceso de Cloud Storage (p.ej., gs://my-bucket/urllist.tsv
).
Para obtener más detalles sobre cómo crear transferencias con la API de REST, consulta la referencia de la API de REST.