【问题标题】:Is it possible for AWS Lambda to have more than one trigger?AWS Lambda 是否有可能拥有多个触发器?
【发布时间】:2021-04-10 00:19:47
【问题描述】:

我使用 AWS 无服务器应用程序模板创建了一个 .Net 应用程序。当我部署它时,我有一个带有 API Gateway 触发器的 Lambda(我们称之为 A)

当 A 收到 GET/POST 请求时,它会将工作委托给 worker lambda(我们称之为 B)。当 B 完成工作时,它会向 SNS 主题发布消息。

lambda A 需要订阅 SNS 主题才能知道工作是否完成。

我能够将 SNS 触发器添加到 lambda A(除了 API Gateway 触发器)。但我不知道如何在.Net 应用程序中使用触发器。当 API 网关和 SNS 触发器添加到同一个 lambda 时,如果有人能说明如何实现函数处理程序,那就太好了。

【问题讨论】:

  • 为什么要从 API 网关 SNS 触发的函数?您是否希望函数 A 在将结果返回给 API 网关之前等待函数 B 的结果?
  • @JohnRotenstein,是的,你是对的。函数 A 等待函数 B 的结果,然后将结果返回给 API 网关。

标签: c# amazon-web-services .net-core aws-lambda


【解决方案1】:

看来您的流程是:

User --> API Gateway --> Lambda A --> Lambda B

如果您希望 Lambda 函数 A 从 Lambda 函数 B 接收结果,它应该简单地对 Lambda 函数 B 执行一个同步的Invoke() API 调用。函数 B 返回的任何值都会返回给函数 A。 无需在响应中使用 Amazon SNS

值得一提的是,您将为这两个函数付费,因为函数 A 在等待函数 B 时会“运行”。因此,您可能希望将这两个操作合并到一个函数中以避免重复收费时间。

没有重新触发原始函数 A 的概念——一旦它完成执行,函数上下文就会丢失。您使用 SNS 调用函数 A 的计划只是启动函数 A 的另一个执行,而不是“回调”到原始函数。

【讨论】:

    【解决方案2】:

    我发现我可以更新 CFT 以添加多个触发器类型。但在 C# 代码中,FunctionHandler 方法不是通用的,它特定于一种触发器类型。所以我看不到在 C# 中处理多个触发器类型的方法。

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2019-01-28
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多