【发布时间】: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>"
}
]
}
我尝试了各种解决方案,但似乎没有任何效果。如果我用虚拟文本替换密钥和访问密钥,那么它会返回 <Error><Code>InvalidAccessKeyId</Code><Message>,所以它肯定是用密钥让我登录,但似乎忽略了权限。
【问题讨论】:
-
显示的存储桶策略不允许 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