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

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:// o https://.
  • 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 rol roles/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 rol roles/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

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

  3. 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:

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

  2. 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.