【问题标题】:How can I sync data in S3 between a Beijing(China) bucket and a global one?如何在北京(中国)存储桶和全球存储桶之间同步 S3 中的数据?
【发布时间】:2022-01-10 19:16:32
【问题描述】:

北京(中国)地区非常独特,因为它几乎所有的东西都是独立的(来自 AWS 全球)。例如,要使用 AWS CLI 列出我们必须指定 regionendpoint-url 的对象:

aws --region cn-north-1 \
  --endpoint-url https://s3.cn-north-1.amazonaws.com.cn \
  --profile AN_AWS_CN_PROFILE \
  s3 ls s3://AN_AWS_CN_BUCKET/

我的问题是如何在北京(中国)存储桶和全球存储桶之间同步数据?首先,使用上面指定的regionendpoint-url 无法识别全局存储桶。例如,

aws --region cn-north-1 \
  --endpoint-url https://s3.cn-north-1.amazonaws.com.cn \
  --profile AN_AWS_CN_PROFILE \
  s3 cp s3://AN_AWS_CN_BUCKET/ s3://AN_AWS_IRELAND_BUCKET/

会给

致命错误:调用ListObjects操作时发生错误(NoSuchBucket):指定的bucket不存在

(目标存储桶确实存在。)

到目前为止,我已经探索了 CLI 参数和 .aws/config 文件来定义配置文件。也许可以在单个命令中使用多个profile,但似乎无法在.aws/config 中配置endpoint-url,因为没有提及here

现在我只是将文件复制到本地然后上传,随着数据集的快速增长,这将成为一个问题。使用 EMR 可以解决扩展问题,但会增加额外的复杂性。我想知道是否有更好且可能更简单的解决方案?谢谢。

【问题讨论】:

  • 问题的核心是S3内部具有跨区域复制能力(从而避免了任何本地下载/上传的需要)......以及aws分区中的所有S3区域S3 知道所有其他存储桶在哪个区域,以及如何进行跨区域复制。当然,aws-cn 分区不是同一个分区,因此向任何一方提出的请求都会假设两个存储桶都在同一个分区中,并且找不到一个或另一个。我看到的问题与该工具是否可以下载/上传有关,而不是内部跨区域,因为没有“内部”路径。

标签: amazon-web-services amazon-s3


【解决方案1】:

BJS/ZHY 区域与经典区域在不同的分区下(BJS/ZHY 为 aws-cn,其他区域为 aws)

不同的分区阻止来自 BJS 和经典区域的帐户相互通信 - 他们无法理解来自其他分区的 ARN,并且他们无法将其他分区的帐户列入白名单或授予权限。

S3 在中国地区也存在一些问题,即某些 S3 url/IP 被本地网络提供商阻止。

根据我的经验,实现这一目标的最佳方法是创建一个 Lambda 函数以将 S3 对象上传到经典分区中的存储桶,或者配置一个 SNS->SQS->SQS 侦听器模式。

【讨论】:

    【解决方案2】:

    问题在于 AWS API 期望所有操作都在一个会话中运行,该会话绑定到一个用户或角色。也就是说,如果您的存储桶都需要分别上传和下载权限,则无法将这两种权限合并到一个会话中。

    有几种方法可以绕过这个限制,每种方法都有自己的缺点:

    a) 在传输期间临时公开每个文件。这需要脚本或应用程序形式的一些逻辑。本质上,您在源存储桶的帐户中担任用户或角色,并更改您将要复制的文件的 ACL。您不需要使存储桶可列出,因此任何攻击者都需要知道确切的路径才能在传输窗口期间访问您的文件。使用目标帐户的角色或用户,您将读取现在公开的文件并将其保存到目标存储桶。对每个文件重复一次。

    b) 使用传输实例。 AWS API 不允许同时代入两个角色/用户,但您可以先代入源存储桶账户的角色/用户,将所有需要的文件复制到本地磁盘,然后使用第二组凭据上传到目标存储桶。该中介实例可以是 EC2 实例或您的本地机器(如果您有带宽和卷容量)。

    【讨论】:

      【解决方案3】:

      我使用本地磁盘进行临时存储:

      1. 从 eu-west 同步到笔记本电脑 --profile=myglobal
      2. 从笔记本电脑同步到 cn-north --profile=mychina

      【讨论】:

        猜你喜欢
        • 2020-07-24
        • 2017-09-18
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2017-10-26
        相关资源
        最近更新 更多