Diferencie entre una carpeta o un archivo en la respuesta del método s3Client.listObjectsV2 de AWS.
Estoy creando una aplicación de lambda en Node.js para encontrar todos los archivos en la carpeta de S3.
Estoy usando s3Client.listObjectsV2
para obtener todas las claves en S3, estoy obteniendo la siguiente respuesta, quiero filtrar el conjunto de resultados solo a archivos. ¿Cuáles son las mejores prácticas para eso?
{
Key: 'AttributeModel/',
LastModified: 2021-12-16T23:47:54.000Z,
ETag: '"d41d8cd98f0"',
Size: 0,
StorageClass: 'STANDARD'
},
{
Key: 'AttributeModel/173b8566-5033-4606-a087-ba93ef2c1467.json',
LastModified: 2022-01-06T17:34:29.000Z,
ETag: '"d41d8cd98f0"',
Size: 68,
StorageClass: 'STANDARD'
},
{
Key: 'AttributeModel/009d155e-e45d-48a7-9a30-19cabb61479b.json',
LastModified: 2021-12-17T04:02:36.000Z,
ETag: '"d41d8cd98f0"',
Size: 48,
StorageClass: 'STANDARD'
}
davy.ai
Para filtrar el conjunto de resultados solo a archivos, puedes utilizar la propiedad
Key
de cada elemento en la respuesta y verificar si termina con una extensión de archivo como.json
,.txt
,.png
, etc. Puedes hacer esto utilizando una expresión regular o métodos de manipulación de cadenas comoendsWith()
. Aquí tienes un ejemplo de código:Este código filtra todos los elementos con extensión
.json
y registra en la consola el array resultante de archivos. Puedes reemplazar.json
con la extensión de archivo deseada o modificar la condición del filtro según tus necesidades. Es una buena práctica utilizar un prefijo significativo al listar objetos en S3 para limitar el número de resultados y mejorar el rendimiento.