【发布时间】:2018-09-24 23:22:44
【问题描述】:
我正在尝试授予程序化 IAM 用户访问单个存储桶的权限。
我设置了以下策略并将其附加到用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::mybucket/*"
]
}
]
}
尝试以编程方式上传文件我得到了 403。
我从这里得到了这个政策:
Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket
我通过添加 AWS 托管策略 AmazonS3FullAccess 验证了其他一切正常,之后我的上传成功。但我宁愿不给这个用户完全访问权限。
此用户没有附加任何其他政策。
【问题讨论】:
-
你是如何执行上传的? CLI 命令?或者你能告诉我们产生错误的代码吗?该代码可能正在调用另一个 API。同一用户可以下载文件吗?
-
我正在使用 Rails 控制台中的 Ruby gem dragonfly-s3_data_store 执行它。代码是`Dragonfly.app.store('local/path/to/file')。当 S3 全部访问策略生效时,相同的代码可以正常工作。
-
尝试设置调试模式。该代码可能正在尝试使用其他方法,例如
GetBucketLocation或ListBucket。调试模式可能会向您显示来自 AWS 的完整禁止响应。也可以试试awscli:aws s3 cp /local/path/to/file s3://my-bucket/file-name
标签: amazon-web-services amazon-s3 amazon-iam