我有一个非常基本的目标:将我的存储桶中的所有内容共享给特定用户列表,只读。这曾经与名为 s3cmd 的工具一起使用。我需要做的就是将用户(通过电子邮件标识)添加到Access Control List with Read Permission
,并且他们可以顺利地列出或下载数据。
但最近,这个突然不行了。系统只是拒绝任何访问我的存储桶的尝试。
然后我开始考虑编辑存储桶策略。这是我的政策草案,由政策生成器生成(敏感信息已匿名):
{
"Id": "Policy123456789",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1512705836469",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:ListObjects"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::mybucketname",
"Principal": {
"AWS": [
"arn:aws:iam::anotheruserid:user/admin"
]
}
}
]
}
当我点击save
,我得到一个“政策的操作无效“错误。然后我尝试删除”列表对象“所以政策就变成了
{
"Id": "Policy123456789",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1512705836469",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::mybucketname",
"Principal": {
"AWS": [
"arn:aws:iam::anotheruserid:user/admin"
]
}
}
]
}
并收到另一条错误消息“操作不适用于语句中的任何资源".
这两个错误对我来说没有意义。如果我错了,请纠正我。如果我的方向不对,请帮助我。
顺便说一句:我尝试按照教程进行操作http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html但没有成功。通过使用以下存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::examplebucket"
]
}
]
}
使用 Account 的 aws cli 执行时收到错误消息“aws s3 ls s3://examplebucket".
错误消息是“调用ListObjects操作时发生错误(AccessDenied):访问被拒绝".
这让我很困惑。如果我添加列表对象,我得到了一个"invalid" error
.
如果我删除“列表对象”,另一个用户无法读取我的存储桶内容。
我应该怎么办?