AWS S3浏览器上载获取“拒绝访问”错误

时间:2016-02-12 06:38:09

标签: amazon-web-services amazon-s3 amazon

我正在尝试使用POST AWS签名版本4直接从浏览器将文件上传到S3存储桶。最初,我收到了签名验证错误,我设法解决但现在我收到此错误:

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>9343E20EAA0FD14E</RequestId
  <HostId>RldZp4h5n6tK8R5WKmWnn0k8PNvJGxb6m...</HostId>
</Error>

我在S3存储桶中启用了日志记录,但它们很少,并且没有提供任何其他信息。

我有以下存储桶政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::000000000000:user/username"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::bucketname/*"
        }
    ]
}

当我使用我的用户的API密钥/密码从我的计算机或EC2实例上传文件时,它可以正常工作,但使用带有签名策略的浏览器上传,会给我上述错误。

2 个答案:

答案 0 :(得分:3)

我明白了。我在请求(和内部策略)中将acl设置为public-read,这需要在存储桶策略中添加权限。我将“s3:PutObjectAcl”添加到Actions列表中并且它可以工作。

答案 1 :(得分:2)

对我来说,我需要访问IAM控制台并将策略附加到用户的访问密钥和我用来签署策略的秘密。我附加的政策是AmazonS3FullAccess