AWS-SDK:S3的列表对象中的查询参数

Dev*_*per 7 amazon-s3 amazon-web-services node.js aws-sdk aws-lambda

我想在特定日期之后获取对象。使用 AWS CLI,我可以使用以下命令列出对象:

aws s3api list-objects-v2 --bucket "bucket1" --prefix "file-" --query "(Contents[?LastModified>'2019-02-06T05:34:12.000Z'])[0]"

但我想从我的代码中执行此操作,因此请让我知道如何使用 NPM AWS-SDK 过滤对象。

注意:我可以使用exec或来完成此操作spawn,但为此我必须使用 CLI 配置配置文件,这将在本地创建凭证文件,所以我不想这样做。

bwe*_*est 3

使用适用于 node.js 的 AWS 开发工具包。调用该listObjectsV2方法,然后在回调方法中使用jmespath.js来过滤API调用的输出。这相当于 AWS CLI 通过--query参数执行的操作。

像这样的东西(未经测试)

var params = {
  Bucket: "bucket1", 
  Prefix: "file-"
 };
 s3.listObjectsV2(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else {
       query = "Contents[?LastModified>'2019-02-06T05:34:12.000Z']"
       var results = jmespath.search(data,query);
   }
 };
Run Code Online (Sandbox Code Playgroud)

  • 我认为它只搜索前 1000 条记录,并且在 2 月 6 日之后没有获取数据,但是当我使用 cli 命令时,我能够得到结果。2 月 6 日之前我有数千条记录。 (2认同)