首页 > 解决方案 > AWS 将文件上传到 S3 访问被拒绝,具有完全 s3 访问权限的用户 - React Native

问题描述

我正在尝试使用 react-native-s3-upload 包将文件上传到我的 React Native 应用程序中的 S3 存储桶。这仅在我在 S3 中将“阻止公共访问”设置为“关闭”时才有效。否则我得到<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>. 随 put 请求提供的访问密钥和秘密密钥适用于属于具有 AmazonS3FullAccess 的组的 IAM 用户。我也将此策略附加到存储桶:

    {
    "Version": "2012-10-17",
    "Id": "Policyxxxxxxx",
    "Statement": [
        {
            "Sid": "Stmtxxxxxxx",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxx:user/<user name>"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<bucket name>"
        }
    ]
}

我尝试了各种解决方案,但似乎没有任何效果。如果我用虚拟文本替换密钥和访问密钥,那么它会返回<Error><Code>InvalidAccessKeyId</Code><Message>,所以它肯定是用密钥让我登录,但似乎忽略了权限。

标签: amazon-web-servicesreact-nativeamazon-s3file-upload

解决方案


如果您的 IAM 用户具有 AmazonS3FullAccess 策略,它应该可以很好地连接到存储桶。

我认为问题在于默认对象 acl 是公共的,

https://www.npmjs.com/package/react-native-s3-upload

acl - 此对象的访问控制列表。默认为公开阅读

您需要将其设置为private


推荐阅读