nis*_*ant 5 java amazon-s3 amazon-web-services aws-sdk
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
权限的地方。那么这是否意味着此操作会产生上述两种类型的成本?
Vic*_*ari 10
查看代码,该doesObjectExist()
方法内部调用getObjectMetadata
(link , link)。
如果你更深入地研究一下代码,实际的 HTTP 请求就是一个HEAD
请求,所以我强烈怀疑他们只是HEAD
在对象本身上执行 a 操作。
REST API的描述GetObjectMetadataRequest
和调用也类似。HEAD
关于权限,你是正确的(下面的摘录也来自HEAD
REST API上的请求):
您需要 s3:GetObject 权限才能执行此操作。有关更多信息,请转到 Amazon Simple Storage Service 开发人员指南中的在策略中指定权限。如果您请求的对象不存在,Amazon S3 返回的错误取决于您是否也具有 s3:ListBucket 权限。
归档时间: |
|
查看次数: |
5736 次 |
最近记录: |