【问题标题】:AWS services for capturing and storing device info from large number of mobile devices via rest API用于通过 REST API 从大量移动设备捕获和存储设备信息的 AWS 服务
【发布时间】:2019-06-28 15:44:49
【问题描述】:

我们为特定区域 (10-30K) 的应用用户提供实时设备信息(位置和其他一些信息)的 API。数据是实时刷新的,但是我们是通过get请求来获取的。我不知道频率是多少,但他们希望支持未来的 ML 用例。 Kinesis 在这里使用有意义吗?我是 aws 新手,不知道是否应该编写一个 lambda 函数,每分钟将其写入 s3,或者是否应该使用特定服务。谢谢!

【问题讨论】:

    标签: amazon-web-services iot amazon-kinesis


    【解决方案1】:

    Kinesis Firehose 是根据您描述的要求的最佳解决方案。

    如果在此阶段不需要进行严格的数据转换,您可以将数据从 API Gateway 直接发送到 Firehose。您可以在“IntegrationRequest”阶段在 API 网关级别执行简单的转换和映射,或者只是“按原样”代理数据。

    如果需要,Firehose 还可以使用一些 Lambda 转换数据,以便为 S3 做好准备。

    这种架构的美妙之处在于您在这里只使用 AWS 托管服务,而无需发明自己的数据管道。

    Read more about Firehose.

    【讨论】:

    • 谢谢,我实际上已经接近完成这样的设置了。那么方法是让 lambda 函数在某个时间间隔运行,从 API 中提取并将其发布到 Kinesis 吗?从理论上讲,它可能有多达 70K 个设备,每个设备有 10-15 个数据点。这仍然是一种实用的方法吗?以及为什么将其发布到 Kinesis 此处,为什么不直接写入红移表或其他东西?只是想了解这个过程并确保我朝着正确的方向前进......再次感谢!
    • 您能解释一下“从 API 中提取”是什么意思吗? API Gateway 是一个同步 HTTP 端点,您的设备将在其中发布数据。网关将其转换为某些后端。后端可能会返回一些 API 将转发给用户的响应,或者 API Gateway 可以自己处理响应。 --- 在使用 Kinesis Firehose 的解决方案中,您无需在两者之间创建任何机制(Lambda、EC2 等)。 AWS 自动将 API Gateway 与 Firehose 集成,Firehose 会将这些数据流式传输到您的目的地。 S3 是您最初的要求并且受支持。
    • 所以在这种情况下设备不会发布任何数据,我们必须使用 GETrequest 在任何给定时间获取数据。每个 API 调用都会返回数据的当前状态,我们可以在我们选择的任何间隔进行调用。所以对我来说,听起来我们只需要一个 lambda 以某个时间间隔运行,获取数据并发布到红移表?就我而言,我不确定 Kinsesis 会有什么好处?一些人正在推动它,但我越想越觉得没有必要......
    • 我可以同意你的设计。一开始我只是没有意识到您必须主动从设备中提取数据。维护这个 Lambda puller 可能很快就会变成地狱。 70*15k 的拉动不是交易,但您需要一些工具来编排。我建议查看 Python 中的 sosw 包。我们使用它来编排类似的 Lambda 工作流程。文档仍然有点原始,但是一旦实施就可以省去很多麻烦。
    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多