如何过滤S3 listObject到一个确定的点? (Marker param对面)

问题描述 投票:0回答:1

我正在使用AWS SDK函数listObject()从给定存储桶中检索对象。对象在其路径中有一个表名和时间戳,因此为了过滤响应,我使用的是前缀和标记:

但是,Marker确定要从哪个对象开始,我需要相反:告诉查询在哪里停止。

s3.listObject({ Bucket: bucket, Prefix: table-name, Marker: `${table-name}/${timestamp}` });

桶的结构如下:

table-name/timestamp/uid

我想获取所有对象但不包括时间戳。

编辑:我可以使用一些javascript自己做,但我想让查询为我做的工作。

javascript node.js amazon-s3 aws-sdk-js
1个回答
0
投票

AWS似乎没有本机支持,考虑到Marker和ContinuationToken如何工作,这是有道理的,除非AWS添加了这个,未来有这个问题的人将不得不使用JS-it:

s3.listObjectV2({ Bucket: bucket, Prefix: table-name }).promise()
.then(response => {
    return response.Contents.map(item => item.Key)
    .filter(obj => {
          let objTimestamp = obj.match(/\/(.*)\//)[1];
          return new Date(timestamp) > new Date(objTimestamp);
        });
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.