Ben*_*ada 7 amazon-web-services websocket aws-lambda aws-api-gateway
我已经使用 API Gateway 配置了一个 WebSocket API,并且正在尝试为其配置一个自定义域名。这是一个非常简单的 API,用于在连接的客户端之间发送消息,将连接 ID 存储在 DynamoDB 中。本质上,它类似于此处演示的示例:https : //aws.amazon.com/blogs/compute/annoucing-websocket-apis-in-amazon-api-gateway/
使用 AWS 生成的 URL 时一切正常,即 wss://.execute-api.us-west-2.amazonaws.com/。但是,当我按照AWS 的这些说明设置自定义区域域名时,我能够连接但无法在客户端之间发送消息。
我检查了我的 Lambda 函数的 Cloudwatch 日志,没有看到任何错误,并尝试使用我的 CloudFormation 模板启动一个全新的环境,但无济于事。
非常清楚,以下连接命令正确触发了我的 Lambda 函数,并使用 AWS 生成的 URL 和我在 Route 53 中自己的 URL 连接我的客户端。
wscat -c wss://<endpoint> <payload>
Run Code Online (Sandbox Code Playgroud)
以下命令向连接的客户端发送消息,使用 AWS 生成的 URL 但不是我自己的。
{ "message": "sendMessage", "toId": "193818", "data", "a random msg" }
Run Code Online (Sandbox Code Playgroud)
我们遇到了同样的问题,但是 api 返回了一个错误:
botocore.errorfactory.ForbiddenException: An error occurred (ForbiddenException) when calling the PostToConnection operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
我们结束了手动构建回调URL发送回的响应:{api_id}.execute-api.{region}.amazonaws.com。
您可以从传递给 lambda 函数的请求上下文中获取 api id。
我们使用的python/boto3代码:
botocore.errorfactory.ForbiddenException: An error occurred (ForbiddenException) when calling the PostToConnection operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |