Я работаю с бессерверным API, и у меня есть лямбда-функция, запущенная из очереди sqs, с размером пакета 1, что означает, что я намерен запустить лямбда-сигнал, как только я отправлю сообщение в очередь, это работает нормально, но когда я впервые использую функцию, она не срабатывает, а когда я запрашиваю второй раз, она отправляет первое сообщение, это всегда одно сообщение за тем, что я отправляю. Я приложил свой код, не уверен, что мне здесь не хватает, любая помощь приветствуется.
serverless.yml
iamRoleStatements:
- Effect: "Allow"
Action:
- "sqs:SendMessage"
- "sqs:ReceiveMessage"
Resource: "arn:aws:sqs:${self:provider.region}:*:EmailQueueDev"
functions:
sendGrid:
handler: handler.sendGrid
events:
- sqs:
arn: arn:aws:sqs:us-east-1:${file(./config.js):sqs.account_id}:EmailQueueDev
batchSize: 1
resources:
Resources:
EmailQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "EmailQueueDev"
код
module.exports.sendEmail = async (event) => {
// Trigger the SQS for SendGrid Function To Execute
const sqs = new aws.SQS();
const params = {
MessageBody: JSON.stringify(transaction.data),
QueueUrl: process.env.QUE_URL
}
sqs.sendMessage(params, (err, data) => {
if(err) {
log(JSON.stringify({info: 'Errors sending message to the Queue', trace: err}));
}
else console.log('data is', data);
});
};