我已经尝试了几乎所有可能的存储桶策略。还尝试向用户添加策略,但每当我尝试使用AWS控制台从s3存储桶下载对象时,我都会拒绝访问。
广告管理政策:
{
"Version": "2012-10-17",
"Id": "MyPolicy",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::12345678901011:user/my-username"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"XX.XXX.XXX.XXX/24",
"XXX.XXX.XXX.XXX/24"
]
}
}
}
]
}
这不起作用所以我尝试在我的用户名中添加政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StmtXXXXXXXXXX",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
答案 0 :(得分:12)
听起来很奇怪,可以将对象上传到Amazon S3,拥有存储桶的帐户无法访问。
当对象上传到Amazon S3(PutObject
)时,可以指定访问控制列表(ACL)。可能的值有:
您通常应该使用bucket-owner-full-control
ACL上传对象。这允许桶的所有者访问对象和控制对象的权限(例如删除它)。
如果未提供此权限,则他们无法访问或修改对象。
我知道这与你认为水桶应该有效的方式相矛盾,但这是真的!
如何修复:
bucket-owner-full-control
ACL或CopyObject
。这会更改权限,而无需重新上传。答案 1 :(得分:1)
您可以使用:http://docs.aws.amazon.com/cli/latest/reference/s3api/put-object-acl.html
解决此问题put-object-acl:这必须由原始上传者完成。
但肯定比再次复制数据更快。
我有TB的数据要处理。
aws s3api put-bucket-acl --bucket $foldername --key $i --grant-full-control uri=http://acs.amazonaws.com/groups/global/AllUsers