You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需Postman通过API Gateway URL直接向SQS队列发送MessageBody?

问题分析与解决办法

是的,你的判断完全正确——当前/sqs_send路由的配置确实只支持从请求Body中读取消息内容,再加上两个额外因素导致了你遇到的404错误:

导致404的两个核心原因

  • 请求方法不匹配:你用浏览器访问URL时发送的是GET请求,但该路由仅配置了接收PUT请求(你在Postman中用的是PUT),API Gateway会因HTTP方法不匹配返回404。
  • 参数传递路径不匹配:你的SQS集成映射规则应该设置了从body提取MessageBody,而非从URL查询参数(query string)提取,所以即使方法正确,用URL参数传递也无法被识别。

两种解决方式

方式1:修改路由支持GET请求+URL参数传递

  1. 进入API Gateway控制台,找到/sqs_send路由,新增GET方法(或修改现有PUT方法的配置)。
  2. 配置SQS集成的请求映射模板:
    • 选择Content-Type为application/json,添加如下映射代码:
      {
        "MessageBody": "$input.params('MessageBody')"
      }
      
    这段代码会把URL中的MessageBody查询参数映射到SQS SendMessage接口所需的字段。
  3. 重新部署API,之后即可通过以下格式的URL发送消息:
    https://86bwtlv5ya.execute-api.us-east-1.amazonaws.com/sqs_send?MessageBody=This+is+a+test+message
    

方式2:保持PUT方法,不用Postman直接发送

如果不想修改路由方法,可通过命令行或浏览器控制台直接发送PUT请求:

  • curl命令:
    curl -X PUT -d "This is a test message" https://86bwtlv5ya.execute-api.us-east-1.amazonaws.com/sqs_send
    
  • 浏览器控制台fetch请求:
    fetch('https://86bwtlv5ya.execute-api.us-east-1.amazonaws.com/sqs_send', {
      method: 'PUT',
      body: 'This is a test message'
    })
    

注:你提到的“Message attributes为空”不影响当前问题,因为这仅用于传递额外的消息属性,和消息体的传递路径无关。

内容的提问来源于stack exchange,提问作者ERJAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:45:30