繁体   English   中英

从 s3 存储桶中获取具有相同前缀的多个对象

[英]Fetching multiple objects with same prefix from s3 bucket

我在 s3 存储桶中有多个文件夹,每个文件夹都包含一些.txt文件。 现在我想使用 javascript API 从给定文件夹中仅获取 10 个.txt文件。 例如:路径是这样的

s3bucket/folder1/folder2/folder3/id

现在文件夹id是包含多个 .txt 文件的文件夹。 folder3 中有多个id文件夹。 我想传递id并获取 10 个以id为前缀的 s3 对象。 这可以使用 listObjectsV2 吗? 如何将响应限制为仅 10 个对象。

                                              ____obj1.txt
                                 ______id1----|____obj2.txt
                                 |            _____obj3.txt
                                 |_____ id2---|____obj4.txt
s3bucket/folder1/folder2/folder3-|            ____obj5.txt
                                 |_____ id3---|____obj6.txt

所以如果我通过

var params= {Bucket:"s3bucket",Key:"folder1/folder2/folder3/id1"}

我应该得到obj1.txtobj2.txt作为回应。

您使用的是哪种S3方法? 我建议使用listObjectsV2来实现您的目标。 可能的调用可能如下所示

const s3 = new AWS.S3();
const { Contents } = await s3.listObjectsV2({
    Bucket: 's3bucket',
    Prefix: 'folder1/folder2/folder3/id1',
    MaxKeys: 10
}).promise();

要获取 object 值,您需要在每个Key上调用getObject

const responses = await Promise.all((Contents || []).map(({ Key }) => (
    s3.getObject({
        Bucket: 's3bucket',
        Key
    }).promise()
)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM