我需要在两个AWS账户之间迁移几个存储桶。通过AWS CLI执行一些配置,然后从一个S3复制到另一个S3,可以实现此目的。我遵循了Copy S3 Objects From Another AWS Account,一切正常。但是,当我查看对象的权限时,未启用公共访问。
一些前提:
这时,我需要将内容迁移到目标存储桶,而又不丢失对象的公共访问权限。我在AWS文档和其他博客中寻找了此内容,但没有找到任何内容。
希望您能帮助我,谢谢!
答案 0 :(得分:0)
您可以使用同步中的--acl参数轻松向复制的对象添加公共访问权限。从您在问题中粘贴的网址,我看到您使用了通用命令:
aws s3 sync s3://awsexamplesourcebucket s3://awsexampledestinationbucket
在上面的命令中添加--acl参数:
aws s3 sync s3://awsexamplesourcebucket s3://awsexampledestinationbucket --acl 'public-read'
-acl(字符串)设置执行命令时对象的ACL。如果使用此参数,则必须具有IAM策略操作列表中包含的“ s3:PutObjectAcl”权限。仅接受私有,公共读取,公共读取写入,身份验证读取,aws-exec读取,存储桶所有者读取,存储桶所有者完全控制和日志传递写入的值。
如果您的某些对象需要公开,而其他对象则不需要,那么您需要结合使用上述命令和 [-include] 和 [-exclude] 以授予对您的某些对象的公共访问权,而对其他对象则是私有的。
参考