Cómo transferir desde URLs públicas a Cloud Storage

El Servicio de transferencia de almacenamiento puede copiar archivos de una lista de URLs públicas en tu bucket de Cloud Storage.

Cuando creas una transferencia, proporcionas un vínculo a un archivo de valores delimitados 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 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 debe cumplir con los siguientes requisitos:
    • No debe denegar el acceso al objeto con un robots.txt.
    • Admite solicitudes Range
    • Devuelve un encabezado Content-Length en cada respuesta.

Formato de listas de URL

Una lista de URLs debe cumplir con los siguientes requisitos:

  • El archivo debe tener el formato de valores delimitados por tabulaciones.
  • Las URLs deben estar en orden lexicográfico UTF-8.
  • En la primera línea, se debe especificar TsvHttpData-1.0.
  • Después de la primera línea, especifica un objeto por fila.
  • Cada fila debe contener la URL y, además, puede contener 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 para transferir. Ten en cuenta que, en esta página, las pestañas se renderizan como espacios. En tu propio archivo, asegúrate de usar pestañas 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:

  • 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á.

  • Opcional: Es la suma de comprobación MD5 codificada en Base64 del objeto.

    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 los valores de tamaño del objeto y suma de comprobación MD5 son opcionales, te recomendamos incluirlos para garantizar la integridad de los datos.

Alojar la lista de URLs

La lista de URLs se puede alojar en una de las siguientes dos 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 almacenes la lista de URLs en una URL de acceso público, se aplicarán los siguientes requisitos:

  • La URL debe comenzar con http:// o https://.
  • El servidor debe establecer un encabezado Etag sólido en la respuesta HTTP cuando devuelve la lista de URLs.

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.

Buckets 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.objects.get en el objeto. Esto se puede otorgar asignando el rol roles/storage.objectViewer en el bucket o con un rol personalizado.
  • El permiso storage.buckets.get en el bucket. Esto se puede otorgar con el rol roles/storage.legacyBucketReader o con un rol personalizado.

Para otorgar permisos al agente de servicio, sigue estos pasos:

Busca el correo electrónico del agente de servicio

  1. Ve a la página de referencia de googleServiceAccounts.get.

    Se abrirá un panel interactivo con el título Prueba este método.

  2. En el panel, en Parámetros de solicitud, ingresa el ID del proyecto. El proyecto que especifiques aquí debe ser el que usas para administrar el Servicio de transferencia de almacenamiento, que puede ser diferente del proyecto del bucket de la lista de URLs.

  3. Haz clic en Ejecutar.

El correo electrónico del agente de servicio se devuelve como el valor de accountEmail y usa el formato project-PROJECT_NUMBER@storage-transfer-service..

Copia este valor.

Otorga los roles necesarios

Para otorgar el rol roles/storage.objectViewer y el rol roles/storage.legacyBucketReader 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.

La principal que estás agregando 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..

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 que se indican en Crea un trabajo de transferencia.

Cuando elijas una fuente, ten en cuenta lo siguiente:

  1. En Tipo de fuente, selecciona Lista de URL y haz clic en Siguiente paso.

  2. En la URL de archivo TSV, proporciona la URL a tu archivo de valores delimitados 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

Para 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 Crea trabajos de transferencia.

REST

Para crear un trabajo 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.