python - 使用 boto3 过滤 s3 对象,使调用者不过滤
问题描述
我的 s3 存储桶有数千个文件。它们都在同一个“文件夹”中。所以s3前缀是一样的。我想使用 python boto3 来获取包含某个单词的文件名列表。我不希望 boto3 调用发回所有文件名并让客户端过滤掉这些名称。我看到了使用“yield”和“.filter”的例子,但它们正在接收所有文件并使客户端做很多工作。
为了帮助更好地理解,如果我使用 AWS CLI:
aws --profile test s3api list-objects-v2 --bucket mybucket --prefix tmp/ --output json --query "Contents[?contains(Key, 'foobar')]"
但我需要使用 boto3 发送请求,AWS 只需将文件名发送回,其中包含“foobar”。
解决方案
但我需要使用 boto3 发送请求,AWS 只需将文件名发回,其中包含“foobar”
您不能使用常规的 boto3 s3 API 调用来执行此操作,因为这不是该 API 的工作方式。因此,如果您不想先获取所有名称,然后自己将它们过滤掉,那么仅通过单个 boto3 请求就无法实现您想要的。
唯一的帮助可能来自Amazon S3 inventory。因此,您可以请求库存,获取生成的 CSV 文件,然后对其进行过滤。但是您仍然必须自己过滤它。
推荐阅读
- wpf - WPF ComboBox itemsSource 在 Prism MVVM 中不起作用
- c# - 在 Ninject 中,这是我会使用子作用域的地方吗?
- html - 无法为 Firebase 使用“form”html 标记,并且无法验证没有“form”标记的数据
- pentaho - Pentaho 在输出表中添加最后修改字段
- c - 使用 pthread_mutex_t 锁传递给线程
- ios - UITableView 一些单元格不可见
- azure - Azure CLI 和循环
- python - 在 Python 中求解多维 ODE
- javascript - Reactjs - Web 应用程序需要运行时权限?
- angular - angular5 测试 - iframe 安全管道 - bypassSecurityTrustResourceUrl 不是函数 - 错误