2012-06-19 50 views
3

我已經開始使用S3來託管連接到Rails模型的圖像。用戶不上傳圖片,所以我只用aws_sdk gem將圖像存儲到S3存儲桶。針對網絡應用託管公共圖像的S3權限

到目前爲止,我已經成功地存儲了圖像,但我對該權限感到困惑。也許我錯了,但似乎大多數關於S3權限的文檔已經過時,我找不到它們指的是什麼。

我想要做的是非常基本的。我只想託管圖片,圖片本身是公開的,任何人都可以查看。不過,我不希望任何人只是訪問我的存儲桶並查看其中託管的所有其他內容。所以基本上它只是一個正常的網絡應用程序,它在S3上託管圖像。如何以及在哪裏可以更改權限設置,使其以這種方式工作?目前,訪問權限僅授予我自己,並且通過在瀏覽器中輸入網址無法查看圖像。

回答

2

回答我的問題: 它似乎並不像一些設置爲「公共」,並期望所有的工作內容一樣簡單。基本上你需要編寫一個策略,並將其應用到一個桶中,如果你想讓你的桶可以被公衆查看。

在這裏你可以建立自己的政策頁:http://awspolicygen.s3.amazonaws.com/policygen.html

+0

我也面臨同樣的問題。 http://stackoverflow.com/questions/19496026/permissions-of-files-on-s3請你詳細說明你如何制定政策。 –

1

看看文檔,更詳細的S3Objects寫入方法:Class: AWS::S3::S3Object,它允許您爲上傳的文件設置一堆選項。

當上傳到您的S3存儲你已設置了正確的:acl權限,因爲它的默認值是:private並沒有公開允許訪問。這裏有一個修改的摘錄,我從github抓起:

# get an instance of the S3 interface using the default configuration 
s3 = AWS::S3.new 

# create a bucket 
b = s3.buckets.create('example') 

# upload a file 
basename = File.basename('image.png') 
o = b.objects[basename] 
o.write(:file => file_name, :acl => :public_read) 

# grab public url 
image_public_url = o.public_url 

... 
+0

感謝您的回答,但我的問題是關於許可。我已經擁有所有的代碼,但由於權限問題,它只是沒有運行。 – Vlad