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.
- Ne doit pas refuser l'accès à l'objet avec un
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://
ouhttps://
. - 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ôleroles/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ôleroles/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
Accédez à la page de référence
googleServiceAccounts.get
.Un panneau interactif s'affiche, intitulé Essayer cette méthode.
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.
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:
Sous Type de source, sélectionnez Liste d'URL, puis cliquez sur Étape suivante.
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.