我正在使用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
。我假设它是某种权限问题,但我找不到如何更改此问题的答案。有什么想法吗?
答案 0 :(得分:0)
经过一段时间的研究,似乎在AWS S3中为生产存储桶打开了ObjectVersioning。打开ObjectVersioning时,调用obj.write(:file => "/file_to_upload.pdf")
会返回没有定义.exists?
方法的ObjectVersion。关闭ObjectVersioning时,obj.write(:file => "/file_to_upload.pdf")
将返回具有.exists?
方法的Object。
奇怪且不一致,但我希望这对其他任何人都有帮助。