AWS s3:将存储桶中单个文件夹中的权限从公共更改为私有

时间:2019-04-05 05:25:58

标签: amazon-web-services amazon-s3 aws-cli

如何在AWS s3的单个文件夹上将public的ACL形式更改为private?。

现在我正在使用此命令

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

但这会更改存储桶中所有文件夹的权限

1 个答案:

答案 0 :(得分:2)

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

    单个对象上的
  • 访问控制列表(ACL)-适用于一次性访问特定对象
  • S3存储桶上的
  • 存储桶策略-适用于提供对整个存储桶或部分存储桶的访问权限
  • IAM用户或IAM角色的政策-适用于向特定用户提供访问权限

请注意,没有文件夹权限。实际上,文件夹实际上并不存在于Amazon S3存储桶中(即使看起来像它们一样,也没有!)。

默认情况下,Amazon S3中的所有数据都是私有数据。因此,要回答您的问题“我如何从公共访问变为私有访问”,答案是您应该撤消所做的一切以使其公开。。因此,如果您通过ACL授予访问权限,则应删除通过ACL进行的公共访问。 (顺便说一句,不建议使用ACL授予公共访问权限。请考虑改用Bucket Policy或IAM Policy。)

如果希望更改现有对象的ACL,则可以复制对象本身,但可以指定其他ACL。您可能还需要指定其他字段(例如元数据),以使更改生效。

有关示例,请参见:Amazon S3 changing object permissions retroactively