首页 文章

Appsync / GraphQL是一个很好的解决方案,可以实时显示减少的基于S3的时间序列数据吗?

提问于
浏览
1

我有包含时间序列样本数据的JSON文件被送入S3 . 我有一个React客户端,其组件需要显示最近x分钟的样本数据的最新统计平均值 .

理想情况下,更新将由S3上载触发,而不是浏览器需要轮询Web服务 . Websockets和Server Sent Events不是一个选项 . 根据这些要求,我是否可以实际使用AWS Appsync的订阅来提供实时数据?

如果需要,我不反对使用中间数据库 . 我假设查询数据的时间范围以计算平均值的步骤是有益的,我假设我将使用S3触发Lambda并使用它将S3对象数据拉入数据库 .

亚马逊在2月宣布增加Local Resolvers

例如,Lambda函数可以调用GraphQL突变到AWS AppSync以响应发生的某些事件,例如处理上传到S3存储桶的数据

这听起来很有希望,除了我找不到任何涉及Local Resolvers和Lambda / S3的例子 . 我能找到的唯一文件是here .

EDIT:

在对GraphQL做了一些阅读之后,我了解了API,看来我应该能够在lambda中使用HTTP客户端进行突变 . 用curl尝试了这个并且它有效:

curl -X POST \
   https://censored.appsync-api.us-east-1.amazonaws.com/graphql \
   -H 'Content-Type: application/json' \
   -H 'x-api-key: censored' \
   -d '{"query": "mutation CreateEvent {createEvent(name: \"testName\", when: \"Now\", where: \"here\", description: \"testDescription\") {name when where description}}"}'

有了这个,我想我现在可以通过Lambda调用“addIntervalData”变异,将每个S3对象的内容添加到数据库,并使用lambda解析器实现“getAverage”并进行平均计算 . 好像方向好吗?

1 回答

  • 0

    听起来很可能 - 你要做的是有一个Lambda函数,它对AppSync执行GraphQL变异,使用 @aws_subscribe() 指令通知该客户订阅的客户端 . 然后要触发Lambda函数,您将使用S3事件源来调用它 . 这是一个教程:https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

相关问题