【问题标题】:How to execute AWS lambda after another lambda如何在另一个 lambda 之后执行 AWS lambda
【发布时间】:2020-08-07 22:19:52
【问题描述】:

我想用 AWS Lambda 函数实现的场景:

  1. 调用 Lambda 并接收响应。
  2. 收到响应后,我需要执行另一个 Lambda 函数,该函数完成自己的工作。

我的痛点是如何在没有第二次调用的情况下触发第二个 Lambda。我正在尝试在 AWS Step Functions 中执行此操作,但是,我相信我无法从第一个函数返回某些内容,然后继续执行第二个函数,或者我可以吗?

【问题讨论】:

标签: amazon-web-services aws-lambda aws-api-gateway aws-step-functions


【解决方案1】:

您可以使用aws lambda destinations 来实现此目的。

对于成功或失败等每个执行状态,您可以选择以下四个目标之一:另一个 Lambda 函数、SNS、SQS 或 EventBridge。 Lambda 还可以配置为将不同的执行结果路由到不同的目的地。

这个post 可能会给你一些见解。

【讨论】:

    【解决方案2】:

    这可以通过 AWS Step Function 本身轻松实现。您可以简单地为您的 Lambda 分别创建两个任务状态,如果您不想在任何 lambda 中传递任何输入,那也可以,因为它根本没有必要。

    简而言之,您的简单步进函数将如下所示:

    这将按顺序运行。

    您可以像这样简单地定义您的状态:

    "States": {
        "FirstLambda": {
          "Type": "Task",
          "Resource": "<first-lambda-arn>",
          "TimeoutSeconds": 9000,
          "Next": "SecondLambda"
        },
        "SecondLambda": {
          "Type": "Task",
          "Resource": "<second-lambda-arn>",
          "TimeoutSeconds": 9000,
          "End": true
        }
      }
    

    如果你不想,你不需要将任何东西作为有效负载传递给 lambda。如果需要,您可以在上面的第一个状态定义(第一个 Lambda 的定义)中使用 "ResultPath":"$.output" 将第一个 lambda 的输入传递给另一个 lambda 函数,并在下一个的有效负载中传递该 $.output

    【讨论】:

      【解决方案3】:

      可能的解决方案:

      1. 创建 SQS 队列
      2. 将返回对象作为消息放入队列中
      3. 将 SQS 队列设置为第二个 lambda 的触发器,并从事件对象中获取 SQS 队列消息

      您可以在docs找到更多相关信息

      【讨论】:

      • 如果我正确理解了你的建议,它会将数据传递给第二个 lambda,我不需要那个,我不关心第一个 fn 的返回对象。我只需要第一个 lambda 返回给调用者,然后触发第二个 lambda 的执行。
      • 将数据传递给第二个 lambda 是可选的,但通过使用这种方法,您实际上可以在完成第一个 lambda 时调用另一个 lambda。
      • 但也许我误解了你,也许你想从客户端调用第二个 lambda?
      【解决方案4】:

      我的一些 lambda 函数之间有类似的设置。

      first 收到来自 first 的响应时,我只会让 调用服务second lambda 函数的指定端点发送一个 http 请求em> lambda 函数。

      这当然需要第二个 lambda 函数设置一个端点来触发作业。

      【讨论】:

        猜你喜欢
        • 2019-07-13
        • 2013-02-11
        • 2020-11-06
        • 1970-01-01
        • 2018-06-18
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多