Transférer des URL publiques vers Cloud Storage

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

Lorsque vous créez un transfert, vous fournissez un lien vers un fichier TSV (valeurs séparées par des tabulations) contenant les URL et les informations des objets à transférer. Le fichier TSV peut être hébergé à 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 tâche.

Exigences concernant les fichiers sources

  • Les URL doivent être accessibles au public 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 valeurs séparées par des tabulations.
  • Les URL doivent être triées 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 encodée en base64 de l'objet.

Voici un exemple de fichier TSV spécifiant 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 encodée en base64 de l'objet.

    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 dans l'un des deux emplacements suivants:

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

Lorsque vous stockez la liste d'URL sur une URL accessible au public, les conditions 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.

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 pour le service de transfert de stockage.

L'agent de service doit disposer des autorisations suivantes:

  • Autorisation storage.object.get sur l'objet. Pour ce faire, attribuez le rôle roles/storage.legacyObjectReader au bucket ou utilisez un rôle personnalisé.
  • Autorisation storage.buckets.get sur le bucket. Cette autorisation peut être accordée en attribuant 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 de requête, saisissez l'ID de votre 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 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.iam.gserviceaccount.com.

Copiez cette valeur.

Attribuer les rôles requis

Pour attribuer le rôle roles/storage.objectViewer et le rôle roles/storage.bucketViewer à 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 principal est serviceAccount. Exemple : serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

Créer une tâche de transfert de liste d'URL

Pour spécifier une liste d'URL lorsque vous créez une tâche de transfert, procédez comme suit:

Suivez les instructions de la section Créer une tâche 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 des tabulations (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 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 correspond à 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 gcloud CLI, consultez la section Créer des tâches de transfert.

Pour créer une tâche 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.