AWS S3 GET returns 状态码 403

AWS S3 GET returns status code 403

我正在 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 启动,也会得到相同的结果。

您的 <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
  });

});