amazon-web-services - AWS S3 浏览器上传出现访问被拒绝错误

标签 amazon-web-services amazon-s3

我尝试使用 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 key / secret 从我的计算机或 EC2 实例上传文件时,它可以工作,但使用带有签名策略的浏览器上传时,会出现上述错误。

最佳答案

我明白了。我将请求(和内部策略)中的 acl 设置为公共(public)读取,这需要存储桶策略中的附加权限。我将“s3:PutObjectAcl”添加到操作列表中并且它起作用了。

关于amazon-web-services - AWS S3 浏览器上传出现访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356304/

相关文章:

python - 如何使用 boto3 从/到 stdin/stdout 到/从 S3 流式传输

java - 如何从用 Java 编写的 AWS Lambda 返回二进制数据

java.lang.IllegalArgumentException : The region 'eu-west-2' is not a valid region

php - 在亚马逊 Linux 上安装 PHP 的 mongo 驱动程序时出错

amazon-s3 - 通过 aws 命令将内容编码设置为特定文件

angularjs - Angular 和 Cloudfront 与 Safari

amazon-web-services - AWS Athena - 将 CloudFront 日志时间字段转换为时间戳

mysql - 我们可以写一个脚本在每次网站关闭时重新启动 MySQL 吗?

typescript - NestJS - 如何将图像上传到 aws s3?

static - Nginx image_filter