使用aws-sdk ruby​​ gem检查AWS S3中是否存在新创建的文件

时间:2016-06-28 02:47:50

标签: ruby amazon-s3 aws-sdk

我正在使用aws-sdk ruby​​ gem(v 1.66.0)将文件上传到S3

bucket = AWS::S3.new.buckets[@bucket_name] obj = bucket.objects['/path/to/file_to_upload.pdf'] obj.write(:file => "/file_to_upload.pdf").exists? # => false

即使文件" file_to_upload.pdf"确实上传到指定的路径,在对象上调用.exists?返回false。

这只发生在生产环境中。在我们的QA环境中运行相同的代码返回true。我假设它是某种权限问题,但我找不到如何更改此问题的答案。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过一段时间的研究,似乎在AWS S3中为生产存储桶打开了ObjectVersioning。打开ObjectVersioning时,调用obj.write(:file => "/file_to_upload.pdf")会返回没有定义.exists?方法的ObjectVersion。关闭Ob​​jectVersioning时,obj.write(:file => "/file_to_upload.pdf")将返回具有.exists?方法的Object。

奇怪且不一致,但我希望这对其他任何人都有帮助。