我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
当前回答
我正在使用blueskin提供的答案,但我无法读取有效负载响应,因为InvocationType='Event'是异步的,所以我更改为InvocationType='RequestResponse',现在一切正常。
其他回答
我用aws-sdk找到了一个方法。
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: 'us-west-2' //change to your region
});
lambda.invoke({
FunctionName: 'name_of_your_lambda_function',
Payload: JSON.stringify(event, null, 2) // pass params
}, function(error, data) {
if (error) {
context.done('error', error);
}
if(data.Payload){
context.succeed(data.Payload)
}
});
你可以在这里找到医生:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html
您可以以异步方式直接从其他Lambda函数直接触发Lambda函数。
https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations
您可以直接调用lambda函数(至少通过Java),方法是使用AWS博客文章中描述的AWSLambdaClient。
这是一种迂回的解决方案,但当我需要链接lambda函数时,我只调用API端点。这允许您在编码时决定是否希望它们是异步的。
如果你不想设置一个POST请求,你可以设置一个简单的GET请求,带几个查询字符串参数,或者根本不带查询字符串参数,以便于事件传递。
——编辑——
参见:https://docs.aws.amazon.com/apigateway/api-reference/making-http-requests/
和:http://docs.aws.amazon.com/lambda/latest/dg/with-on-demand-https-example.html
因为这个问题,亚马逊发布了Step Functions (https://aws.amazon.com/step-functions/)。
AWS Lambda背后的核心原则之一是,您可以更多地关注业务逻辑,而不是将它们联系在一起的应用程序逻辑。步骤函数允许您编排函数之间的复杂交互,而无需编写代码。