【问题标题】:Trigger Lambda Function in AWS when the message is present in SQS Queue当消息存在于 SQS 队列中时触发 AWS 中的 Lambda 函数
【发布时间】:2017-04-29 11:33:12
【问题描述】:

我正在使用 AWS Lambda 函数来处理队列中的消息,它工作正常。但是当消息可用或添加到 SQS 队列中时,我需要执行此 Lambda 函数。

是否可以基于 SQS 队列触发 Lambda 函数。请建议一种方法来实现此目标。

【问题讨论】:

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


    【解决方案1】:

    不直接支持从 SQS 队列调用 Lambda 函数。您可以在此处查看可用触发器的列表:http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html

    可能的解决方案:

    1. 将 SQS 队列替换为 Kinesis 或 DynamoDB。两者都可以在更新时触发 Lambda 函数。
    2. 在 SQS 之前注入 SNS。 SNS 可以向 SQS 添加项目触发 Lambda 函数。

    如果您不需要近乎实时的处理,这两个选项也是有效的:

    1. 创建将每 N 分钟(例如每分钟)触发 Lambda 函数的 CloudWatch 事件规则。
    2. 为您的 SQS 队列创建 CloudWatch 警报监视 ApproximateNumberOfMessagesVisible 参数。此警报应发布到 SNS 主题,然后触发 Lambda 函数。

    【讨论】:

    • 能否请您详细解释一下这个方法:“在SQS之前注入SNS。SNS可以向SQS添加项目并触发Lambda函数”
    • 您可以通过 SNS API 发布到 SNS 主题。 SNS 会将消息扇出到多个端点。
    • 我在这个 AWS 中不太好,因为我只是这里的初学者。你能帮我详细说明一下吗
    • 请参阅docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html 了解更多信息。基本上,您更改了将消息推送到 SQS 队列的系统;它应该将消息发布到 SNS 主题,然后如果您将队列设置为订阅者,该主题将散布到您的 SQS 队列。
    • 在SQS之前注入SNS时,如何保证消息加入SQS后触发lambda函数?
    【解决方案2】:

    Lambda 现在支持将 SQS 作为本机事件源

    https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-14
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2017-04-27
      • 2018-09-30
      • 1970-01-01
      相关资源
      最近更新 更多