【发布时间】:2016-05-23 05:32:38
【问题描述】:
我正在尝试使用 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 实例上传文件时,它可以工作,但使用带有签名策略的浏览器上传,会出现上述错误。
【问题讨论】:
-
可能的解决方案是在CORS附加信息docs.aws.amazon.com/AmazonS3/latest/dev/cors.html中添加
<AllowedOrigin>http://www.example1.com</AllowedOrigin>和<AllowedMethod>POST</AllowedMethod> -
不,这不是 CORS 错误。
标签: amazon-web-services amazon-s3 amazon