2014-11-01 22 views
29

我最近繼承使用S3資產的存儲一個Rails應用程序。我已將所有資產轉移到S3存儲桶中,沒有任何問題。然而,當我改變應用程序指向新的桶時,我得到了403禁止狀態。亞馬遜S3存儲歸國403禁止

我的S3存儲設置了以下設置:

權限

每個人都可以列出

桶政策

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "PublicReadGetObject", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::bucketname/*" 
    } 
] 
} 

CORS配置

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
    </CORSRule> 
    <CORSRule> 
     <AllowedOrigin>https://www.appdomain.com</AllowedOrigin> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>DELETE</AllowedMethod> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

靜態網頁寄存

啓用。

還有什麼能做些什麼來讓公衆達到這些資產?

回答

19

的問題是,轉讓是根據this thread完成,這本身不是一個問題。這個問題來自於之前的開發者在傳輸之前沒有改變文件的權限。這意味着我無法管理任何文件,即使它們在我的存儲桶中。

問題是通過重新下載文件乾淨地從以前的水桶,刪除舊文件幻象,重新上傳新文件,並設置其權限,以允許文件的公衆閱讀解決。

14

我知道這是一個古老的線程,但我遇到同樣的問題。我有一切工作了幾個月,它只是突然停止工作,給我一個403 Forbidden錯誤。事實證明,系統時鐘是真正的罪魁禍首。我認爲s3使用某種基於時間的令牌,其壽命很短。在我的情況下,我只是跑:

ntpdate pool.ntp.org 

而問題就消失了。如果它有任何相關性,我正在運行CentOS 6。這是輸出示例:

19 Aug 20:57:15 ntpdate[63275]: step time server ip_address offset 438.080758 sec 

希望在幫助!

+0

感謝張貼它。我剛纔與Windows有同樣的問題。糾正系統解決它的時間。 – 2017-01-19 11:23:29

+3

上帝保佑你,好人。並且請毫不猶豫地回答舊線程。 – Yaroslav 2017-07-19 15:20:01

5

它也可能是一個正確的政策需要根據亞馬遜的文檔進行設置。

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html

給有問題的桶這一政策

{ 
    "Version":"2012-10-17", 
    "Statement":[{ 
    "Sid":"PublicReadGetObject", 
     "Effect":"Allow", 
     "Principal": "*", 
     "Action":["s3:GetObject"], 
     "Resource":["arn:aws:s3:::YOUR-BUCKET-NAME/*" 
     ] 
    } 
    ] 
} 
+0

我不得不添加一個帶有「/ *」的語句從資源中刪除。 – ram4nd 2017-03-02 08:39:43