我正在使用node aws-sdk
与已使用以下政策设置的用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1458935963000",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::mybucket1/*"
]
}
]
}
存储桶本身没有附加任何明确的政策。 Permissions
设置如下:
以下内容产生403
:
<video src="https://s3-us-west-2.amazonaws.com/mybucket1/default21.mp4">
</video>
存储桶名称已更改,但S3与视频一起存在。任何帮助将不胜感激。
更新1
即使使用aws-sdk
S3帐户启动root/owner
,也会获得相同的结果。
答案 0 :(得分: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
});
});