Amazon web services AWS s3:在bucket上的单个文件夹中将权限从public更改为private

Amazon web services AWS s3:在bucket上的单个文件夹中将权限从public更改为private,amazon-web-services,amazon-s3,aws-cli,Amazon Web Services,Amazon S3,Aws Cli,如何将AWS s3中单个文件夹上的ACL从公用更改为专用 现在我正在使用这个命令 aws s3 ls --recursive s3://<bucket-name> | cut -d' ' -f5- | awk '{print $NF}' | while read line; do echo "$line" aws s3api put-object-acl --acl private --bucket <bucket> --key "$line" done

如何将AWS s3中单个文件夹上的ACL从公用更改为专用

现在我正在使用这个命令

aws s3 ls --recursive s3://<bucket-name> | cut -d' ' -f5- | awk '{print $NF}' | while read line; do
    echo "$line"
    aws s3api put-object-acl --acl private --bucket <bucket> --key "$line"
done
aws s3 ls——递归s3://|cut-d'-f5-|awk'{print$NF}'|同时读取行;做
回音“$line”
aws s3api放置对象acl--acl专用--bucket--key“$line”
完成

但这将更改bucket中所有文件夹的权限

有三种方法可以授予对Amazon S3中对象的公共访问权限:

  • 单个对象上的访问控制列表(ACL)用于提供对特定对象的一次性访问
  • S3存储桶上的存储桶策略-用于提供对整个存储桶或部分存储桶的访问
  • IAM用户或IAM角色的策略-用于向特定用户提供访问权限
请注意,对文件夹没有权限。事实上,文件夹实际上并不存在于AmazonS3存储桶中(尽管看起来像是存在的,但实际上不存在!)

默认情况下,AmazonS3中的所有数据都是私有的。因此,要回答您关于“如何从公共访问更改为私人访问”的问题,答案是您应该将您所做的一切更改为公共访问。因此,如果您通过ACL授予访问权限,那么您应该删除通过ACL的公共访问权限。(顺便说一下,不建议使用ACL来授予公共访问权限。请考虑使用桶策略或IAM策略。)< /P> 如果要更改现有对象上的ACL,可以将对象复制到其自身之上,但可以指定不同的ACL。您可能还需要指定另一个字段(如元数据),以使更改生效


例如,请参阅:

@Jhon,因此无法更改单个文件夹中对象的ACL??。有一件事我发现我需要从web手动更改每个对象的ACL。最好不要使用ACL公开任何内容。相反,使用Bucket策略来控制对路径(文件夹)的访问。更改文件夹上的ACL不会产生任何影响,因为文件夹实际上并不存在。是的,我已从bucket策略中删除了
getObjet
,但问题是某些对象是使用默认公共读取上载的。