Как получить список объектов (включая метаданные, связанные с каждым объектом) из корзины AWS S3, используя AWS Javascript SDK? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь отобразить список объектов, хранящихся в моем хранилище AWS S3, на внешнем интерфейсе.Я могу легко получить список объектов, используя метод listObjects().

Единственная проблема заключается в том, что у меня есть некоторые метаданные, связанные с каждым объектом, которые я также хочу получить и отобразить вместе со списком.Метод listObjects() не извлекает метаданные каждого объекта.Кажется, что единственный способ получить метаданные объекта - использовать метод headObject().

Однако headObject() извлекает только метаданные по одному объекту за раз, и, очевидно, требуется, чтобы я перебрал список объектов, возвращаемых listObjects()а затем получить метаданные для каждого объекта, используя headObject().Мне было интересно, если есть способ получить список объектов плюс метаданные, связанные с каждым объектом с помощью одного вызова API?Решение, упомянутое выше, работает, но значительно снижает производительность приложения.

1 Ответ

0 голосов
/ 03 октября 2018

listObjectsV2() возвращает следующие данные:

/* The following example retrieves object list. The request specifies max keys to limit response to include only 2 object keys.  */

var params = {
  Bucket: "examplebucket", 
  MaxKeys: 2
};
s3.listObjectsV2(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
  /*
  data = {
    Contents: [
      {
        ETag: "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"", 
        Key: "happyface.jpg", 
        LastModified: <Date Representation>, 
        Size: 11, 
        StorageClass: "STANDARD"
      }, 
      {
        ETag: "\"becf17f89c30367a9a44495d62ed521a-1\"", 
        Key: "test.jpg", 
        LastModified: <Date Representation>, 
        Size: 4192256, 
        StorageClass: "STANDARD"
      }
    ], 
    IsTruncated: true, 
    KeyCount: 2, 
    MaxKeys: 2, 
    Name: "examplebucket", 
    NextContinuationToken: "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==", 
    Prefix: ""
  }
  */
});

Подходит ли это для вашего варианта использования?Если нет, возможно, архитектурное решение поможет.Настройте веб-хуков на ведро, которые обновляют документ DynamodB, а затем запросите документ один раз.В качестве альтернативы, установите лямбду, которая абстрагирует запросы S3 и возвращает объединенные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...