【问题标题】:AWS Lambda integration with SQSAWS Lambda 与 SQS 的集成
【发布时间】:2020-05-07 16:21:30
【问题描述】:

AWS lambda 是否支持侦听 SQS 队列?我发现了一些例子说可以做到这一点,但我不确定 AWS lambda 是否明确提供支持。当我创建 lambda 函数时,我找到了 SQS 的一个蓝图。所以,

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

    我在您的另一个线程中链接到它 - these are the supported event sources。请注意,cloudwatch events 是可能的事件类型之一。例如,您可以将 Lambda 设置为每分钟运行一次并轮询 SQS 队列。您不能直接从 SQS 队列中触发 Lambda。

    【讨论】:

    • 谢谢。是的,一种方法是轮询。 Cloudwatch 事件是什么意思。你的意思是我从我的 SQS 向 Cloudwatch 发送事件,我可以在 Lambda 中使用触发器?
    • 不,您从 Cloudwatch 向 Lambda 发送一个事件,它会读取 SQS 队列。
    • 是的,因为从 SQS 获取消息的唯一方法是轮询。如果没有轮询,您将无法收到新消息的通知。 SNS 是一个事件驱动的模型。
    • 您不能让 SQS 在大约消息数大于 1 时触发 CloudWatch 事件,然后让您的 Lambda 函数订阅该事件吗?
    • @idbehold - 这会起作用,但现在您将在几乎每条消息上运行 Lambda,而不是利用 Lambda 的能力来排出或删除大量消息。您最终会运行 Lambda 远远超出需要。
    【解决方案2】:

    好消息,这个功能昨天发布了!

    2018 年 6 月 28 日:AWS Lambda 将 Amazon Simple Queue Service 添加到支持的事件源中

    在此处阅读公告博文:https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/

    AWS Serverless Model支持新的事件源如下:

    Type: SQS
     PropertiesProperties:
      QueueQueue: arn:aws:sqs:us-west-2:012345678901:my-queue arn:aws:sqs:us-west-2:0123456789 # NOTE: FIFO SQS Queues are not yet supported
      BatchSize: 10
    

    这就是从 AWS 控制台 UI 配置它的方式:

    【讨论】:

      【解决方案3】:

      您可以使用 SQS API 让您的 lambda 函数轮询队列。您可以使用 SNS 来触发 Lambda 函数。

      【讨论】:

      • 你是在说两种方法吗?一种是使用 SQS,一种是使用 SNS 但不是 SQS,对吧?
      • 不,您需要将它们全部配置为作为解决方案的一部分协同工作。
      • 好的。非常感谢。
      【解决方案4】:

      更新:AWS Lambda 现在可以从 Amazon SQS 队列中触发。


      旧答案:

      发送消息到 SQS 队列的应用程序应该直接调用 Lambda 函数,而不是让 AWS Lambda 轮询 Amazon SQS 队列。这可以通过多种方式完成:

      • 通过 AWS API 调用直接调用
      • 向 Amazon SNS 主题发送消息,其中 Lambda 函数订阅了该主题
      • 通过 AWS API Gateway 调用函数,然后可以触发 Lambda 函数

      不需要将消息放入 SQS 队列的额外步骤。

      【讨论】:

      • """不需要将消息放入 SQS 队列的额外步骤。""" 只是好奇,因为 Lambda 并发,将 Lambda 调用与 SQS 绑定没有意义。我看过几篇关于 AWS 的文章。
      • 我的响应是在 Lambda 可以从 SQS 触发之前编写的。 Lambda 并发包括在达到并发限制的情况下等待,因此您不需要使用 SQS。请参阅:Managing concurrency for a Lambda function - AWS LambdaAWS Lambda function scaling - AWS Lambda
      • 酷 - 谢谢 John - 我正在寻找 Lambda 周围的东西并遇到了这个 - 如果你有机会请修改响应。
      猜你喜欢
      • 2020-06-14
      • 2017-09-17
      • 2019-05-14
      • 2019-10-06
      • 2016-06-10
      • 1970-01-01
      • 2023-01-05
      • 2018-07-30
      • 2020-11-14
      相关资源
      最近更新 更多