Amazon web services apigateway websocket sqs集成
我正在尝试将API网关WebSocket路由与SQS集成 我已使用以下属性配置了SQS集成 AWS地区:ap-东南-1 AWS服务:SQS HTTP方法:POST 路径覆盖:11111111 0111/我的队列 将请求模板配置为 “Action=SendMessage&MessageBody=$util.urlEncode($input.body)## set($context.requestOverride.header.Content Type=“application/x-www-form-urlencoded”)#” 当我尝试将数据发送到SQS时,它失败,出现以下错误 错误: (VK1mEHZSyQ0FlZg=)转换后的端点请求正文:Action=SendMessage&MessageBody=foobar (VK1mEHZSyQ0FlZg=)向发送请求 (VK1mEHZSyQ0FlZg=)收到响应。集成延迟:16毫秒Amazon web services apigateway websocket sqs集成,amazon-web-services,websocket,aws-api-gateway,amazon-sqs,Amazon Web Services,Websocket,Aws Api Gateway,Amazon Sqs,我正在尝试将API网关WebSocket路由与SQS集成 我已使用以下属性配置了SQS集成 AWS地区:ap-东南-1 AWS服务:SQS HTTP方法:POST 路径覆盖:11111111 0111/我的队列 将请求模板配置为 “Action=SendMessage&MessageBody=$util.urlEncode($input.body)## set($context.requestOverride.header.Content Type=“application/x-www-form
(VK1mEHZSyQ0FlZg=)转换前的端点响应主体:几乎晚了一年,无法确定要授权的服务/操作名称,但我找到了一种方法。您不能从控制台本身执行此操作,但可以通过CLI使其工作 中介绍了大多数步骤,但将其设置为WS-api而不是REST api 您会注意到,无法指定HTTP头,也无法指定映射模板。由于某些原因,这在控制台上不可用。您必须改为通过CLI执行此操作。将以下内容另存为JSON文件
{
"PassthroughBehavior": "NEVER",
"RequestParameters": {
"integration.request.header.Content-Type": "'application/x-www-form-urlencoded'"
},
"RequestTemplates": {
"application/json": "Action=SendMessage&MessageBody=$util.urlEncode($input.body)"
}
}
并更新集成,如下所示:
aws apigatewayv2 update-integration \
--api-id API_ID \
--integration-id INTEGRATION_ID \
--cli-input-json file://update.json
您将在API概述的控制台上看到API id,但必须通过CLI找到集成id,如下所示:
aws apigatewayv2 get-integrations --api-id API_ID
这将导致正文本身以明文形式发送到SQS队列
注意:如果您使用CloudFormation/SAM创建API,您可以放弃所有这些,因为这使您能够直接设置RequestParameters和RequestTemplates。我相信您希望设置
/
的路径,并像我在中所做的那样,将队列URL
放入body mapping模板中。尝试过了,但没有成功。使用REST API,它可以按预期工作,问题似乎在于“WebSocket”WebSocket API和SQS/SNS(不确定是否支持其他AWS服务)目前不受支持。得到AWS支持团队的确认。目前,无法将HTTP头映射/添加为WebSocket API集成请求的一部分。