Websocket API 未返回答案 AWS
Websocket API not returning answers AWS
我有一个非常简单的 Websocket API
托管在 AWS 中。
我将此 API 与代码为 :
的 Lambda
函数集成
import json
def lambda_handler(event, context):
print(event)
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(event)
}
我还为双向通信添加了集成响应,如此documentation
下面是我使用 wscat
和命令进行的测试:wscat -c myapiendpoint
如您所见,我已成功连接,如果我从 request.body.action
选择 (sendMessage
) 中写入现有路由,则没有错误,但没有输出。如果我写错了路由(test
我没有在 API 网关控制台中创建),我会收到一条错误消息。
我也尝试过使用更简单的函数输出,none 正在运行。我终于按照documentation.
中所述写出了上面的代码
我只是希望能够在调用路由时向客户端发送回自定义消息(实际上是我数据库中的数据)。
这实际上也是我想要的 $connect
和 $disconnect
路线。
我是不是做错了什么?
编辑:
这是我的 API 路由网关设置:
这是关于Lambda权限的截图。顺便说一下,这些是我所有 Lambda(在 HTTP APIs 下)的权限,它们都可以正常工作:
您的 Lambda 函数似乎没有权限将 post 消息发送到 API 网关连接。尝试为您的 Lambda 函数授予对 API 网关资源执行 execute-api:ManageConnections
操作的权限。
有时,这可能是您的情况,您没有将更改部署到您的 WebSocket API。
当我使用 HTTP APIs 而不是 WebSocket APIs.
使用自动阶段部署时,这发生在我身上
我有一个非常简单的 Websocket API
托管在 AWS 中。
我将此 API 与代码为 :
Lambda
函数集成
import json
def lambda_handler(event, context):
print(event)
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(event)
}
我还为双向通信添加了集成响应,如此documentation
下面是我使用 wscat
和命令进行的测试:wscat -c myapiendpoint
如您所见,我已成功连接,如果我从 request.body.action
选择 (sendMessage
) 中写入现有路由,则没有错误,但没有输出。如果我写错了路由(test
我没有在 API 网关控制台中创建),我会收到一条错误消息。
我也尝试过使用更简单的函数输出,none 正在运行。我终于按照documentation.
中所述写出了上面的代码我只是希望能够在调用路由时向客户端发送回自定义消息(实际上是我数据库中的数据)。
这实际上也是我想要的 $connect
和 $disconnect
路线。
我是不是做错了什么?
编辑:
这是我的 API 路由网关设置:
这是关于Lambda权限的截图。顺便说一下,这些是我所有 Lambda(在 HTTP APIs 下)的权限,它们都可以正常工作:
您的 Lambda 函数似乎没有权限将 post 消息发送到 API 网关连接。尝试为您的 Lambda 函数授予对 API 网关资源执行 execute-api:ManageConnections
操作的权限。
有时,这可能是您的情况,您没有将更改部署到您的 WebSocket API。 当我使用 HTTP APIs 而不是 WebSocket APIs.
使用自动阶段部署时,这发生在我身上