aws-sdk-js调用SQS SendMessage报属性列表值不支持错误如何解决
错误原因
报错核心是 sendMessage 单条消息发送接口不支持列表类型的消息属性。
你的请求参数里,MessageAttributes 的每个属性都额外传入了 StringListValues、BinaryListValues 两个空数组字段,哪怕字段值为空,只要参数中出现这两个键,AWS SQS 就会判定你尝试传入列表类型的属性值,直接触发该错误。
不需要对整个请求 payload 做字符串化处理,该问题和 payload 序列化无关。
修复方案
调整 MessageAttributes 结构,仅保留你实际用到的字段即可,删除多余的列表类字段:
const AWS = require('aws-sdk'); const sqs = new AWS.SQS(); const params = { MessageBody: 'UUID', QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/<account>/<queue-name>', DelaySeconds: 0, MessageAttributes: { attribute1: { StringValue: 'UUID', DataType: 'String' }, attribute2: { StringValue: 'SQS', DataType: 'String' }, attribute3: { StringValue: 'UUID', DataType: 'String' } } } sqs.sendMessage(params).promise();
内容的提问来源于stack exchange,提问作者gokublack
相关产品推荐
相关产品推荐

