Transferir datos de URLs públicas a Cloud Storage

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.

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:// o https://.
  • 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 rol roles/storage.legacyObjectReader al contenedor o usar un rol personalizado.
  • El permiso storage.buckets.get en el segmento. Se puede conceder asignando el rol roles/storage.legacyBucketReader o con un rol personalizado.

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

Buscar el correo del agente de servicio

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

    Se abrirá un panel interactivo titulado Prueba este método.

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

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

  1. En Tipo de fuente, seleccione Lista de URLs y haga clic en Paso siguiente.

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