Convertir cadenas de ID de versión vacías de informes de Amazon S3 Inventory en cadenas nulas
nota
El siguiente procedimiento se aplica únicamente a los informes de Amazon S3 Inventory que incluyen todas las versiones, y solo si los informes de “todas las versiones” se utilizan como manifiestos para S3 Batch Operations en buckets que tienen habilitado S3 Versioning. No es necesario convertir cadenas para los informes de S3 Inventory que especifican únicamente la versión actual.
Puede utilizar informes de S3 Inventory como manifiestos para S3 Batch Operations. Sin embargo, cuando está habilitado S3 Versioning en un bucket, los informes de S3 Inventory que incluyen todas las versiones marcan cualquier objeto con versión nula con cadenas vacías en el campo ID de versión. Cuando un informe de inventario incluye todos los ID de versión de objeto, Batch Operations reconoce cadenas null
como ID de versión, pero no cadenas vacías.
Cuando un trabajo de S3 Batch Operations utiliza un informe de S3 Inventory de “todas las versiones” como manifiesto, falla en todas las tareas de los objetos que tienen una cadena vacía en el campo ID de versión. Para convertir cadenas vacías en el campo ID de versión del informe de S3 Inventory en cadenas null
para Batch Operations, utilice el siguiente procedimiento.
Actualice un informe de Amazon S3 Inventory para utilizarlo con Batch Operations
Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
Desplácese hasta el informe de S3 Inventory. El informe de inventario se encuentra en el bucket de destino que especificó al configurar el informe de inventario. Para obtener más información sobre la localización de los informes de inventario, consulte Localizar la descripción del inventario.
-
Elija el del bucket de destino.
-
Elija la carpeta . La carpeta lleva el nombre original del bucket de origen.
-
Elija la carpeta que lleva el nombre de la configuración del inventario.
-
Seleccione la casilla de verificación que se encuentra junto a la carpeta denominada hive. En la parte superior de la página, elija Copy S3 URI (Copiar URI de S3) para copiar el URI de la carpeta.
-
-
Abra la consola de Amazon Athena en https://console.aws.amazon.com/athena/
. -
En el editor de consultas, elija Settings (Configuración) y, a continuación, Manage (Administrar). En la página Manage settings (Administrar la configuración), en Location of query result (Ubicación del resultado de la consulta), elija un bucket de S3 en el cual almacenar los resultados de la consulta.
-
En el editor de consultas, cree una tabla de Athena para almacenar los datos del informe de inventario mediante el siguiente comando. Reemplace
con el nombre de su elección, y en la cláusulatable_name
LOCATION
, inserte el URI de S3 que copió anteriormente. A continuación, elija Run (Ejecutar) para ejecutar la consulta.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
'; -
Para borrar el editor de consultas, elija Clear (Borrar). A continuación, cargue el informe de inventario en la tabla mediante el siguiente comando. Reemplace
con el que eligió en el paso anterior. A continuación, elija Run (Ejecutar) para ejecutar la consulta.table_name
MSCK REPAIR TABLE
table_name
; -
Para borrar el editor de consultas, elija Clear (Borrar). Ejecute la siguiente consulta
SELECT
para recuperar todas las entradas del informe de inventario original y reemplazar los ID de versión vacíos por cadenasnull
. Reemplace
por el que eligió anteriormente y reemplacetable_name
en la cláusulaYYYY-MM-DD-HH-MM
WHERE
con la fecha del informe de inventario en la que desea que se ejecute esta herramienta. A continuación, elija Run (Ejecutar) para ejecutar la consulta.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
'; -
Regrese a la consola de Amazon S3 (https://console.aws.amazon.com/s3/
) y vaya al bucket de S3 que eligió anteriormente para Location of query result (Ubicación del resultado de la consulta). En el interior, debería haber una serie de carpetas que terminen con la fecha. Por ejemplo, debería ver algo similar a s3://
/amzn-s3-demo-bucket
query-result-location
/Unsaved/2021/10/07/. Debería ver archivos.csv
que contienen los resultados de la consultaSELECT
que ejecutó.Elija el archivo CSV con la última fecha de modificación. Descargue este archivo en su equipo local para el siguiente paso.
-
El archivo CSV generado contiene una fila de encabezado. Para utilizar este archivo CSV como entrada para un trabajo de S3 Batch Operations, debe quitar la fila de encabezado, porque Batch Operations no admite filas de encabezado en los manifiestos CSV.
Para eliminar la fila del encabezado, puede ejecutar uno de los siguientes comandos en el archivo. Reemplace
con el nombre del archivo CSV.file.csv
Para equipos macOS y Linux, ejecute el comando
tail
en una ventana de terminal.tail -n +2
file.csv
> tmp.csv && mv tmp.csvfile.csv
Para máquinas Windows, ejecute el script siguiente en una ventana de Windows PowerShell. Sustituya
por la ruta a su archivo yFile-location
por el nombre del archivo.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 -
Después de eliminar la fila de encabezado del archivo CSV, podrá utilizarla como manifiesto en un trabajo de S3 Batch Operations. Cargue el archivo CSV en un bucket de S3 o ubicación que elija y, a continuación, cree un trabajo de Batch Operations utilizando el archivo CSV como manifiesto.
Para obtener más información acerca de cómo crear un trabajo de Batch Operations, consulte Creación de trabajos de operaciones por lotes de S3.