Amazon s3 如何在AmazonS3中定义权限
我在amazon上有这样一个结构-Amazon s3 如何在AmazonS3中定义权限,amazon-s3,Amazon S3,我在amazon上有这样一个结构- (bucket name) MyImages --- (key) general ---- 1.jpg ---- 2.jpg 我已经使用S3 Firefox Organizer工具创建了密钥(general),并为所有用户设置了读取权限。现在,通过一个java程序,当我上传这个密钥内的图像时,我想将每个对象的权限设置为密钥拥有的权限。但这并没有发生,我必须编写一些额外的代码来设置每个对象的权限 AccessControlLi
(bucket name) MyImages
--- (key) general
---- 1.jpg
---- 2.jpg
我已经使用S3 Firefox Organizer工具创建了密钥(general),并为所有用户设置了读取权限。现在,通过一个java程序,当我上传这个密钥内的图像时,我想将每个对象的权限设置为密钥拥有的权限。但这并没有发生,我必须编写一些额外的代码来设置每个对象的权限
AccessControlList acl = s3.getBucketAcl("MyImages");
// give everyone read access
acl.grantPermission(GroupGrantee.AllUsers, Permission.Read);
s3.setObjectAcl("MyImages", "general/1.jpg", acl);
有没有办法摆脱上面的代码。为什么对象没有获得作为密钥或存储桶的权限 以下代码适用于我。用正在写入S3的文件对象替换要保存的文件
PutObjectRequest por = new PutObjectRequest("MyImages", "general/1.jpg", file_to_save);
o.setCannedAcl(CannedAccessControlList.PublicRead);
您还可以尝试使用Bucket策略使Bucket中的所有文件公开可用 可以对现有文件以及所有新文件应用权限 下面是一个使Bucket中的所有文件公开可用的Bucket策略示例:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
下面是如何使用S3浏览器免费软件应用Bucket策略:如果您想使用“浏览器”软件(如s3browser、s3fox或s3 browser for chrome)访问存储桶,您需要在s3的根目录上添加权限,如下所示
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
}
给予
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
},
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
}
]
}