AWS Lambda将列出文件版本控制中的S3存储桶对象和子目录

阿列克西·费利克斯(Alexi Felix)

我是lambda的新手,并尝试列出具有嵌套子目录的S3存储桶对象,这是结构:

- mybucket/folder1/project1/samplev1.txt
- mybucket/folder1/project1/sampleVer2.txt
- mybucket/folder2/
- mybucket/folder3/

这是我的lambda代码:

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event) => {
  const allKeys = [];
  await getKeys({ Bucket: 'ru-mybucket' }, allKeys);
  console.log(allKeys)
  return allKeys;
};

async function getKeys(params, keys){
  const response = await s3.listObjectsV2(params).promise();
  response.Contents.forEach(obj => keys.push(obj.Key));

  if (response.IsTruncated) {
    const newParams = Object.assign({}, params);
    newParams.ContinuationToken = response.NextContinuationToken;
    await getKeys(newParams, keys); // RECURSIVE CALL
  }
}

该函数列出了存储桶中的所有对象键及其嵌套的子目录和文件,问题是如何列出嵌套的对象(包括其版本),我该如何实现?在我的代码中何处添加(listObjectVersions)以能够遍历具有版本的对象?

简·萨利纳斯

我已经为您完成了这段代码,在本示例中,您可以看到单元测试及其实现(apigateway)。

基本上,我从存储桶中检索了所有密钥,然后对其进行迭代。最终,我得到了所有对象,并查询s3.listObjectsV2并传递了存储桶和密钥两个参数。

伪代码下面:

s3.listObjectsV2({ Bucket: your_bucket, MaxKeys: 1000 }).forEach( element => {
   s3.listObjectVersions({ Bucket: your_bucket, Prefix: element.Key})
})

为此,您可以运行代码示例,必须运行以下命令:

npm install
npm run deploy

为此,您可以测试代码:

npm run test

别忘了带上你的水桶:

./package.json
./tests/test.js

重要说明:我为此解决方案使用了无服务器框架

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从存储桶根目录重定向到AWS S3中的子目录?

在AWS S3存储桶的特定“文件夹”中列出文件

亚马逊s3 aws url路径子目录存储桶

rclone - 如何列出 AWS S3 存储桶中具有最新文件的目录?

AWS S3 版本控制开启:我可以从我的存储桶中删除所有对象吗?

列出AWS S3存储桶中的对象(使用无服务器部署)

如何使用Java列出存储桶中的所有AWS S3对象

删除 AWS S3 存储桶时权限不足,无法列出存储桶“XXXX”的对象

AWS CLI 列出 S3 存储桶中的所有文件

PowerShell for AWS:仅列出S3存储桶中的“文件夹”吗?

使用AWS Lambda将文件从一个s3存储桶移动到AWS中的另一个存储桶

如何使用aws s3 cp复制根目录中的所有对象,而不复制子目录?

AWS S3 存储桶中对象更新的问题

经历了将多个文件保存在s3存储桶中的forEach循环后,AWS Lambda返回“ null”

从带有boto3和Python 3.7的AWS S3的特定“子目录”下载多个文件

s3的spring-integration-aws是否可以复制存储桶子目录?

将 AWS S3 存储桶根目录内容复制到子文件夹中的同一个存储桶

将多个文件上传到AWS S3存储桶,而不会覆盖现有对象

检查 AWS S3 存储桶中的文件数

AWS Lambda函数循环s3存储桶中的所有文件

如何从AWS Lambda的s3存储桶中读取csv文件?

AWS:使用 lambda 函数读取 Amazon S3 存储桶中的所有文件

使用Python获取AWS S3子目录中每个文件夹的最后修改日期

AWS S3:在一次调用中从版本化存储桶中删除对象的所有版本

列出AWS S3存储桶的内容

AWS S3 + Ruby SDK:如何列出存储桶

AWS Lambda使用listBuckets()列出S3存储桶无效

AWS Cloudformation | 将Lambda配置为在S3存储桶中使用最新版本的代码

将咸菜文件写入AWS中的s3存储桶

TOP 榜单

热门标签

归档