AWS S3 doObjectExist成本

时间:2018-04-13 07:08:04

标签: amazon-web-services amazon-s3 aws-sdk

AWS S3 Java SDK提供了一种方法doesObjectExist()来检查S3中是否存在对象。它在内部使用什么操作?是GETLIST还是HEAD

我的担心主要与其成本有关。从S3文件中,美国西俄勒冈州的费用是 - PUT,COPY,POST或LIST请求每1,000个请求$ 0.005

获取,选择和所有其他请求每1,000个请求0.0004美元

doesObjectExist()的费用是否属于第1类或第2类?此外,我正在阅读此操作需要ListBucketGetObject权限的地方。那么这是否意味着此操作会产生上述两种类别的成本?

1 个答案:

答案 0 :(得分:2)

查看代码时,doesObjectExist()方法会在内部调用getObjectMetadatalinklink)。

如果你将a little deeper转到代码中,实际的HTTP请求就是HEAD请求,所以我强烈怀疑他们只是在对象本身上做HEAD

GetObjectMetadataRequestHEAD call on the REST API的说明也类似。

关于权限,你是对的(下面的摘录也来自REST API上的HEAD请求:

  

您需要s3:GetObject权限才能执行此操作。有关更多信息,请转到Amazon Simple Storage Service开发人员指南中的在策略中指定权限。如果您请求的对象不存在,则Amazon S3返回的错误取决于您是否还具有s3:ListBucket权限。