Convertire stringhe di ID versione vuote nei report Inventario Amazon S3 in stringhe nulle - Amazon Simple Storage Service

Convertire stringhe di ID versione vuote nei report Inventario Amazon S3 in stringhe nulle

Nota

La procedura seguente si applica solo ai report di Amazon S3 Inventory che includono tutte le versioni e solo se i report "tutte le versioni" vengono utilizzati come manifest per S3 Batch Operations su bucket che hanno il Controllo versioni S3 abilitato. Inoltre, non è necessario convertire stringhe per i report di inventario S3 che specificano solo la versione corrente.

Puoi utilizzare i report di S3 Inventory come manifest per S3 Batch Operations. Tuttavia, quando Controllo versioni S3 è abilitato su un bucket, i report di S3 Inventory che includono tutte le versioni contrassegnano gli oggetti con versione nulla con stringhe vuote nel campo ID versione. Quando un report di Inventory include tutti gli ID versione degli oggetti, Batch Operations riconosce le stringhe null come ID di versione ma non le stringhe vuote.

Quando un processo di S3 Batch Operations utilizza come manifest un report "tutte le versioni" di S3 Inventory, non riuscirà a portare a termine tutte le attività sugli oggetti con una stringa vuota nel campo ID versione. Per convertire stringhe vuote nel campo ID versione del report S3 Inventory in stringhe null per Batch Operations, attenersi alla procedura seguente.

Aggiorna un report di Amazon S3 Inventory da utilizzare con Batch Operations
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Vai al report di Inventario S3. Il report dell'inventario si trova nel bucket di destinazione specificato durante la configurazione del report dell'inventario. Per ulteriori informazioni sull'individuazione dei report di inventario, consulta Individuazione dell'elenco inventario.

    1. Scegliere il nome del bucket di destinazione.

    2. Scegliere la cartella . La cartella prende il nome dal bucket della fonte d'origine.

    3. Scegli la cartella che prende il nome dalla configurazione di inventario.

    4. Seleziona la casella di spunta accanto alla cartella denominata hive. Nella parte superiore della pagina, scegli Copia URI S3 per copiare l'URI S3 per la cartella.

  3. Aprire la console Amazon Athena all'indirizzo https://console.aws.amazon.com/athena/.

  4. Nell'editor di query, scegli Impostazioni, quindi seleziona Gestisci. Alla pagina Gestisci impostazioni per Posizione del risultato della query, scegli un bucket S3 in cui archiviare i risultati della query.

  5. Nell'editor di query, creare una tabella Athena per conservare i dati nel report di inventario utilizzando il seguente comando. Sostituisci table_name con un nome a scelta e nella clausola LOCATION, inserisci l'URI S3 copiato in precedenza. Quindi scegli Esegui per eseguire la query.

    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. Per cancellare l'editor di query, scegli Cancella. Quindi, caricare il report di inventario nella tabella utilizzando il comando seguente. Sostituisci il codice table_name con quello che hai scelto nella fase precedente. Quindi scegli Esegui per eseguire la query.

    MSCK REPAIR TABLE table_name;
  7. Per cancellare l'editor di query, scegli Cancella. Esegui la seguente query SELECT per recuperare tutte le voci nel report di inventario originale e sostituire qualsiasi ID versione vuota con le stringhe null. Sostituisci il codice table_name con quello che hai scelto in precedenza e sostituisci YYYY-MM-DD-HH-MM nella clausola WHERE con la data del report di inventario su cui eseguire questo strumento. Quindi scegli Esegui per eseguire la query.

    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. Torna alla console di Amazon S3 (https://console.aws.amazon.com/s3/), e vai al bucket S3 che hai scelto in precedenza per la Posizione del risultato della query. All'interno, è presente una serie di cartelle che terminano con la data.

    Ad esempio, dovrebbe essere visualizzato un input simile a s3://DOC-EXAMPLE-BUCKET/query-result-location/Unsaved/2021/10/07/. Dovrebbe essere possibile visualizzare i file .csv contenenti i risultati della query SELECT che hai eseguito.

    Scegli il file CSV con la data di modifica più recente. Scarica questo file sul tuo computer locale per il passaggio successivo.

  9. Il file CSV generato contiene una riga di intestazione. Per utilizzare questo file CSV come input per un processo S3 Batch Operations, è necessario rimuovere la riga di intestazione, poiché Batch Operations non supporta le righe di intestazione nei manifest CSV.

    Per rimuovere la riga di intestazione, è possibile eseguire uno dei seguenti comandi sul file. Sostituisci file.csv con il nome del tuo file CSV.

    Per macchine macOS e Linux, eseguire il comando tail in una finestra Terminal.

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

    Per macchine Windows, eseguire il seguente script in una finestra di Windows PowerShell. Sostituisci Posizione del file con il percorso del file e file.csv con il nome del file.

    $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. Dopo aver rimosso la riga di intestazione dal file CSV, è possibile utilizzarla come manifest in un processo di S3 Batch Operations. Carica il file CSV in un bucket S3 o in una posizione a tua scelta, quindi crea un processo Batch Operations utilizzando il file CSV come manifest.

    Per ulteriori informazioni sulla creazione di un processo di Batch Operations, consulta Creazione di un processo di operazioni in batch S3.