【问题标题】:Cannot Archive Data from AWS Kinesis to Glacier无法将数据从 AWS Kinesis 存档到 Glacier
【发布时间】:2018-06-27 17:36:51
【问题描述】:

我正在开发一个在 EC2 上作为 Web 服务托管的数据处理应用程序,每秒生成一个 .csv 格式的小数据文件(小于 10KB)。

问题陈述: 将生成的所有数据文件归档到 Amazon Glacier。

我的方法: 由于数据文件非常小。我将文件存储在 AWS Kinesis 中,几个小时后,我将数据刷新到 S3(因为我找不到将数据从 Kinesis 放入 Glacier 的直接方法)并在一天结束时使用 S3 生命周期管理将所有对象存档到 Glacier .

我的问题:

  1. 有没有办法将数据直接从 Kinesis 传输到 Glacier?

  2. 是否可以将 Kinesis 配置为在一天结束时将数据刷新到 S3/Glacier? Kinesis 可以保存数据是否有任何时间或内存限制?

  3. 如果 Kinesis 无法直接将数据传输到 Glacier。有没有类似的解决方法 - 我可以编写一个 lambda 函数来从 Kinesis 获取数据并将其存档到 Glacier 吗?

  4. 是否可以在 Kinesis 或 S3 或 Glacier 级别合并所有 .csv 文件?

  5. Kinesis 是否适合我的用例?还有什么我可以用的吗?

如果有人能花时间回答我的问题并指出一些参考资料,我将不胜感激。请让我知道我的方法是否存在缺陷或是否有更好的方法。

谢谢。

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-sdk amazon-kinesis aws-sdk-java-2.0


【解决方案1】:
  1. 您不能直接将 Kinesis 中的数据放入 Glacier(除非您想将 10kb 文件直接放入 Glacier)
  2. 您可以将 Kinesis Data Firehose 视为 15 分钟刷新的一种方式。 S3 的数据增量
  3. 您绝对可以做到。 Glacier 允许直接上传,因此无需先上传到 S3
  4. 您可以使用 Firehose 刷新到 S3,然后使用 Athena 转换和聚合,然后将该文件转换到 Glacier。或者您直接使用 Lambda 并直接上传到 Glacier。
  5. 也许将数据流式传输到 Firehose 会更有意义。根据您的具体需求,物联网分析也可能很有趣。

再次阅读您的问题,看到您使用 csv 文件,我强烈建议您使用 Kinesis > S3 > Athena > Transition to glacier 方法

【讨论】:

  • 感谢您的回复。我没有得到您对问题 2 的回答。根据 aws docs -> docs.aws.amazon.com/firehose/latest/dev/… 如果满足其中一个缓冲区条件,数据将传输到目的地 (S3)。我想在一天结束时传输数据。是否可以使用 Kinesis Data Firehose ?我是不是搞错了什么?
  • 如果您查看文档,您会看到 128MB 或 15 分钟,无论先发生什么。所以 Firehose 一次最多会缓冲 15 分钟的 dsta
  • 感谢@exelian 的跟进。所以我们不能在一天结束时这样做。它的 128MB 或 15 分钟,哪个更早。我的另一个疑问是我不需要实时流式传输数据。那么您是否认为 Kinesis 有更好的替代方案,因为我从底层应用程序获得的数据非常小,并且应用程序每小时只能工作几分钟。所以我认为每 15 分钟刷新一次数据会影响性能。请让我知道您对此的想法,有没有办法实现“一天结束的数据刷新功能”?
  • 您是否认为 Athena 将在这里发挥重要作用,因为我们不想查询 .csv 文件,我们只想在队列或 S3 级别合并所有文件。我们可以使用一些 lambdas 或其他东西来实现它吗?
  • 您可以使用 Athena 简单地执行 1 个返回所有相关数据的查询。它将1个文件输出到S3,这使它易于处理。我想你只需要尝试这两个选项,我知道设置消防水带和 Athena 最多会花费你 3 个小时
猜你喜欢
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
相关资源
最近更新 更多