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

API Gateway对接SQS传MessageAttributes返回400的正确POST传参方式

解决方案

1. 修正POST请求体结构

你当前的请求体存在两个语法/格式错误:一是缺少JSON开头的{,二是MessageAttributes结构不符合SQS参数规范,SQS要求属性名作为键直接放在MessageAttributes下,不需要单独写Name字段。正确的请求体写法如下:

{
  "message": "Message",
  "MessageAttributes": {
    "Name": {
      "Type": "String",
      "Value": "my value"
    }
  }
}

2. 配置API Gateway到SQS的集成映射模板

你使用的是API Gateway对接AWS SQS服务的非代理集成,必须添加请求映射模板,把客户端传的JSON参数转换为SQS的SendMessage API要求的参数格式,操作步骤如下:

  • 进入API Gateway对应资源的集成请求配置页
  • 找到映射模板板块,添加请求内容类型为application/json的模板
  • 填入以下Velocity映射模板(支持多MessageAttribute自动映射):
#set($message = $input.path('$.message'))
#set($attributes = $input.path('$.MessageAttributes'))
Action=SendMessage&MessageBody=$util.urlEncode($message)
#set($count = 1)
#foreach($attr in $attributes.entrySet())
&MessageAttributes.entry.${count}.Name=$util.urlEncode($attr.key)
&MessageAttributes.entry.${count}.Value.DataType=$util.urlEncode($attr.value.Type)
&MessageAttributes.entry.${count}.Value.StringValue=$util.urlEncode($attr.value.Value)
#set($count = $count + 1)
#end
  • 保存配置后重新部署API生效

3. 错误排查路径

如果修改后仍然返回400错误,可开启API Gateway的CloudWatch执行日志,查看转发给SQS的请求明文以及SQS返回的具体错误提示,常见剩余问题包括:

  • SQS队列的资源策略未给API Gateway的执行角色开放sqs:SendMessage权限
  • 请求体中MessageAttributes的Type值不合法(仅支持String、Number、Binary三类)
  • 映射模板配置错误导致参数丢失/格式异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:02