2016-09-15 35 views
1

我是AWS的新手,所以我確信我只是在某個地方缺少設置。目前我已經直接上傳到我的Rails App上設置的S3,當我將圖像上傳到我的應用程序時,JS觸發器,我已經克服了CORS問題,圖像出現在我的S3控制檯中。好極了。Amazon S3圖片未顯示 - 此對象的所有訪問權限已被禁用

問題是當我嘗試查看圖像。當我轉到生成的圖像url(由S3返回並由控制檯中的樹形結構確認)時,我得到一個403 HTTP響應和有趣的XML錯誤(我擡起頭,發現只與InvalidPayer有關,我可以「找不到任何地方的任何引用除外here):

<Error> 
    <Code>AllAccessDisabled</Code> 
    <Message>All access to this object has been disabled</Message> 
    <RequestId>DF2E5FCE3EF9A8A9</RequestId> 
    <HostId> 
BRqoJ5qxtYfe4ykFCxJftgghNbHvmp/hZQggrLszOwxz2oCje8gCLmZFex0Zebu8k/O+1cSJyic= 
    </HostId> 
</Error> 

其樂無窮!我一直在環顧四周,發現我可能需要爲我的IAM用戶設置權限,並設置存儲桶權限,以便其他人可以訪問圖像。所以我去了我的用戶的IAM權限,並添加了AmazonS3FullAccess,這似乎是最明顯和最全面的選擇。此外,我去我的桶設置其他人的權限和規定以下內容:

{ 
    "Id": "PolicyIdHere", 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "StmtIdHere", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::my-bucket-name/*", 
      "Principal": "*" 
     } 
    ] 
} 

PS,通過AWS使用他們policy generator產生的桶設置,所以我懷疑它是沒有錯的,否則我錯過了一個微妙之處。

我想,如果我想想,好像我已經設置了我可能需要得到視圖圖像的所有權限自己,但也許有一些需要配置其他設置,允許與任何人正確的S3網址來查看圖像?

在此先感謝您的任何建議。

回答

3

捂臉

我的另一個經典的應該-是自明的,答案是我今天早上看着這個新鮮之後才注意到。 A)你需要做我提到的事情...... CORS設置(如果你使用JS直接上傳到S3而不是使用你的應用程序來做),IAM用戶設置和存儲桶權限都需要正確配置。但是:B)你必須正確地構建URL,杜。 S3正在返回存儲桶和路徑,但不是基本URL。所以我打算去s3.amazonaws.com/path-to-asset,但不是s3.amazonaws.com/bucket-name/path-to-asset,這顯然是關鍵。

雅'活和雅'學習。