SQS 的意外参数 MessageGroupId

UnexpectedParameter MessageGroupId for SQS

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

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

我收到一条警告 "missing parameter 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" });

我 运行 使用 Lambda 遇到同样的错误(因此找到你的 post)。想知道他们是否忘记刷新本机 SDK,我用我的函数上传了最新版本的 SDK(2.7.7),错误消失了。

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

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

您没有传递 "MessageGroupId" 参数。您应该将消息组 ID 作为参数传递。对于 FIFO 是强制性的。 请参考下面提到的link, https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage