我试图限制并行运行的并发函数的数量。我的lambda的触发器是SQS队列中的消息,您可以在我的serverless.yml中看到:
receiver:
handler: src/receiver.handler
timeout: 30
events:
- sqs:
arn: ${queueArn}
batchSize: 1
reservedConcurrency: 1
我使用“reservedConcurrency:1”将并发执行的数量限制为1.我在AWS UI中验证了函数'receiver'配置和'reserve concurrency'在那里也设置为1。
不知道我错过了什么,因为我仍然看到从我的日志和AWS SQS UI运行数百个执行。
SQS / Lambda集成不适用于低于5的保留并发。
如果在函数上配置保留并发,则至少设置5个并发执行,以减少Lambda调用函数时出现限制错误的可能性。
正在进行的消息不仅是Lambda函数当前正在处理的消息。它还包括由于Lambda函数上可用的并发性不足而导致失败并返回队列的消息 - 即使大多数尝试都将失败,它们也会在正在尝试的过程中处于正在运行状态。如果将保留的并发性设置为0,则应该发现所有处理都停止,但是仍有一些消息在运行,因为仍在尝试处理。