2016-06-28 7 views
0

を使用してAWS S3に存在するかどうかの確認、私はにもかかわらずS3新しく作成されたファイルは、AWS-SDKルビー宝石

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

にファイルをアップロードするには、AWS-SDKルビーの宝石(V 1.66.0)を使用していますファイル "file_to_upload.pdf"が指定されたパスにアップロードされ、オブジェクトの.exists?を呼び出すとfalseが返されます。

これは、実稼働環境でのみ発生しました。 QA環境で同じコードを実行すると、trueが返されました。私はそれが何らかのパーミッションの問題であると仮定していますが、これを変更する方法を見つけることができませんでした。何か案は?

答えて

0

しばらくの間研究したところ、AWS S3でObjectVersioningがオンになっているようです。 ObjectVersioningをオンにすると、obj.write(:file => "/file_to_upload.pdf")を呼び出すと、.exists?メソッドが定義されていないObjectVersionが返されます。 ObjectVersioningがオフの場合、obj.write(:file => "/file_to_upload.pdf").exists?メソッドを持つObjectを返します。

奇妙で矛盾していますが、私はこれが他の誰にとっても役立つことを願っています。

関連する問題