【问题标题】:Push data from external API on AWS Kinesis从 AWS Kinesis 上的外部 API 推送数据
【发布时间】:2021-06-09 21:29:48
【问题描述】:
我是 AWS 生态系统的新手。我正在构建一个(近乎)实时系统,其中数据来自外部 API。 API 每 10 秒更新一次,因此我想在新数据出现后立即使用并填充我的 Kinesis 管道。
但是,我不确定使用哪种工具。我做了一个小研究,我认为我有两个选择:
- AWS lambda 每 10 秒触发一次,并将数据放在 Kinesis 上
- AWS StepFunction
给定用例的标准方法是什么?
【问题讨论】:
标签:
amazon-web-services
rest
amazon-kinesis
【解决方案1】:
AWS Step 函数由 Lambda 函数创建。也就是说,工作流中的每个步骤实际上都是一个 Lambda 函数。您可以将 AWS Step Functions 创建的工作流程视为 Lambda 函数链。
如果您不熟悉如何创建工作流程,请参阅此 AWS 教程:
Create AWS serverless workflows by using the AWS SDK for Java
(您可以使用任何受支持的编程语言创建 Lambda 函数。这个恰好使用 Java)。
现在,为了回答您的问题,可以使用工作流填充 Kinesis 数据流。您可以构建一个收集数据的 Lambda 函数(使用 Lambda 函数中的逻辑),然后调用 Kinesis 的 putRecord 操作来填充数据流。您可以根据 CRON 表达式创建每 x 分钟触发一次的计划事件。
如果您确实使用 CRON 表达式,则可以使用 AWS Step Functions API 来启动工作流程。也就是说,创建另一个 Lambda 函数,该函数计划每 10 分钟触发一次。然后在此 Lambda 函数中,使用 Step Functions API 调用工作流。现在工作流可以用数据填充 Kinesis 数据流。