微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 RequestTemplates 通过 HTTP 集成修改 API Gateway 中的 websockets 请求

如何解决如何使用 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 标头获取了。

enter image description here

一旦连接到 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

我实际上可以看到 POST 到达 beeceptor

enter image description here

发出 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 举报,一经查实,本站将立刻删除。