

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Conversion de chaînes d’ID de version vides dans les rapports Amazon S3 Inventory en chaînes null
<a name="inventory-configure-bops"></a>

**Note**  
**La procédure suivante s’applique uniquement aux rapports Amazon S3 Inventory qui incluent toutes les versions, et uniquement si les rapports « toutes les versions » sont utilisés comme manifestes pour S3 Batch Operations sur des compartiments sur lesquels la gestion des versions S3 est activée.** Il n’est pas nécessaire de convertir des chaînes pour les rapports S3 Inventory qui spécifient uniquement la version actuelle.

Vous pouvez utiliser les rapports S3 Inventory en tant que manifestes pour S3 Batch Operations. Toutefois, si la gestion des versions S3 est activée sur un compartiment, les rapports S3 Inventory qui incluent toutes les versions marquent tous les objets versionnés NULL avec des chaînes vides dans le champ d’ID de version. Lorsqu'un rapport d'inventaire inclut toutes les versions de l'objet IDs, Batch Operations reconnaît `null` les chaînes comme des versions IDs, mais pas les chaînes vides. 

Si une tâche S3 Batch Operations utilise un rapport S3 Inventory « toutes les versions » comme manifeste, il échoue toutes les tâches sur les objets dont la chaîne est vide dans le champ d’ID de version. Pour convertir des chaînes vides dans le champ d’ID de version du rapport S3 Inventory en chaînes `null` pour Batch Operations, suivez la procédure suivante.

**Mise à jour d’un rapport Amazon S3 Inventory pour l’utiliser avec Batch Operations**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Accédez à votre rapport S3 Inventory. Le rapport d’inventaire se trouve dans le compartiment de destination que vous avez spécifié lors de la configuration de votre rapport d’inventaire. Pour de plus amples informations sur la manière de trouver les rapports d’inventaire, consultez [Localisation de votre liste d’inventaire](storage-inventory-location.md).

   1. Choisissez le compartiment de destination.

   1. Choisissez le dossier. Le dossier porte le nom du compartiment source d’origine.

   1. Choisissez le dossier nommé d’après la configuration d’inventaire.

   1. Cochez la case en regard du dossier nommé **hive**. En haut de la page, choisissez **Copy S3 URI** (Copier l’URI S3) pour copier l’URI S3 du dossier.

1. Ouvrez la console Amazon Athena à l'adresse. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 

1. Dans l’éditeur de requête, choisissez **Settings** (Paramètres), puis **Manage** (Gérer). Sur la page **Manage settings** (Gérer les paramètres), pour **Location of query result** (Emplacement des résultats de la requête), choisissez un compartiment S3 dans lequel stocker les résultats de votre requête.

1. Dans l’éditeur de requête, créez une table Athena pour contenir les données du rapport d’inventaire à l’aide de la commande suivante. Remplacez `table_name` par un nom de votre choix, et dans la clause `LOCATION`, insérez l’URI S3 que vous avez copié précédemment. Choisissez ensuite **Run** (Exécuter) pour exécuter la requête.

   ```
   CREATE EXTERNAL TABLE table_name(bucket string, key string, version_id string) PARTITIONED BY (dt string)ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 'Copied S3 URI';
   ```

1. Pour effacer l’éditeur de requête, cliquez sur **Clear** (Effacer). Ensuite, chargez le rapport d’inventaire dans la table à l’aide de la commande suivante. Remplacez `table_name` par le nom que vous avez choisi lors de l’étape précédente. Choisissez ensuite **Run** (Exécuter) pour exécuter la requête.

   ```
   MSCK REPAIR TABLE table_name;
   ```

1. Pour effacer l’éditeur de requête, cliquez sur **Clear** (Effacer). Exécutez la `SELECT` requête suivante pour récupérer toutes les entrées du rapport d'inventaire d'origine et remplacez toute version vide par IDs des `null` chaînes. Remplacez `table_name` par le nom que vous avez choisi précédemment, et remplacez `YYYY-MM-DD-HH-MM` dans la clause `WHERE` par la date du rapport d’inventaire à laquelle vous souhaitez que cet outil soit exécuté. Choisissez ensuite **Run** (Exécuter) pour exécuter la requête.

   ```
   SELECT bucket as Bucket, key as Key, CASE WHEN version_id = '' THEN 'null' ELSE version_id END as VersionId FROM table_name WHERE dt = 'YYYY-MM-DD-HH-MM';
   ```

1. Retournez à la console Amazon S3 ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) et accédez au compartiment S3 que vous avez choisi pour **Emplacement du résultat de la requête** plus tôt. Il devrait contenir une série de dossiers se terminant par la date.

   Par exemple, vous devriez voir quelque chose comme **s3 ://**amzn-s3-demo-bucket**/*query-result-location*/Unsaved/2021/10/07/**. Vous devriez voir des fichiers `.csv` contenant les résultats de la requête `SELECT` que vous avez exécutée. 

   Choisissez le fichier CSV avec la date de modification la plus récente. Téléchargez ce fichier sur votre ordinateur local pour la prochaine étape.

1. Le fichier CSV généré contient une ligne d’en-tête. Pour utiliser ce fichier CSV en tant qu’entrée pour une tâche S3 Batch Operations, vous devez supprimer la ligne d’en-tête, car Batch Operations ne prend pas en charge les lignes d’en-tête sur les manifestes CSV. 

   Pour supprimer la ligne d’en-tête, vous pouvez exécuter l’une des commandes suivantes sur le fichier. Remplacez *`file.csv`* par le nom de votre fichier CSV. 

   **Pour les machines macOS et Linux**, exécutez la commande `tail` dans une fenêtre Terminal. 

   ```
   tail -n +2 file.csv > tmp.csv && mv tmp.csv file.csv 
   ```

   **Pour les machines Windows**, exécutez le script suivant dans une PowerShell fenêtre Windows. Remplacez `File-location` par le chemin de votre fichier et `file.csv` par le nom du fichier.

   ```
   $ins = New-Object System.IO.StreamReader File-location\file.csv
   $outs = New-Object System.IO.StreamWriter File-location\temp.csv
   try {
       $skip = 0
       while ( !$ins.EndOfStream ) {
           $line = $ins.ReadLine();
           if ( $skip -ne 0 ) {
               $outs.WriteLine($line);
           } else {
               $skip = 1
           }
       }
   } finally {
       $outs.Close();
       $ins.Close();
   }
   Move-Item File-location\temp.csv File-location\file.csv -Force
   ```

1. Après avoir supprimé la ligne d’en-tête du fichier CSV, vous êtes prêt à utiliser ce dernier comme manifeste dans une tâche S3 Batch Operations. Chargez le fichier CSV dans un compartiment S3 ou un emplacement de votre choix, puis créez une tâche Batch Operations en utilisant le fichier CSV comme manifeste.

   Pour de plus amples informations sur la création d’une tâche Batch Operations, consultez [Création d’une tâche d’opérations par lot S3](batch-ops-create-job.md).