我有包含时间序列样本数据的 JSON 文件被输入到 S3 中。我有一个带有组件的 React 客户端,该组件需要显示最近 x 分钟的样本数据的最新统计平均值。
理想情况下,更新将由 S3 上传触发,而不是浏览器需要轮询 Web 服务。Websockets 和服务器发送事件不是一个选项。考虑到这些要求,我是否可以实际使用 AWS Appsync 的订阅来提供实时数据?
如果需要,我不反对使用中间数据库。我认为查询数据以计算平均值的时间范围的步骤将是有益的,并且我假设我将使用 S3 触发 Lambda 并使用它将 S3 对象数据拉入数据库。
亚马逊在 2 月宣布增加本地解析器
例如,Lambda 函数可以调用 AWS AppSync 的 GraphQL 突变以响应发生的某些事件,例如处理上传到 S3 存储桶的数据
这听起来很有希望,但我找不到任何涉及本地解析器和 Lambda/S3 的示例。我能找到的唯一文档是here。
编辑:
在阅读了 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”并进行平均计算。似乎是个好方向?