2016-03-28 122 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 
    }); 

}); 
相关问题