有没有办法调用 AWS Step Function 或 Lambda 来响应 websocket 消息?

Is there a way to invoke an AWS Step Function or Lambda in response to a websocket message?

TLDR:有没有办法根据外部系统的 websocket 消息触发 AWS lambda 或 step 函数?

我正在构建一个连接到支持 websockets 的系统的同步服务。我可以在步骤函数中使用计时器来定期唤醒并调用 lambda 函数来执行同步,但我更愿意订阅 websocket 并仅在收到消息时执行同步。

有很多方法可以在 AWS 中 公开 websockets,但我还没有找到消费它们的方法就像一个带有自定义服务 运行 的 EC2 实例。我正在努力留在无服务器生态系统中。

似乎使用 websocket 是一个相当普遍的需求;我是不是忽略了什么?

Lambda 是短暂的。他们不能坐在那里等待 websocket 消息。

不过,我认为您可以使用 Activity 任务。一旦 step 函数进入该状态,它将等待。 activity worker 将在 EC2 实例上 运行 并订阅 websocket。收到消息后 will poll the State Machine for an activity token and call SendTaskSuccess。然后状态机将继续执行并调用执行同步的 lambda。

您可以使用 AWS API 网关服务和 lambda。它支持网络套接字并且可以根据请求触发lambda