首页 > 解决方案 > 是否可以让 AWS Websocket + Lambda 函数持续监控 DynamoDB 并向客户端发送响应?

问题描述

我有一个无服务器项目:前端的 AWS + Angular。目前,我在页面初始化时获取数据,并在按下“更新”按钮时刷新数据。但是,我想不断地监视表中的变化。在 Firebase 中,有一种onSnapShot()方法可以在更新集合时发送新数据。

我想用 AWS 做一些类似的事情。但是,在官方文档中,我看不到如何正确地做到这一点。

所以这里有2个问题:

我的 Lambda 函数如下所示:

exports.handler = async (event, context) => {

    let params = {
        TableName: "documents"
    }

    let respond = await db.scan(params).promise();
    return  respond;
};

在前端我有:

 ngOnInit(): void {

    AWS.config.credentials = new AWS.Credentials({
      accessKeyId: '//mykey', secretAccessKey: '//mysecretkey'
    })
    AWS.config.update({
      region:'//myregion'
    })

    this.updateTable() // triggers post request to APi Gateway => lambda and receives a response with data.

  }

标签: amazon-web-serviceswebsocketaws-lambdaaws-api-gateway

解决方案


据我了解,您将需要设置一个 DynamoDB 流和一个 lambda 函数来响应数据库 CRUD 事件,如果事件数据符合条件(例如文档 ID),则将更新的数据发送到 WebSocket 连接,通过AWS.ApiGatewayManagementApi. (仅供参考:https ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ApiGatewayManagementApi.html )


推荐阅读