Is it possible to make AWS Websocket + Lambda function to constant monitoring of the DynamoDB and send response to the client?

Viewed 493

I have a serverless project: AWS + Angular on the frontend. Currently, I get the data when page is initialized and refresh the data when press "update" button. However, I want to monitor changes in the table constantly. In Firebase there is onSnapShot() method, which sends the new data when a collection is updated.

I want to make something similar with AWS. However, in official documentation, I do not see how to correctly do it.

So here are 2 questions:

  • How can I connect to the WebSocket with aws-sdk? (Currently, I can connect only from the terminal with wscat -c myurl call. Or shall I simply send http.Post with websocket url?
  • is it possible to pass invoke in the callback URL? - I want to get data from DynamoDB when page initialize and then invoke it again and again (with a callback URL)

My Lambda function looks like this:

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

    let params = {
        TableName: "documents"
    }

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

On the front-end I have:

 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.

  }
1 Answers
Related