【问题标题】:UnexpectedParameter MessageGroupId for SQSSQS 的 UnexpectedParameter MessageGroupId
【发布时间】:2017-04-03 22:25:57
【问题描述】:

我创建了一个 FIFO SQS 队列。 使用以下参数向队列发送消息时,

var params= {
    MessageBody: payload, 
    QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) { 
    err ? callback(err) : callback(null, res);
});

我收到一条警告说“缺少参数 messagegroupid”

然后我继续将 MessageGroupId 添加到我的参数中。

var params= {
    MessageBody: payload,
    MessageGroupId: "posts",
    QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) { 
    err ? callback(err) : callback(null, res);
});

然后 SQS 向我抛出“UnexpectedParameter: Unexpected key 'MessageGroupId' found in params”。

我被这组相互矛盾的指令弄糊涂了。 我在 createQueue 和 sendMessage 命令中使用了相同的 SDK 区域。

var sqs= new aws.SQS({ region: "us-east-2" });

【问题讨论】:

  • FIFO 队列似乎需要SDK from 2016-11-17 or later。你用的是什么版本?
  • 感谢您的建议...我改为 var sqs= new aws.SQS({ region: "us-east-2", apiVersion: "2016-11-17" });但结果相同。
  • var sqs= new aws.SQS({ region: "us-east-2", apiVersion: "2012-11-05" }); 的结果相同;

标签: amazon-web-services amazon-sqs


【解决方案1】:

我在使用 Lambda 时遇到了同样的错误(因此找到了您的帖子)。想知道他们是否忘记刷新原生 SDK,我用我的函数上传了最新版本的 SDK(2.7.7),错误就消失了。

由于上传 SDK 删除了在 Lambda 中编辑的能力,我随后将其删除并重新上传了错误回来的函数:(。

所以现在,如果您想将它与 Lambda 一起使用,您必须将 SDK 包含在您的部署包中。

【讨论】:

  • 对于 Node.js,使用 npm 安装最新的 aws-sdk 对我有用。
【解决方案2】:

您错过了传递“MessageGroupId”参数。您应该将消息组 ID 作为参数传递。 FIFO 是强制性的。 请参考以下链接, https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多