当消息发布到SQS时,如何在延迟时触发lambda?

问题描述 投票:0回答:2

我有一个lambda配置为在将消息发布到SQS队列时触发。以下是用于部署的SAM模板。

  MyQueue:
    Type: AWS::SQS::Queue
    Properties:
        VisibilityTimeout: 180
        DelaySeconds: 90

  MyLambda:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ../pathToCode
      Handler: index.handler
      Events:
        MySQSEvent:
          Type: SQS
          Properties:
              Queue: !GetAtt MyQueue.Arn

我正在使用DelaySecondsAWS::SQS::QUEUE属性,这显然不起作用。消息发布到队列后,我的lambda就会被执行。我怎么能拖延呢?

triggers aws-lambda delay amazon-sqs aws-sam
2个回答
4
投票

最佳解决方案是使用AWS步骤功能。

由SQS触发的lambda应该执行状态机,其中第一步是所需的睡眠量,第二步是lambda调用。


1
投票

延迟秒:每当您轮询队列时,它会延迟接收消息呼叫。但无论何时将消息推入队列,都会立即插入消息。

如果您希望lambda在触发器发出一定间隔后执行,请在开始执行前设置sleep(n)并在需要时增加lambda超时。截至目前,没有直接的方法来延迟触发器,一旦消息进入队列,就会触发lambda。

© www.soinside.com 2019 - 2024. All rights reserved.