AWS S3 Java SDK provides a method
doesObjectExist() to check if an object exists in S3. What operation does it use internally? Is it
My concern is mainly related to its costs. From S3 documentation the costs of US west Oregon are-
PUT, COPY, POST, or LIST Requests $0.005 per 1,000 requests
GET, SELECT and all other Requests $0.0004 per 1,000 requests
Does the cost of
doesObjectExist() fall under 1st or 2nd category? Also I was reading somewhere that this operation requires
GetObject permissions. So does that mean this operation incurs cost of both the above categories?
If you go a little deeper into the code, the actual HTTP request is a
HEAD request, so I strongly suspect they are just doing a
HEAD on the object itself.
Regarding permissions, you are correct (the excerpt below also comes from the
HEAD request on the REST API:
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.