在无服务器中,我有以下文件夹结构
/component_a/function_1/function_1.js (get)
/component_a/function_2/function_2.js (get)
使用无服务器框架从function_1调用function_2的最佳方法是什么?
答案 0 :(得分:2)
不要从function_1调用function_2。
编写这两个函数,以便能够独立完成各自的任务。
为了控制执行流程,您应该使用AWS Step Functions,它可以让您在各种lambda函数之间进行协调。
如果要保留信息,请使用其他存储服务(如S3或DynamoDB)来存储function_2可以使用的信息。然后让Step Functions引导流量。但请检查您正在部署功能的区域中是否存在此服务。
以下是AWS步骤功能的快速指南:
http://docs.aws.amazon.com/step-functions/latest/dg/welcome.html
答案 1 :(得分:1)
这通常不赞成,因为它创建了一个依赖。直接调用其他lambda函数是一个选项(Can an AWS Lambda function call another)但是lambda的意思是让它们独立运行。如果你最终得到一个递归的lambda模式也可能是危险的。如果您需要快速响应时间,最好的方法通常是通过SQS和SNS进行通信。
答案 2 :(得分:1)
这取决于您是否对function_2
的返回值感兴趣。
如果需要获取function_2
的返回值,则必须直接调用它。您有两种选择:
同步调用Function 2 Lambda 。请参阅AWS-SDK文档中的Lambda.invoke()。
如果你可以在你的Function 1包中包含Function 2(默认情况下serverless
会这样做),你可以直接导入它,具体取决于代码的编写方式。
如果函数1不需要知道函数2的响应或返回值,则应使用SNS将其作为异步调用。为此,请参考以下建议方法: