【问题标题】:How can migrate buckets without losing the public permissions on objects?如何在不丢失对象公共权限的情况下迁移存储桶?
【发布时间】:2019-12-06 19:07:13
【问题描述】:

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

一些前因:

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

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

希望你能帮助我,谢谢!

【问题讨论】:

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


    【解决方案1】:

    您可以使用同步中的 --acl 参数轻松地为您复制的对象添加公共访问权限。从您在问题中粘贴的网址中,我看到您使用了通用命令:

    aws s3 sync s3://awsexamplesourcebucket s3://awsexampledestinationbucket
    

    在上面的命令中添加 --acl 参数:

    aws s3 sync s3://awsexamplesourcebucket s3://awsexampledestinationbucket --acl 'public-read'
    

    --acl (string) 执行命令时设置对象的 ACL。如果您使用此参数,则您的 IAM 策略的操作列表中必须包含“s3:PutObjectAcl”权限。只接受 private、public-read、public-read-write、authenticated-read、aws-exec-read、bucket-owner-read、bucket-owner-full-control 和 log-delivery-write 的值。

    如果您的某些对象需要公开而其他对象不需要公开,那么您需要将上述命令与 [--include ][--exclude ] 结合使用> 以授予对您的某些对象的公共访问权限和对其他对象的私有访问权限。

    参考

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

    【讨论】:

      猜你喜欢
      • 2018-06-03
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多