ListObjectsV2 - 仅获取 S3 存储桶中的文件夹

2023-12-12

我在用AWS S3 JS SDK。我的 S3 存储桶中的文件夹内有文件夹,我想仅列出特定级别的文件夹。

这是结构:

bucket/folder1/folder2/folder3a/file1
bucket/folder1/folder2/folder3a/file2
bucket/folder1/folder2/folder3a/file3
bucket/folder1/folder2/folder3a/...

bucket/folder1/folder2/folder3b/file1
bucket/folder1/folder2/folder3b/file2
bucket/folder1/folder2/folder3b/file3
bucket/folder1/folder2/folder3b/...

bucket/folder1/folder2/folder3c/file1
bucket/folder1/folder2/folder3c/file2
bucket/folder1/folder2/folder3c/file3
bucket/folder1/folder2/folder3c/...

如您所见,在文件夹 3 的级别,我有多个文件夹,每个文件夹都包含多个项目。我不关心这些物品。我只想列出第 3 级的文件夹名称。有没有好的方法可以做到这一点?

我发现的唯一方法是使用列表对象V2。但这也给了我一些导致结果集膨胀的文件,之后我需要进行手动过滤。有没有办法在 API 级别只获取文件夹名称?


这篇文章回答了我所有的问题。https://realguess.net/2014/05/24/amazon-s3-delimiter-and-prefix/

可以使用前缀和分隔符的组合来完成解决方案。在我的示例中,参数应包含以下内容:

const params = {
      Bucket: 'bucket',
      Prefix: 'folder1/folder2/',
      Delimiter: '/',
    };

请务必不要忘记 Prefix 参数末尾的斜杠。

文件夹列表将位于CommonPrefixes响应对象的属性。

给你一个现实生活中的例子:

...
const params = {
      Bucket: bucketName,
      Prefix: prefix + '/',
      MaxKeys: 25,
      Delimiter: '/',
    };
const command = new ListObjectsV2Command(params);
const results = await s3client.send(command);
const foldersList = results.CommonPrefixes;
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ListObjectsV2 - 仅获取 S3 存储桶中的文件夹 的相关文章

随机推荐

  • R 消息:错误 - 替换有 x 行,数据有 y

    我正在尝试使用该包ggmap使用地址列表计算目标地址的距离 我的 csv 数据如下所示 Order ID Address 1652049 435 E 70TH ST 10021 1652123 1365 YORK AVE 10021 165
  • Sonar Lint 与服务器规则不同步

    Sonar Lint 2 0 它已连接到我自己的 Sonar Qube 服务器 插件没有报告任何问题 问题是它与我的服务器规则不同步 找到了 Java 文档中提到的那些 但它们似乎也不是全部 我想知道这些java规则列表是否仅在未连接到任何
  • 将十六进制编码的字符串转换为字符串

    我想转换以下十六进制编码String在斯威夫特 3 中 dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4 至其等价物String J 7c f A 以下网站可以
  • R Shiny radioButtons 如何更改某些选项的颜色?

    ui lt fluidPage radioButtons dist Distribution type c Normal norm Uniform unif Log normal lnorm Exponential exp server l
  • Bootstrap 3 简单的下拉菜单不起作用

    当尝试调整到Bootstrap 3时 我遇到了以下问题 当我单击名为的按钮时F 我想Home and Not Home出现 但目前还没有 This是我正在学习的视频 div class navbar navbar inverse navba
  • 包装类的代码生成器

    您知道有一种工具可以根据另一个类生成包装类吗 编辑 通过包装类 我的意思是包装所有公开的 公共 受保护 属性方法事件的类 以便您可以将任何逻辑放在中间 我的具体目的是用它来验证包装类的行为 您可以使用 T4 模板并编写自己的逻辑 http
  • 无法连接到在 VSTS 中运行的 Docker 容器

    我有一个测试 启动 Docker 容器 执行验证 与 Docker 容器中的 Apache httpd 通信 然后停止 Docker 容器 当我在本地运行此测试时 此测试运行得很好 但当它运行时托管VSTS 因此托管构建代理 无法连接到Do
  • 如何使用 ggplot2 和刻度格式化带有指数的轴标签?

    使用新版本的 ggplot2 和刻度 我无法弄清楚如何以科学计数法获取轴标签 例如 x lt 1 4 y lt c 0 0 0001 0 0002 0 0003 dd lt data frame x y ggplot dd aes x y
  • 如何使用 RestSharp 将对象(作为 XML)发布到我的 ApiController?

    我有一个实现 REST API 的 ASP NET MVC4 网站 我从客户端应用程序使用该网站 我的 ApiController 方法接受并返回 XML 形式的复杂对象 我最近发现了 RestSharp 并开始将我的客户项目转移到该项目上
  • 命令行中的 Java 键侦听器

    大多数演示都显示 Swing 中的 keyevent 命令行中的等效项是什么 Swing 与命令行环境不同 因为您没有events在控制台窗口中 标准 GUI 处理对象和事件 控制台没有这样的等效概念 你什么dohas 是一个标准输入 以及
  • C# winforms 绘制位图无效参数

    我已经制作了一个应用程序 我需要函数drawbitmap 来打印我的面板 当我按下按钮 btnUpdate 12 次或更多次时 我在此规则上收到参数异常 无效参数 panel1 DrawToBitmap bmp1 new Rectangle
  • ffmpeg 对视频的棕褐色效果

    如何使用 FFmpeg 应用视频的简单棕褐色效果 我正在寻找一个单行 FFmpeg 命令 我将在 android 中使用它 虽然我已经学会了colorchannelmixer 393 769 189 0 349 686 168 0 272
  • Apache 对 /srv/www 的权限被拒绝:无法检查 .htaccess 文件,但不能检查 /var/www

    我在 Centos 6 5 上遇到了一个问题 Mon Dec 28 12 10 52 2012 a client 127 0 0 1 13 权限被拒绝 srv www website htaccess pcfg openfile 无法检查
  • node-gyp 编译错误 c2240 无法从 'v8::Value *' 转换为 'v8:object *volatile'

    2440错误指向 node gyp 4 4 5 include node v8 h 221 所以我不知道出了什么问题 附注在 Windows 机器上编译 有什么方法可以找出哪个句子导致了这个错误 这是我第一次使用node gyp 谢谢 这里
  • QMediaPlayer period() 始终返回 0

    我用的是Qt 5 7 我正在编写音乐播放器 有一个问题 方法duration of QMediaPlayer总是返回 0 我该如何修复它 代码示例 QMediaPlayer player new QMediaPlayer player gt
  • Outlook API OAuth2 离线访问/使用 php 永久访问

    我按照下面的教程使用 Outlook api 接收邮件 这可行 但需要用户每次登录才能授予访问权限 有没有办法提供永久 离线访问 类似于 gmail api 的工作原理 当您不在键盘前时访问 https dev outlook com Re
  • Android 状态栏颜色从 Kitkat 变为 Lollipop

    我正在尝试为我的应用程序实现漂亮的状态栏 并在 kitkat 上成功实现了这一目标 这是我正在使用的 xml
  • iBeacon 在后台测距?

    我已经开始使用估计作为信标来测试 iBeacons 一切都运行得很好 但我很难让应用程序在后台正常运行 self region CLBeaconRegion alloc initWithProximityUUID self uuid ide
  • Android中的布局管理

    我已经为所有屏幕分辨率创建了一个应用程序 为此 根据文档 我在应用程序中创建了一个资源目录列表 该列表为不同的屏幕尺寸提供不同的布局设计 并为中 高和超高密度屏幕提供不同的位图可绘制对象 例如 res layout normal my la
  • ListObjectsV2 - 仅获取 S3 存储桶中的文件夹

    我在用AWS S3 JS SDK 我的 S3 存储桶中的文件夹内有文件夹 我想仅列出特定级别的文件夹 这是结构 bucket folder1 folder2 folder3a file1 bucket folder1 folder2 fol