【问题标题】:python boto3 multipart upload to buckets in different zonespython boto3分段上传到不同区域的桶
【发布时间】:2018-05-27 21:13:11
【问题描述】:

我按照 s3 文档和示例使用 boto3 库将我的大文件作为多部分上传到亚马逊 s3 存储。但是,官方文档中的信息对我来说还不够。就我而言,我在不同区域有多个存储,我应该将我的部分(总共 500 GB)上传到不同的存储。我想看一个例子,如何使用 boto3 库将多个部分上传到不同区域的不同 S3 存储。任何信息对我来说都是有价值的。感谢阅读

boto3 documentaion

boto3 example

【问题讨论】:

  • “将多个部分上传到不同的 S3 存储”是什么意思?对象必须上传到单个区域。欢迎您上传到多个区域,但它们将作为单独的对象上传。您能否编辑您的问题以解释您希望这样做的WHY?然后我们可能会想出一个推荐的方法。
  • @JohnRotenstein,嗨,约翰。感谢您的回复。我有数学模型,我想测试实现分段上传(如提示 6 的此链接中所说的 link )。我的问题是我想分离单个大对象并将其上传到不同的存储,而不是一个存储一个对象的原则。如果链接中的信息是正确的,这意味着我应该能够做到这一点。但我不知道如何
  • 我也看过官方doc。但是找不到可以执行此操作的信息
  • “不同的存储”是什么意思?这不是一个正常的术语。请更详细地说明您的目标。
  • @JohnRotenstein。假设您在两个不同的区域中有两个不同的存储桶。就像其中一个在俄亥俄州,第二个在伦敦。我有一个 50GB 的对象(示例)。现在我想设置(我不知道怎么设置),这个对象的 20 GB 上传到伦敦的 S3 存储,俄亥俄州的 30 GB。

标签: python python-3.x amazon-web-services amazon-s3 boto3


【解决方案1】:

好的,您似乎对某些术语感到困惑。让我们定义一些术语:

  • 地区:包含多个可用区的地理位置,例如,伦敦、俄亥俄州
  • 可用区:一个(或多个)数据中心。一个区域中的每个 AZ 在地理上是分开的,以确保 高可用性
  • 区域服务:包括Amazon S3在内的一些服务是区域服务。这意味着它会自动在 AZ 之间复制数据。
  • 存储桶: Amazon S3 中对象的存储位置。一个桶只存在一个区域
  • 对象:存储桶中的一个文件

现在,回答你的问题:

一个对象只存在于一个桶中。一个对象不能在桶之间拆分。 (并且由于一个桶存在于一个区域中,它也不能在区域之间进行分割。)

如果您希望在区域之间复制对象,请使用跨区域复制。这会自动将对象从一个存储桶复制到另一个存储桶。

Amazon S3 中对象的最大大小为 5TB,但您真的,真的不想变得那么大。大多数大数据应用程序使用许多较小的文件(例如 5MB 大小)。这允许跨多个进程并行加载,这通常在 Hadoop 中完成。它还允许通过简单地添加文件而不是更新现有文件来添加新数据。 (顺便说一句,你不能追加到 S3 对象,你只能替换它。)

将数据上传到 S3 的最简单方法是使用 AWS Command-Line Interface (CLI)

多部分上传只是一种上传单个对象的方法,方法是将其拆分为多个部分,上传每个部分,然后将它们拼接在一起。上传方式与实际上传后的对象无关。

您应该始终将数据存储在靠近数据处理的地方。因此,如果需要在多个区域中处理数据,则仅在区域之间复制数据。

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 2017-09-05
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多