Transférer des fichiers ou des objets spécifiques à l'aide d'un fichier manifeste

Cette page explique comment créer un fichier manifeste pour des objets ou des fichiers spécifiques que vous souhaitez transférer. Un fichier manifeste est un objet Cloud Storage au format CSV qui contient une liste de fichiers ou d'objets sur laquelle le service de transfert de stockage peut agir. Les fichiers manifestes vous permettent de :

  • transférer une liste spécifique de fichiers d'un système de fichiers POSIX vers un bucket Cloud Storage ;
  • transférer une liste spécifique d'objets d'un bucket Cloud Storage vers un système de fichiers POSIX ;
  • transférer une liste spécifique d'objets depuis AWS S3, Azure Blobstore ou Cloud Storage vers un bucket Cloud Storage.

Lorsque vous spécifiez un fichier manifeste dans createTransferJob, seuls les fichiers ou objets répertoriés dans le fichier manifeste sont transférés.

Créer un fichier manifeste de fichiers ou d'objets pour un transfert

Les fichiers manifestes doivent être au format CSV et peuvent contenir n'importe quels caractères UTF-8. La première colonne doit être un chemin d'accès de fichier ou un nom d'objet spécifié sous forme de chaîne. Nous vous recommandons de tester le transfert avec un petit sous-ensemble de fichiers ou d'objets afin d'éviter de perdre un grand nombre d'appels d'API en raison d'erreurs de configuration.

Vous pouvez surveiller l'état des transferts de fichiers depuis la page Tâches de transfert. Les fichiers ou objets dont le transfert échoue sont répertoriés dans les journaux de transfert.

Fichier manifeste de fichiers

Pour créer un fichier manifeste de fichiers à partir d'un système de fichiers POSIX afin de transférer ces fichiers vers Cloud Storage, créez un fichier CSV avec une seule colonne contenant les chemins de fichiers relatifs à root_directory dans createTransferJob.

Exemple de fichier manifeste de fichiers

Un fichier manifeste spécifiant les fichiers suivants :

Chemin d'accès du fichier
rootdir/dir1/subdir1/file1.txt
rootdir/File2.txt
rootdir/dir1/subdir1/file3.txt
rootdir/dir1/subdir4/file4.txt
rootdir/dir1/subdir1/file5.txt

doit ressembler à ceci :

"dir1/subdir1/file1.txt"
"File2.txt"
"dir1/subdir1/file3.txt"
"dir1/subdir4/file4.txt"
"dir1/subdir1/file5.txt"

Fichier manifeste d'objets

Pour créer un fichier manifeste d'objets, créez un fichier CSV dont la première colonne contient les noms d'objet relatifs à bucketName/path dans createTransferJob. Si un nom d'objet contient des virgules, celles-ci doivent être correctement échappés, conformément aux normes CSV. Vous pouvez également spécifier une deuxième colonne (facultative) avec la version de l'objet. Tous les objets répertoriés doivent se trouver dans un bucket spécifié dans le chemin d'accès source.

Exemple de fichier manifeste d'objets

Un fichier manifeste spécifiant les objets suivants :

Chemin d'accès à l'objet Version de l'objet (élément facultatif)
SOURCE_PATH/object1.pdf 15857022
SOURCE_PATH/object2.pdf 585902
SOURCE_PATH/object3.pdf 74845
SOURCE_PATH/object4.jpg 149937

doit ressembler à ceci :

object1.pdf,15857022
object2.pdf,585902
object3.pdf,74845
object4.jpg,149937

Importer le fichier manifeste dans l'emplacement approprié

Une fois que vous avez créé le fichier manifeste, importez-le dans un bucket Cloud Storage. L'agent de service qui exécute le transfert doit disposer de l'autorisation storage.objects.get pour le bucket dans lequel vous importez le fichier manifeste. Pour savoir comment accorder des autorisations à l'agent de service, consultez la section Configurer l'accès à la source de données.

Vous pouvez chiffrer les fichiers manifestes situés dans un bucket Cloud Storage à l'aide de clés de chiffrement Cloud KMS gérées par le client. Dans ce cas, assurez-vous que tous les comptes de service accédant au fichier manifeste se voient attribuer les clés de chiffrement applicables. Les clés fournies par le client ne sont pas acceptées.

Démarrer un transfert avec le fichier manifeste spécifié

Pour transférer les fichiers ou les objets répertoriés dans le fichier manifeste, effectuez un appel d'API createTransferJob qui spécifie une transferSpec pour laquelle le champ transferManifest est ajouté. Exemple :

POST https://storagetransfer.googleapis.com/v1/transferJobs

...
    "transferSpec": {
        "PosixFilesystem": {
            "root_directory": "/home/",
        },
        "gcsDataSink": {
            "bucketName": "GCS_NEARLINE_SINK_NAME",
            "path": "GCS_SINK_PATH",
        },
        "transferManifest": {
            "location": "gs://my_bucket/sample_manifest.csv"
        }
    }

Les objets ou fichiers spécifiés dans le fichier manifeste ne sont pas nécessairement transférés dans l'ordre indiqué.

Si le fichier manifeste inclut des fichiers qui existent déjà dans la destination, ceux-ci sont ignorés.

Si le fichier manifeste comprend des objets qui existent dans une version différente de la destination, l'objet présent dans la destination est remplacé par la version source de l'objet. Si la destination est un bucket avec gestion des versions, une nouvelle version de l'objet est créée. Si l'objet de destination est identique à l'objet source, l'objet est ignoré, sauf si overwriteObjectsAlreadyExistingInSink=true est spécifié.

Étape suivante