Transférer des URL publiques vers Cloud Storage

Le service de transfert de stockage peut copier des fichiers d'une liste d'URL publiques vers votre bucket Cloud Storage.

Lorsque vous créez un transfert, vous fournissez un lien vers un fichier de valeurs séparées par une tabulation (TSV) contenant les URL et les détails des objets à transférer. Le fichier TSV peut être hébergé dans n'importe quel emplacement HTTP ou HTTPS accessible au public, ou stocké dans un bucket Cloud Storage.

Cette page explique comment créer une liste d'URL et la transmettre à la commande de création de job.

Exigences relatives aux fichiers sources

  • Les URL doivent être accessibles publiquement et utiliser les protocoles HTTP ou HTTPS.
  • Le serveur hébergeant chaque objet :
    • Ne doit pas refuser l'accès à l'objet avec un robots.txt.
    • Est compatible avec les requêtes Range
    • Renvoie un en-tête Content-Length dans chaque réponse.

Format de liste d'URL

Une liste d'URL doit respecter les exigences suivantes :

  • Le fichier doit être au format TSV (valeurs séparées par une tabulation).
  • Les URL doivent être dans l'ordre lexicographique UTF-8.
  • La première ligne doit spécifier TsvHttpData-1.0.
  • Après la première ligne, spécifiez un objet par ligne.
  • Chaque ligne doit contenir l'URL, et peut également contenir la taille du fichier et la somme de contrôle MD5 de l'objet encodée en base64.

Voici un exemple de fichier TSV qui spécifie deux objets à transférer. Notez que sur cette page, les tabulations sont affichées sous forme d'espaces. Pour votre propre fichier, veillez à utiliser des tabulations entre les champs.

TsvHttpData-1.0
https://example.com/myfile.pdf    1357    wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png    2468    R9acAaveoPd2y8nniLUYbw==

Chaque ligne contient les éléments suivants :

  • L'URL HTTP ou HTTPS d'un objet source.
  • (Facultatif) Taille de l'objet en octets.

    Assurez-vous que la taille spécifiée correspond à la taille réelle de l'objet lors de son extraction. Si la taille de l'objet reçu par Cloud Storage ne correspond pas à la taille spécifiée, le transfert de l'objet échouera.

  • (Facultatif) Somme de contrôle MD5 de l'objet encodée en base64.

    Assurez-vous que la somme de contrôle MD5 spécifiée correspond à celle calculée à partir des octets transférés. Si la somme de contrôle MD5 de l'objet reçu par Cloud Storage ne correspond pas à celle spécifiée, le transfert de l'objet échouera.

Bien que la taille de l'objet et les valeurs de somme de contrôle MD5 soient facultatives, nous vous recommandons vivement de les inclure pour garantir l'intégrité des données.

Héberger la liste d'URL

La liste d'URL peut être hébergée à l'un des deux emplacements suivants :

  • URL accessible au public.
  • Un bucket Cloud Storage auquel l'agent de service du service de transfert de stockage a été autorisé à accéder.

URL accessibles au public

Lorsque vous stockez la liste d'URL à une URL accessible publiquement, les exigences suivantes s'appliquent :

  • L'URL doit commencer par http:// ou https://.
  • Le serveur doit définir un en-tête Etag fort dans la réponse HTTP lorsqu'il renvoie la liste d'URL.

Par exemple, vous pouvez stocker la liste dans un bucket Cloud Storage et partager l'objet publiquement pour obtenir un lien vers celui-ci.

Buckets Cloud Storage

Pour éviter de stocker votre liste dans un emplacement public, vous pouvez la stocker dans un bucket Cloud Storage et accorder l'accès à l'agent de service du service de transfert de stockage.

L'agent de service doit disposer des autorisations suivantes :

  • L'autorisation storage.objects.get sur l'objet. Pour ce faire, vous pouvez attribuer le rôle roles/storage.objectViewer sur le bucket ou utiliser un rôle personnalisé.
  • L'autorisation storage.buckets.get sur le bucket. Pour ce faire, vous pouvez attribuer le rôle roles/storage.legacyBucketReader ou un rôle personnalisé.

Pour accorder des autorisations à l'agent de service :

Rechercher l'adresse e-mail de l'agent de service

  1. Accédez à la page de référence googleServiceAccounts.get.

    Un panneau interactif s'affiche, intitulé Essayer cette méthode.

  2. Dans le panneau, sous Paramètres des requêtes, saisissez votre ID de projet. Le projet que vous spécifiez ici doit être le projet que vous utilisez pour gérer le service de transfert de stockage, qui peut être différent du projet du bucket de la liste d'URL.

  3. Cliquez sur Exécuter.

L'adresse e-mail de votre agent de service est renvoyée en tant que valeur de accountEmail et utilise le format project-PROJECT_NUMBER@storage-transfer-service..

Copiez cette valeur.

Attribuer les rôles requis

Pour attribuer les rôles roles/storage.objectViewer et roles/storage.legacyBucketReader à l'agent de service sur le bucket contenant la liste d'URL, suivez les instructions de la section Définir et gérer des stratégies IAM sur des buckets.

Le compte principal que vous ajoutez est l'adresse e-mail de l'agent de service. Si nécessaire, l'identifiant du compte principal est serviceAccount. Exemple : serviceAccount:project-PROJECT_NUMBER@storage-transfer-service..

Créer un job de transfert de liste d'URL

Pour spécifier une liste d'URL lors de la création d'un job de transfert, procédez comme suit :

Console Google Cloud

Suivez les instructions de la section Créer un job de transfert.

Lorsque vous choisissez une source :

  1. Sous Type de source, sélectionnez Liste d'URL, puis cliquez sur Étape suivante.

  2. Sous URL du fichier TSV, spécifiez l'URL de votre fichier de valeurs séparées par une tabulation (TSV). L'URL est une adresse HTTP/HTTPS (par exemple, https://example.com/urllist.tsv) ou un chemin d'accès Cloud Storage (par exemple, gs://my-bucket/urllist.tsv).

gcloud CLI

Pour créer une tâche de transfert, utilisez la commande gcloud transfer jobs create.

gcloud transfer jobs create \
  SOURCE DESTINATION

Pour les transferts de listes d'URL, la valeur de SOURCE est l'URL du fichier TSV. L'URL est une adresse HTTP/HTTPS (par exemple, https://example.com/urllist.tsv) ou un chemin d'accès Cloud Storage (par exemple, gs://my-bucket/urllist.tsv).

Pour en savoir plus sur la création de transferts à l'aide de la gcloud CLI, consultez Créer des jobs de transfert.

REST

Pour créer un job de transfert de liste d'URL à l'aide de l'API REST, spécifiez l'URL du fichier TSV dans le champ listUrl :

{
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "httpDataSource": {
      "listUrl": "URL"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

La valeur de URL est une adresse HTTP/HTTPS (par exemple, https://example.com/urllist.tsv) ou un chemin d'accès Cloud Storage (par exemple, gs://my-bucket/urllist.tsv).

Pour en savoir plus sur la création de transferts à l'aide de l'API REST, consultez la documentation de référence de l'API REST.