我有一个同一个存储桶my_s3_bucket
的S3键列表。
找出aws S3中实际存在哪些密钥的最有效方法是什么。通过高效,我的意思是低延迟,并希望低网络带宽使用率。
注意:密钥不会共享相同的前缀,因此按单个前缀过滤无效
我能想到的两个次优方法:
还有更好的选择吗?
答案 0 :(得分:1)
回答您的问题:S3 API没有公开替代方案。
使用多线程或异步I / O是减少实现多个请求所需的实际时间的可靠方法,通过并行执行,如您所述。
可能值得考虑的进一步增强功能是将此逻辑包装在AWS Lambda函数中,您可以使用存储桶名称和对象键列表作为参数进行调用。并行化Lambda函数内的存储桶操作,并将结果返回给已经解析和插入的调用者,并在一个整齐的响应中。这将把功能和S3之间的大部分带宽使用放在该区域内的AWS网络上,这应该是发生它的最快可能的地方。 Lambda函数是抽象出需要多个API请求的任何AWS交互的绝佳方式。
如果需要,这也允许您使用与主项目不同的语言编写Lambda函数,因为语言在该边界内无关紧要 - 它只是JSON跨越两者之间的边界。在我看来,某些AWS交互在某些语言中比在其他语言中更容易(或以复杂的序列/并行方式执行),因此,例如,即使您的项目是用python编写的,您的函数也可以用Node.JS编写,在调用funcrion并使用它生成的响应时,这没什么区别。