一般公開されているバケットの作成に問題があります。私は Amazon aws-sdk v 1.60.2 を使用して CEPH / Rados ストアで働いています
多くの異なるチュートリアルに似たバケットを作成しました
s3.buckets.create('bucketName', :acl => :public_read)
その後、いくつかのファイルをアップロードしましたs3.buckets['bucketName']
が、バケットの特定のアクセス許可を確認すると、それが内部オブジェクトであり、バケットを作成したユーザーに FULL_CONTROL が設定されているだけでなく、AllUsers グループに READ アクセス許可が付与されていることがわかります。 . ただし、オブジェクトは匿名の読み取りアクセス許可を継承しません。バケット内のオブジェクトを匿名で読み取り可能にする必要があります。
注として、実行するとこれらの権限が表示されますs3.buckets['bucketName'].acl
。実行しようとするs3.buckets['bucketName'].policy
と、意味のない次のエラーが表示されます。
/var/lib/gems/1.9.1/gems/json-1.8.3/lib/json/common.rb:155:in `parse': 757: unexpected token at '<?xml version="1.0" encoding="UTF-8"?><ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Name>erik.test</Name><Prefix></Prefix><Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated></ListBucketResult>' (JSON::ParserError)
from /var/lib/gems/1.9.1/gems/json-1.8.3/lib/json/common.rb:155:in `parse'
from /var/lib/gems/1.9.1/gems/aws-sdk-v1-1.60.2/lib/aws/core/policy.rb:146:in `from_json'
from /var/lib/gems/1.9.1/gems/aws-sdk-v1-1.60.2/lib/aws/s3/bucket.rb:621:in `policy'
from test.rb:20:in `<main>'
上記のエラーは、aws-sdk が XML 文字列で json パーサーを呼び出しているように見えますが、これは発生すべきではありません。
私のプロジェクトでは BOSH がストアに自動的にアップロードされるため、明示的なアクセス許可を持つオブジェクトを単純にアップロードすることはできません。