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
});
});
我正在 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
});
});