【问题标题】:How to combine multiple S3 objects in the target S3 object w/o leaving S3如何在不离开 S3 的情况下在目标 S3 对象中组合多个 S3 对象
【发布时间】:2018-03-28 04:07:29
【问题描述】:

我了解上传到 S3 存储桶的最小部分大小为 5MB 有没有办法在每个存储桶的基础上进行更改?

我问的原因是 S3 中有一个原始对象列表,我们希望将其组合到 S3 中的单个对象中。

使用 PUT 部分/副本,我们可以将对象“粘合”到单个对象中,前提是除最后一个之外的所有对象都 >= 5MB。但是有时我们的原始对象不够大,在这种情况下,当我们尝试完成分段上传时,我们会从 AWS S3 收到著名的错误“您建议的上传小于允许的最小大小”。

还有什么想法可以在不先下载 S3 对象的情况下组合它们吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    “但有时我们的原始对象不够大……”

    您可以在 S3 上放置一个 5MB 的垃圾对象并与它进行连接,其中第 1 部分 = 5MB 垃圾对象,第 2 部分 = 您要连接的文件。对每个片段重复此操作,最后使用范围副本去除 5MB 垃圾

    【讨论】:

    • 在这种情况下,范围复制是什么意思?我们陷入了类似的问题。 S3 上的 P1=1MB,P2=6MB。我们想要制作零件 P3(P1+P2 以相同的顺序)。我们能够填充 P3 并使 P3 为 11 MB(4MB 填充 + 1MB + 6MB),但无法提取实际内容并移除填充。
    【解决方案2】:

    无法更改最小零件尺寸

    你可能想要;

    1. 将它们一起流式传输到 AWS(这似乎不是一种选择,否则您已经这样做了)
    2. 填充文件,使其填充 5MB 的最小大小(什么对您来说可行或不可行,因为这会增加您的费用)。如果您认为可以应用,您可以选择使用不频繁访问(当您很少访问这些文件时)减少冗余(当您可以恢复丢失的文件时)以减少影响。
    3. 使用外部服务将您的文件压缩(或“粘合”在一起),然后重新上传到 S3。我不知道这样的服务是否存在,但我很确定你可以使用 lambda 函数自己实现它(我过去什至尝试过类似的方法;https://github.com/gammasoft/zipper-lambda

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-25
      • 2010-09-21
      • 1970-01-01
      • 2018-06-13
      • 2015-07-18
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多