【问题标题】:What is the best practice to call an api gateway method from another method?从另一种方法调用 api 网关方法的最佳实践是什么?
【发布时间】:2016-10-06 18:12:58
【问题描述】:

在无服务器中,我有以下文件夹结构

/component_a/function_1/function_1.js (get)
/component_a/function_2/function_2.js (get)

使用无服务器框架从 function_1 调用 function_2 的最佳方式是什么?

【问题讨论】:

    标签: node.js amazon-web-services lambda


    【解决方案1】:

    这通常是不受欢迎的,因为它会产生依赖关系。直接调用其他 lambda 函数是一种选择(Can an AWS Lambda function call another),但是 lambda 的重点是让它们独立运行。如果您最终使用递归 lambda 模式,这也可能很危险。如果您需要快速响应时间,最好的方式通常是通过 SQS 和 SNS 进行通信。

    【讨论】:

      【解决方案2】:

      不要从 function_1 调用 function_2。

      编写两个函数,使其能够独立完成各自的任务。

      为了控制执行流程,您应该使用 AWS Step Functions,它可以让您在各种 lambda 函数之间进行协调。

      如果您想持久化信息,请使用其他存储服务(如 S3 或 DynamoDB)来存储 function_2 可以使用的信息。然后让 Step Functions 引导流量。但请检查您正在部署功能的区域中是否存在此服务。

      这里是 AWS Step Functions 的快速指南:

      http://docs.aws.amazon.com/step-functions/latest/dg/welcome.html

      【讨论】:

        【解决方案3】:

        这取决于你是否对function_2的返回值感兴趣。

        如果需要获取function_2的返回值,必须直接调用。你有两个选择:

        1. 同步调用函数 2 Lambda。请参阅 AWS-SDK 文档中的 Lambda.invoke()

        2. 如果您可以在 Function 1 包中包含 Function 2(默认情况下 serverless 会这样做),您可能可以直接导入它,具体取决于您的代码编写方式。

        如果Function 1不需要知道Function 2的响应或返回值,你应该使用SNS来调用它异步。为此,建议采用以下方法:

        1. 创建一个 SNS 主题。
        2. 配置函数2订阅上述SNS主题。 (Serverless Docs)
        3. 具有功能1,在步骤1中向SNS主题发布消息。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-21
        • 2012-04-09
        • 1970-01-01
        相关资源
        最近更新 更多