我需要在我的亚马逊账户中创建一个存储桶的镜像副本。
主要问题是一些对象具有“私有”权限,而另一部分对象具有“公共读取”权限。
当我运行时:
aws s3 sync s3://bucket-saas s3://bucket-saas-bkp --acl public-read
所有对象都成为公共对象,而当我运行
aws s3 sync s3://bucket-saas s3://bucket-saas-bkp --acl private将所有对象变为私有。
有没有办法同步文件并保留它们的权限?
发布于 2019-06-30 00:31:19
我也遇到过同样的问题--我有一个装有大量对象的桶,而其中一些对象应该是可以公开访问的。我不得不将整个存储桶复制到另一个存储桶中,同时保留ACL,当然,手动设置ACL将花费我极大的时间。
我用python编写了这个简单的脚本,它将对象从一个存储桶复制到另一个存储桶,并为其设置ACL。
发布于 2019-03-24 22:26:12
--acl是一种预定义的授权。您可以在AWS Documentation for Canned ACLs中查看可用的封装ACL。遗憾的是,当您通过CLI在存储桶之间复制对象时,看起来没有保留现有权限的选项。根据存储桶名称,我假设您正在尝试将一个存储桶备份到另一个存储桶。亚马逊确实提供了一个叫做Cross Region Replication的功能,我想这正是你想要的。CRR非常适合这一点,因为它将跨每个对象立即复制到备份存储桶中,同时保留与该对象关联的大量数据。
目标存储桶中的对象副本是源存储桶中对象的精确副本。它们具有相同的密钥名称和相同的元数据-例如,创建时间、所有者、用户定义的元数据、版本ID、访问控制列表(ACL)和存储类。您还可以为对象复制副本显式指定不同的存储类。无论谁拥有源存储桶或源对象,您都可以选择将副本所有权更改为拥有目标存储桶的AWS帐户。
如果这不是你想要做的,你只是想要一个脚本来在存储桶之间同步对象并保留权限,那么你可能不得不编写一个脚本,在将每个对象复制到新的存储桶后查找它,并将现有的权限分配给它。记住,你必须为这些AWS操作付费,所以我建议你做你的研究,这样你就不会在你的S3账单上得到任何令人讨厌的惊喜。
https://stackoverflow.com/questions/55324581
复制相似问题