NodeJS的AWS S3 403访问被拒绝问题

时间:2020-04-02 18:35:47

标签: node.js amazon-web-services amazon-s3 multer multer-s3

以下是我的存储桶策略

{
    "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属性,则可以顺利上传。

1 个答案:

答案 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)处理了存储桶,因此在函数调用中缺少此参数。事实证明,您应该始终将存储桶添加到上传参数中。

相关问题