AWS S3 Java提供了一个方法doesObjectExist()
来检查S3中是否存在一个对象。它内部使用什么操作?是GET
,LIST
,还是HEAD
?
我所关注的主要是它的成本。从S3文档中,美国西俄勒冈州的费用是:每1,000次请求中有0.005美元的请求被放置、复制、张贴或列表请求
获取、选择和所有其他请求每1,000次请求$0.0004
doesObjectExist()
的成本属于第一类或第二类吗?另外,我在某个地方读到这个操作需要ListBucket
和GetObject
权限。那么,这是否意味着这两种操作都要付出代价呢?
发布于 2018-04-13 15:41:10
查看代码,doesObjectExist()
方法内部调用getObjectMetadata
(链接,链接)。
如果在代码中使用再深一点,实际的HTTP请求就是HEAD
请求,因此我强烈怀疑他们只是在对对象本身执行HEAD
。
GetObjectMetadataRequest
和调用REST的描述也是相似的。
关于权限,您是正确的(下面的摘录也来自REST上的HEAD
请求:
此操作需要s3:GetObject权限。有关更多信息,请转到在指南中指定策略中的权限。如果您请求的对象不存在,则S3返回的错误取决于您是否也具有s3:ListBucket权限。
https://stackoverflow.com/questions/49811225
复制相似问题