我正在尝试在前端显示存储在我的AWS S3存储桶中的对象列表。我可以使用listObjects()
方法轻松地检索对象列表。
唯一的问题是,我有一些与每个对象相关联的元数据,我也想将它们与列表一起检索和显示。 listObjects()
方法不会检索每个对象的元数据。似乎检索对象元数据的唯一方法是使用headObject()
方法。
但是, headObject()
一次只获取一个对象的元数据,这显然需要我遍历 listObjects()
返回的对象列表。 / strong>,然后使用headObject()
检索每个对象的元数据。我想知道是否有一种方法可以通过一个API调用来检索对象列表以及与每个对象关联的元数据?上述解决方案有效,但会大大降低应用程序的性能。
答案 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查询并返回合并的结果。