java - AWS S3 doObjectExist 成本

标签 java amazon-web-services amazon-s3 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()属于第一类还是第二类?我也在某处读到这个操作需要 ListBucketGetObject权限。那么这是否意味着此操作会产生上述两种类型的成本?

最佳答案

查看代码,doesObjectExist()方法内部调用 getObjectMetadata ( linklink )。

如果你去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/

相关文章:

java - 初学者将开源 java 项目重新编译到我的自定义项目中

amazon-web-services - 部署期间无法获取云信息模板来安装应用程序

python - 将 pickle 文件写入 AWS 中的 s3 存储桶

java - HTTP post 请求在生产环境中没有响应(与 tomcat 服务器的 war )

Java:泛型类型类型不匹配语法错误

amazon-web-services - Pulumi/Terraform/Cloudformation : enable SSH access to Elastic Beanstalk instances

encryption - 将 AWS 凭证作为用户数据传递给 EC2 实例的最佳方法是什么?

amazon-web-services - 为跨 AWS 账户创建的任何新存储桶创建 SNS 通知

ruby-on-rails - 在规范中 stub Paperclip S3 请求

Java从长值中删除毫秒精度