以下是我的存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:PutObject",
"s3:GetObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
这是我的Iam用户内联策略
acl:'public-read'
现在,我正尝试使用带有varbinary
的multer-s3上传文件,并且我得到403访问被拒绝。如果我不使用multer中的acl属性,则可以顺利上传。
答案 0 :(得分:0)
您可能已经解决了此问题,但如果尚未解决,则可能有许多不同的解决方法(请参阅:https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/)。
但是我遇到了同样的问题,以下是对我来说解决该问题的方法。
我假设您在尝试上传文件时正在呼叫s3.upload()
。我发现,如果您的upload()
选项中没有Bucket参数,您还将收到403。
即确保您的upload()
通话如下:
await s3.upload({
Bucket: // some s3Config.Bucket
Body: // Stream or File,
Key: // Filename,
ContentType: // Mimetype
}).promise();
Bucket: // some s3Config.Bucket
-我以为new AWS.S3(config)
处理了存储桶,因此在函数调用中缺少此参数。事实证明,您应该始终将存储桶添加到上传参数中。