如何使用AWS Javascript SDK从AWS S3存储桶检索对象列表(包括与每个对象关联的元数据)?

时间:2018-10-03 08:48:39

标签: javascript amazon-web-services amazon-s3

我正在尝试在前端显示存储在我的AWS S3存储桶中的对象列表。我可以使用listObjects()方法轻松地检索对象列表。

唯一的问题是,我有一些与每个对象相关联的元数据,我也想将它们与列表一起检索和显示。 listObjects() 方法不会检索每个对象的元数据。似乎检索对象元数据的唯一方法是使用headObject()方法。

但是, headObject() 一次只获取一个对象的元数据,这显然需要我遍历 listObjects()返回的对象列表。 / strong>,然后使用headObject()检索每个对象的元数据。我想知道是否有一种方法可以通过一个API调用来检索对象列表以及与每个对象关联的元数据?上述解决方案有效,但会大大降低应用程序的性能。

1 个答案:

答案 0 :(得分:0)

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: ""
  }
  */
});

适合您的用例吗?如果没有,也许架构解决方案会有所帮助。在存储桶上设置Web钩子,以更新dynamodb文档,然后查询一次该文档。或者,设置一个lambda来抽象出S3查询并返回合并的结果。