AWS S3 Java SDK 提供了一种方法 doesObjectExist()
检查 S3 中是否存在对象。它内部使用什么操作?是吗GET
, LIST
, 或 HEAD
?
我的担忧主要与它的成本有关。根据 S3 文档,美国西俄勒冈州的成本是-
PUT、COPY、POST 或 LIST 请求每 1,000 个请求 $0.005
GET、SELECT 和所有其他请求每 1,000 个请求 $0.0004
是否费用doesObjectExist()
属于第一类还是第二类?我也在某处读到这个操作需要 ListBucket
和 GetObject
权限。那么这是否意味着此操作会产生上述两种类型的成本?
最佳答案
查看代码,doesObjectExist()
方法内部调用 getObjectMetadata
( link , link )。
如果你去a little deeper进入代码,实际的HTTP请求是HEAD
请求,所以我强烈怀疑他们只是在做 HEAD
在对象本身上。
GetObjectMetadataRequest
的说明和 HEAD
call on the REST API也是类似的。
关于权限,您是对的(下面的摘录也来自 REST API 上的 HEAD
请求:
You need the s3:GetObject permission for this operation. For more information, go to Specifying Permissions in a Policy in the Amazon Simple Storage Service Developer Guide. If the object you request does not exist, the error Amazon S3 returns depends on whether you also have the s3:ListBucket permission.
关于java - AWS S3 doObjectExist 成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811225/