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
Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/
. -
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.
-
Choisissez le compartiment de destination.
-
Choisissez le dossier. Le dossier porte le nom du compartiment source d'origine.
-
Choisissez le dossier nommé d'après la configuration d'inventaire.
-
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.
-
-
Ouvrez la console Amazon Athena à l'adresse. https://console.aws.amazon.com/athena/
-
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.
-
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-le par le nom de votre choix et, dans latable_name
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
'; -
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
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.table_name
MSCK REPAIR TABLE
table_name
; -
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 desnull
chaînes. Remplacez
par le nom que vous avez choisi précédemment, et remplaceztable_name
dans la clauseYYYY-MM-DD-HH-MM
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
'; -
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êteSELECT
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.
-
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
avec le nom de votre CSV fichier.file.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.csvfile.csv
Pour les machines Windows, exécutez le script suivant dans une PowerShell fenêtre Windows. Remplacez
par le chemin de votre fichier etFile-location
par le nom du fichier.file.csv
$ins = New-Object System.IO.StreamReader
File-location
\file.csv
$outs = New-Object System.IO.StreamWriterFile-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-ItemFile-location
\temp.csvFile-location
\file.csv
-Force -
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.