如何在不丢失对象公共权限的情况下迁移存储桶?

时间:2019-12-06 19:07:13

标签: amazon-web-services amazon-s3 bucket

我需要在两个AWS账户之间迁移几个存储桶。通过AWS CLI执行一些配置,然后从一个S3复制到另一个S3,可以实现此目的。我遵循了Copy S3 Objects From Another AWS Account,一切正常。但是,当我查看对象的权限时,未启用公共访问。

一些前提:

  • 我的来源存储桶是私有的,但可以包含公共内容
  • 我的目标存储桶与我的源存储桶具有相同的配置
  • 我的源存储桶中的某些文件已启用公共访问权限
  • 迁移内容后,目标存储区中的文件将带有 启用访问权限的公共用户会失去此权限

这时,我需要将内容迁移到目标存储桶,而又不丢失对象的公共访问权限。我在AWS文档和其他博客中寻找了此内容,但没有找到任何内容。

希望您能帮助我,谢谢!

1 个答案:

答案 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] 以授予对您的某些对象的公共访问权,而对其他对象则是私有的。

参考

  1. https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html