如何解决如何使用 RequestTemplates 通过 HTTP 集成修改 API Gateway 中的 websockets 请求
我有一个 http 端点(例如 https://sample-sasw.free.beeceptor.com
)
和一个 API 网关的 websocket API 与 http 集成,如下面的 AWS CloudFormation 模板所示。
我希望能够连接到 websocket:
wscat -c wss://nghixzq757.execute-api.eu-west-1.amazonaws.com/production
将 $connect
发送到我的 HTTP 端点。
如果可能,我希望在 https://sample-sasw.free.beeceptor.com/connect
上将此 http 集成到 POST 中,并在 API Gateway 上生成一些特定的 JSON 负载,例如
{
"connectionId": "foEf1d_ejoECHeQ=","domainName": "nghixzq757.execute-api.eu-west-1.amazonaws.com","stage": "production"
}
即使原始 $connect
中没有正文。如果这是不可能的,那也没关系,因为我已经将这些参数作为 http 标头获取了。
一旦连接到 websocket,我希望能够通过 websocket 发送任何有效负载,即在 https://sample-sasw.free.beeceptor.com/sendMessage
上转换为 POST http 请求,但将 JSON 有效负载转换为仅抓取 {{1} } 财产。换句话说,我想要这样的东西:
data
然后在 http 端点接收带有有效负载的 POST:
wscat -c wss://nghixzq757.execute-api.eu-west-1.amazonaws.com/production
Connected (press CTRL+C to quit)
> {'action': 'sendMessage','data': '{'foo': 'bar'}'}
< OK!!
我不能让这个工作。我花了几个小时试图找到关于如何将 {'foo': 'bar'}
和 RequestTemplates
与 CloudFormation YML 结合使用的好例子,以理解它或让一个简单的例子工作。
我得到的一些结果
TemplateSelectionExpression
发出 200 OK 响应,由于某种原因,http 集成响应转换为 500 错误。
任何指导、示例或链接将不胜感激。
实际上,我的目标是拥有一个通用的路由/集成,并且能够根据有效负载的 $ wscat -c wss://nghixzq757.execute-api.eu-west-1.amazonaws.com/production
Connected (press CTRL+C to quit)
> {'action': 'sendMessage','data': {'foo': 'bar'}}
< {"message": "Internal server error","connectionId":"foEf1d_ejoECHeQ=","requestId":"foFlwEtkjoEFkWw="}
> {'action': 'sendMessage','data': ''}
< {"message": "Internal server error","requestId":"foFlwEtkjoEFkWw="}
发布到不同的 url。但我什至无法让简单的转换示例工作,而且 AWS 文档没有多大帮助(我找不到示例),AWS 控制台也不允许我直观地尝试它,因为这似乎只能通过 AWS CLI 和 CloudFormation 使用。>
提前致谢!
完整的 CloudFormation 模板
action
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。