

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Convertire stringhe di ID versione vuote nei report Inventario Amazon S3 in stringhe nulle
<a name="inventory-configure-bops"></a>

**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 rapporto di inventario include tutte le versioni dell'oggetto IDs, Batch Operations riconosce le `null` stringhe come versione IDs, 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 a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. 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](storage-inventory-location.md).

   1. Scegliere il nome del bucket di destinazione.

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

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

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

1. Apri la console Amazon Athena all'indirizzo. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 

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

1. 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}}';
   ```

1. 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}};
   ```

1. Per cancellare l'editor di query, scegli **Cancella**. Esegui la seguente `SELECT` query per recuperare tutte le voci nel rapporto di inventario originale e sostituire qualsiasi versione vuota IDs con `null` stringhe. 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}}';
   ```

1. Torna alla console Amazon S3 ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) e vai al bucket S3 che hai scelto per la **posizione del risultato della** query in precedenza. All'interno, è presente una serie di cartelle che terminano con la data.

   Ad esempio, dovresti vedere qualcosa come **s3:**////Unsaved/2021/10/07/. {{{{amzn-s3-demo-bucket}}}} {{query-result-location}} 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.

1. 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 le macchine Windows, esegui il seguente script in una finestra di Windows**. PowerShell Sostituire `{{File-location}}` con il percorso al 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
   ```

1. 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](batch-ops-create-job.md).