2016-03-28 119 views
0

我使用node aws-sdk與誰已經設置了以下策略的用戶:AWS S3 GET返回狀態碼403

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "Stmt1458935963000", 
     "Effect": "Allow", 
     "Action": [ 
      "s3:DeleteObject", 
      "s3:GetObject", 
      "s3:PutObject" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::mybucket1/*" 
     ] 
    } 
] 
} 

桶本身並沒有附帶任何顯式的政策。 Permissions設置如下: enter image description here

下產生403

<video src="https://s3-us-west-2.amazonaws.com/mybucket1/default21.mp4"> 
</video> 

鬥名稱已更改,但它與視頻一起在S3存在。任何幫助都感激不盡。

UPDATE 1 獲得即使aws-sdk被引導與S3帳戶的root/owner相同的結果。

回答

0

您的<video>標記未使用您的nodejs代碼已設置的身份驗證機制。

視頻標籤被加載到瀏覽器中,瀏覽器對他的AWS SDK或您的節點服務器一無所知。

您需要use a pre-signed URL作爲視頻標籤。

在服務器上生成URL,然後在視頻標記中使用該URL。例如,如果您使用Express:

router.get("/whatever", function(req, res, next){ 


    var params = {Bucket: 'mybucket', Key: 'default21.mp4'}; 
    var url = s3.getSignedUrl('getObject', params); 

    res.render("some/view", { 
    videoUrl: url 
    }); 

}); 
相關問題