admin管理员组文章数量:1415673
I am trying to send a message to SQS queue using Lambda:
Here is my code:
var QUEUE_URL = '.fifo';
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'us-west-2'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
Here is my test data (JSON), notice I have defined MessageGroupId there.
{
"MessageGroupId": "1",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
I get the following error:
2020-04-16T17:40:37.604Z fa709a07-0bcd-4b17-a48b-341a984aec88 INFO error: Fail Send MessageMissingParameter: The request must contain the parameter MessageGroupId.
2020-04-16T17:40:37.661Z fa709a07-0bcd-4b17-a48b-341a984aec88 ERROR Invoke Error {"errorType":"Error","errorMessage":"error","stack":["Error: error"," at _homogeneousError (/var/runtime/CallbackContext.js:13:12)"," at postError (/var/runtime/CallbackContext.js:30:54)"," at done (/var/runtime/CallbackContext.js:57:7)"," at Object.done (/var/runtime/CallbackContext.js:105:16)"," at Response.<anonymous> (/var/task/index.js:13:15)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:364:18)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"]}
I have looked at: Lambda : Send a message to SQS AND Lambda can't send message to SQS But I did not find an answer.
Any help is apprecaited!
I am trying to send a message to SQS queue using Lambda:
Here is my code:
var QUEUE_URL = 'https://us-west-2.queue.amazonaws./123456789/ntech-event-processing-dev.fifo';
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'us-west-2'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
Here is my test data (JSON), notice I have defined MessageGroupId there.
{
"MessageGroupId": "1",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
I get the following error:
2020-04-16T17:40:37.604Z fa709a07-0bcd-4b17-a48b-341a984aec88 INFO error: Fail Send MessageMissingParameter: The request must contain the parameter MessageGroupId.
2020-04-16T17:40:37.661Z fa709a07-0bcd-4b17-a48b-341a984aec88 ERROR Invoke Error {"errorType":"Error","errorMessage":"error","stack":["Error: error"," at _homogeneousError (/var/runtime/CallbackContext.js:13:12)"," at postError (/var/runtime/CallbackContext.js:30:54)"," at done (/var/runtime/CallbackContext.js:57:7)"," at Object.done (/var/runtime/CallbackContext.js:105:16)"," at Response.<anonymous> (/var/task/index.js:13:15)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:364:18)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"]}
I have looked at: Lambda : Send a message to SQS AND Lambda can't send message to SQS But I did not find an answer.
Any help is apprecaited!
Share Improve this question asked Apr 16, 2020 at 17:50 MamunMamun 2,5448 gold badges32 silver badges45 bronze badges 1-
1
remove
MessageGroupId
from event. yourMessageGroupId
is going underMessageBody
. – Shubham Commented Apr 16, 2020 at 17:59
1 Answer
Reset to default 5If you look in documentation of SQS you can see that:
MessageGroupId - This parameter applies only to FIFO (first-in-first-out) queues.
I assume that you have accidentally created FIFO queue on SQS. So you need that additional parameter. You could modify your code like this:
var QUEUE_URL = 'https://us-west-2.queue.amazonaws./123456789/ntech-event-processing-dev.fifo';
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'us-west-2'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL,
MessageGroupId: "TestGroup"
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
It doesn't help if you putt your MessageGroupId into event if you didn't take from your event. If you want to receive MessageGroupId from event could could look like this:
var QUEUE_URL = 'https://us-west-2.queue.amazonaws./123456789/ntech-event-processing-dev.fifo';
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'us-west-2'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL,
MessageGroupId: event.MessageGroupId
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
Tutorial that I have found useful is this one.
本文标签: javascriptHow to insert when sending a message to SQS via lambda functionStack Overflow
版权声明:本文标题:javascript - How to insert when sending a message to SQS via lambda function - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745174492a2646170.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论