【问题标题】:AWS upload file to S3 Access Denied with user who has full s3 access - React NativeAWS 将文件上传到 S3 访问被拒绝,具有完全 s3 访问权限的用户 - React Native
【发布时间】:2020-08-11 21:38:13
【问题描述】:

我正在尝试使用 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>"
        }
    ]
}

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

【问题讨论】:

  • 显示的存储桶策略不允许 any 对象访问。对象资源将是 arn:aws:s3:::bucketname/*
  • 将其更改为 arn:aws:s3:::bucketname/* - 仍然被拒绝访问
  • 您没有显示任何代码,所以我们在这里稍微猜测一下,但是您在上传对象时是否设置了 public-read 或类似的 ACL?如果您启用了阻止公共访问,您将无法公开对象。您可能应该使用bucket-owner-full-control
  • 我将其设置为 bucket-owner-full-control 并且它现在可以工作了 - Raul 的回答也可以。感谢您的帮助!

标签: amazon-web-services react-native amazon-s3 file-upload


【解决方案1】:

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

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

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

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

您需要将其设置为private

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2021-10-01
    • 2020-09-30
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多