如何触发基于sqs队列的事件?

How to trigger events based of sqs queue?

我正在创建一个 sqs 队列(下面的示例),我知道 sqs 队列可以直接与 lambda 集成,这样一来消息,lambda 就可以处理触发器。我假设 lambda 正在轮询此队列,以查看是否有任何消息。这是否意味着 lambda 每分钟 运行(或类似的东西)并且在收费方面也很昂贵? sqs 可以添加延迟来调用 lambda 吗?或者是否有更好的设置,它允许说触发 lambda,这样它就不会为传入的每条消息都触发 lambda,而是可以一次或某个时间间隔为每条消息触发 lambda?

AWSTemplateFormatVersion: '2010-09-09'
Description: Template to create a queue

Resources:
      
 queue: 
    Type: AWS::SQS::Queue
    Properties: 
      QueueName: 'myQueue'  
      FifoQueue: true
          
Outputs:
  QueueURL:
    Description: Queue URL
    Value: !Ref queue

你假设 lambda 正在轮询队列是正确的;但是,lambda 本身并不 运行 检查消息。 Lambda 使用 Event Source Mappings 与 lambda 稍微分开工作来轮询事件源,在您的情况下为 SQS。

至于你的 lambda 处理了多少消息,see the "Batching Behavior" section to get more detail, but you can set a wait time (Batch window) and a limit to how many messages a lambda processes at once (Batch size). By default, lambda waits for 10 messages in the queue or for 5 minutes, whichever comes first. When setting up your event source, these values can be changed. Checkout this guide from Amazon on a more detailed description on Using Lambda with Amazon SQS