【问题标题】:AWS Lambda chaining best practiceAWS Lambda 链接最佳实践
【发布时间】:2018-02-27 17:07:52
【问题描述】:

我正在为我的问题寻找解决方案,也许有人可以给我一些想法。 我有一个API Gateway 插入aws lambda A。 我必须处理这样的情况:

  1. Lambda A 应该调用 lambda B,如果有任何结果,则返回 API Gateway。
  2. Lambda A 应该调用 lambda B,如果没有结果,它将调用 lambda C,然后将任何结果返回给 APi Gateway

所以,我的问题是如何链接这些 lambda,因为我不想拥有一个巨大的 lambda。 起初,我考虑使用Step Functions,只是它在异步模式下工作,所以对我的情况没有好处。我知道我可以做一个 lambda 来调用 step 函数并等待结果,但我不喜欢这种解决方案。

有什么好的解决方案的想法吗?

谢谢。

C.C.

【问题讨论】:

  • 您是否考虑过在 2 个 lambda 函数之间使用 SNS?如果后续的 lambda 函数很小,为什么不直接使用 lambda_client.invoke(FunctionName="") 调用它们呢?
  • 使用同步调用直接从父级调用子 Lambda 函数。请注意父级的超时,因为它必须足够大以容纳子 Lambda 容器的启动及其处理。
  • 其实我不是很喜欢这个解决方案,因为我将有 2 个紧密耦合的 lambda,并且我会为等待的第一个 lambda 支付执行费用。
  • Lambda 成本很低,但同意这不是一个理想的解决方案。也许重新考虑将代码合并到单个 Lambda 中。
  • 每个 Lambda 做什么?如果整个工作流程完成得非常快,我看不出您为什么要将整个逻辑拆分为几个 Lambda。

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


【解决方案1】:

【讨论】:

    【解决方案2】:

    您可以使用 AWS Step Function 管理 AWS lambda 函数之间的协调。

    【讨论】:

    【解决方案3】:

    真正的 B & C 是 A 调用的 api

    使用 IAM 身份验证将 lambda B 和 C 放在另一个 api 网关后面。 授予 A 通过您的 IAM 角色调用该 API 的权利。

    • 现在您的外部客户端通过任何身份验证方案调用 A。
    • A 可以通过 api 调用 B 或 C(可能是 url 作为参数)
    • A 可以将结果返回给调用者

    对于更精细的方法,您可以将 B/C 作为自己的 api 网关,这意味着您已经将它们完全解耦

    【讨论】:

    • 看到 API Gateway 充当 Lambda 之间的代理可能会很有趣。如果 API Gateway 利用新的 Open API 3.0“链接”规范,这可能是 Lambda A 指示 API Gateway 如何路由(即链接)响应负载的接口。好处是减少了 RTT、最小的 Lambda 执行时间和完整的 Lambda 解耦。
    猜你喜欢
    • 2017-10-28
    • 1970-01-01
    • 2015-08-03
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2016-01-29
    相关资源
    最近更新 更多