我有一个非常基本的目标:将我的存储桶中的所有内容分享给一组特定用户,只读。以前可以用一个名为 s3cmd 的工具来实现这个目标。我只需要将一个用户(通过电子邮件识别)添加到“访问控制列表”,并且他们就可以顺利地列出或下载数据。
但是最近突然间就无法正常使用了。系统拒绝任何尝试访问我的存储桶。
于是我开始考虑编辑存储桶策略。这里是我的策略草案,由政策生成器生成(敏感信息已经匿名化):
当我点击“保存”时,出现“策略具有无效操作”的错误。然后我尝试删除“ListObjects”,因此策略变为:
并得到了另一个错误提示"Action does not apply to any resource(s) in statement"。对我来说这两个错误都没有意义。如果我理解有误,请纠正我。如果我走错了方向,请帮助我。
顺便说一下,我试图按照http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html中的教程操作,但没有成功。我使用了以下存储桶策略:
当使用 AccountB 的 awscli 执行“aws s3 ls s3://examplebucket”时,我收到了一个错误信息。错误信息是“An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied”。
这让我感到困惑。如果我添加 ListObjects,就会得到一个“无效”的错误。如果我删除ListObjects,另一个用户就无法读取我的存储桶内容。
我该怎么办?
但是最近突然间就无法正常使用了。系统拒绝任何尝试访问我的存储桶。
于是我开始考虑编辑存储桶策略。这里是我的策略草案,由政策生成器生成(敏感信息已经匿名化):
{
"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"
]
}
}
]
}
当我点击“保存”时,出现“策略具有无效操作”的错误。然后我尝试删除“ListObjects”,因此策略变为:
{
"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"
]
}
}
]
}
并得到了另一个错误提示"Action does not apply to any resource(s) in statement"。对我来说这两个错误都没有意义。如果我理解有误,请纠正我。如果我走错了方向,请帮助我。
顺便说一下,我试图按照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"
]
}
]
}
当使用 AccountB 的 awscli 执行“aws s3 ls s3://examplebucket”时,我收到了一个错误信息。错误信息是“An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied”。
这让我感到困惑。如果我添加 ListObjects,就会得到一个“无效”的错误。如果我删除ListObjects,另一个用户就无法读取我的存储桶内容。
我该怎么办?