【问题标题】:AWS CLI syncing S3 buckets with multiple credentialsAWS CLI 使用多个凭证同步 S3 存储桶
【发布时间】:2016-12-14 07:46:09
【问题描述】:

我对源 S3 存储桶具有只读访问权限。我无法更改此源帐户和存储桶的权限或任何类似内容。我不拥有此帐户。

我想将源存储桶中的所有文件同步到我的目标存储桶。我拥有包含目标存储桶的帐户。

我有一组单独的凭据,用于我不拥有的源存储桶和我拥有的目标存储桶。

有没有办法使用 AWS CLI 在使用两组凭证的存储桶之间进行同步?

aws s3 sync s3://source-bucket/ --profile source-profile s3://destination-bucket --profile default

如果没有,我如何设置我拥有的目标存储桶的权限,以便我可以与 CLI 同步?

【问题讨论】:

  • 这两个存储桶是否在不同的 AWS 账户中?您是否有能力修改存储桶策略?如果是这样,请参阅此答案:stackoverflow.com/a/17162973/1428388
  • @jbird 他们不是。他们在不同的帐户中。我不拥有但已获得读取凭据的帐户中的源存储桶,以及我拥有的帐户中的目标存储桶。
  • 使用 EC2 实例从一个存储桶下载文件并将它们上传到另一个存储桶可能是最快的。这样您就不必支付带宽费用并获得更好的速度。可能存在更好的方法,但我不知道。

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


【解决方案1】:

内置的 S3 复制机制,在 API 级别,要求将请求提交目标存储桶,识别请求中的源存储桶和对象,并使用 single 一组具有从源读取和写入目标的授权。

这是唯一受支持的从一个存储桶复制到另一个存储桶而无需下载和上传文件的方式。

标准解决方案位于http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html

您可以授予他们的用户写入您的存储桶的权限,或者他们可以授予您的用户对其存储桶的访问权限...但是如果没有两个帐户所有者的同谋,就不可能在不下载和重新上传文件的情况下从一个存储桶复制到另一个存储桶建立一组具有两种权限的凭据。

【讨论】:

    【解决方案2】:

    对于这个用例,我会考虑Cross-Region Replication Where Source and Destination Buckets Are Owned by Different AWS Accounts

    ...您在源上设置了跨区域复制 一个账户拥有的存储桶,用于复制目标中的对象 另一个帐户拥有的存储桶。

    过程与设置跨区域复制时相同 两个桶都属于同一个账户,除了你做一个 额外步骤——目标存储桶拥有者必须创建存储桶策略 授予源存储桶所有者复制操作的权限。

    【讨论】:

      【解决方案3】:

      为此使用rclone。这很方便,但它确实会下载和上传我认为的文件,这对于大数据量来说会很慢。

      rclone --config=creds.cfg copy source:bucket-name1/path/ destination:bucket-name2/path/

      creds.cfg:

      [source]
      type = s3
      provider = AWS
      access_key_id = AAA
      secret_access_key = bbb
      
      [target]
      type = s3
      provider = AWS
      access_key_id = CCC
      secret_access_key = ddd
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-24
        • 2017-10-26
        • 2014-02-21
        • 2017-05-06
        • 1970-01-01
        • 2019-06-07
        相关资源
        最近更新 更多