我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。

我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!


当前回答

我用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

其他回答

一个AWS Lambda函数可以调用另一个吗 简单的c#代码——

InvokeRequest RebookingLambdalambda = new InvokeRequest
{
  FunctionName = "Name"
  InvocationType = InvocationType.RequestResponse,
  Payload = "Json Data"
};

因为这个问题,亚马逊发布了Step Functions (https://aws.amazon.com/step-functions/)。

AWS Lambda背后的核心原则之一是,您可以更多地关注业务逻辑,而不是将它们联系在一起的应用程序逻辑。步骤函数允许您编排函数之间的复杂交互,而无需编写代码。

我正在使用blueskin提供的答案,但我无法读取有效负载响应,因为InvocationType='Event'是异步的,所以我更改为InvocationType='RequestResponse',现在一切正常。

您可以直接调用lambda函数(至少通过Java),方法是使用AWS博客文章中描述的AWSLambdaClient。

您可以设置AWS_REGION环境。

assert(process.env.AWS_REGION, 'Missing AWS_REGION env (eg. ap-northeast-1)');
const aws = require('aws-sdk');
const lambda = new aws.Lambda();