Conversion de chaînes d'ID de version vides dans les rapports d'inventaire Amazon S3 en chaînes null - Amazon Simple Storage Service

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 d'inventaire Amazon S3 en chaînes null

Note

La procédure suivante s'applique uniquement aux rapports d'inventaire Amazon S3 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 d'inventaire S3 qui spécifient uniquement la version actuelle.

Vous pouvez utiliser les rapports d'inventaire S3 en tant que manifestes pour S3 Batch Operations. Toutefois, si la gestion des versions S3 est activée sur un compartiment, les rapports d'inventaire S3 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'objetIDs, Batch Operations reconnaît null les chaînes comme des versionsIDs, mais pas les chaînes vides.

Si une tâche S3 Batch Operations utilise un rapport d'inventaire S3 « 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 d'inventaire S3 en chaînes null pour Batch Operations, suivez la procédure suivante.

Mise à jour d'un rapport d'inventaire Amazon S3 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/.

  2. Accédez à votre rapport d'inventaire S3. 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, veuillez consulter Localisation de votre liste d'inventaire.

    1. Choisissez le compartiment de destination.

    2. Choisissez le dossier. Le dossier porte le nom du compartiment source d'origine.

    3. Choisissez le dossier nommé d'après la configuration d'inventaire.

    4. Cochez la case en regard du dossier nommé hive. En haut de la page, choisissez Copier S3 URI URI pour copier le S3 du dossier.

  3. Ouvrez la console Amazon Athena à l'adresse. https://console.aws.amazon.com/athena/

  4. 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.

  5. 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. table_nameRemplacez-le par le nom de votre choix et, dans la LOCATION clause, insérez le S3 URI 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';
  6. 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;
  7. 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';
  8. Retournez à la console Amazon 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/Non enregistré/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 CSV fichier dont la date de dernière modification est la plus récente. Téléchargez ce fichier sur votre ordinateur local pour la prochaine étape.

  9. Le CSV fichier généré contient une ligne d'en-tête. Pour utiliser ce CSV fichier comme 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 CSV manifestes.

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

    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
  10. Après avoir supprimé la ligne d'en-tête du CSV fichier, vous êtes prêt à l'utiliser comme manifeste dans une tâche S3 Batch Operations. Téléchargez le CSV fichier dans un compartiment S3 ou à l'emplacement de votre choix, puis créez une tâche Batch Operations en utilisant le CSV fichier comme manifeste.

    Pour de plus amples informations sur la création d'une tâche Batch Operations, veuillez consulter Création d'une tâche d'opérations par lot S3.