es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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'
}
Tags:  , , ,

Answer

  1. Avatar for 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 como endsWith(). Aquí tienes un ejemplo de código:

    const response = await s3Client.listObjectsV2({ Bucket: 'mi-bucket', Prefix: 'mi-carpeta/' }).promise();
    const archivos = response.Contents.filter(item => item.Key.endsWith('.json'));
    console.log(archivos);
    

    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.

Comments are closed.