带lambda和发电机的实时仪表板

时间:2017-10-31 20:11:41

标签: d3.js jenkins amazon-s3 amazon-dynamodb aws-lambda

所以我想创建一个实时仪表板(可能是一个基于节点的应用程序,带有反应前端)。该仪表板将显示来自使用Googles Lighthouse Performance审计工具收集的数据的一系列网站的性能数据。

Lighthouse工具发布了一个JSON文件,其中包含一组用于性能分析的键和值。

我将使用类似d3或chart.js的内容来最终呈现此数据。

我的问题是如何将这种“实时”数据提供给网络前端。

到目前为止,这是我的想法(只需要知道它是否可行。)

  1. Jenkins的工作将运行我的dockerised scrit,它使用灯塔adk给它一个站点并返回一个json性能报告。
  2. jenkins作业会将json文件放入S3存储桶中。
  3. 每次将项目添加到S3存储桶时都会触发lambda
  4. lambda将从json报告中提取所需的值,并将这些值写入dynamo db
  5. Dynamo数据库流将用于从发电机表中获取最新值。
  6. Web前端将查询dynamo数据库流并将数据呈现为字符和图形。
  7. 你能看到这个过程有效吗?这会给我一种“实时”数据源吗?我们的想法是在一天内多次创建绩效报告

2 个答案:

答案 0 :(得分:1)

我不认为DynamoDB流将以您的思维方式运行,除非我完全误解了有关DynamoDB流的信息。 DynamoDB如何将流数据推送到Web浏览器?

我建议让Lambda函数为它插入DynamoDB的每条记录添加时间戳。将timestamp字段作为表的主索引的排序键。

接下来有另一个Lambda函数,它使用timestamp字段在DynamoDB表中查询最新记录。通过API网关公开Lambda函数。

最后让Web前端对您在API Gateway中创建的端点进行API调用,以检索最新的性能数据。

答案 1 :(得分:1)

“live”对于不同的人来说意味着不同的事情,并且对于不经常更改的数据(与交互式聊天相比,每天几次不频繁),管理套接字等的开销可能不值得,只需刷新页面。

我不明白为什么你需要迪纳摩这里;你可以直接从S3读取,也许可以在对象上使用版本控制来跟踪每次运行的不同统计数据。

如果您真的想要基于浏览器的通知,您可以查看AWS IoT,并让Lambda订阅运行结果的S3存储桶,提取值并将其发布到IoT,这可以公开Web套接字基于浏览器的应用程序。