我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
当前回答
一个AWS Lambda函数可以调用另一个吗 简单的c#代码——
InvokeRequest RebookingLambdalambda = new InvokeRequest
{
FunctionName = "Name"
InvocationType = InvocationType.RequestResponse,
Payload = "Json Data"
};
其他回答
我一直在考虑删除SNS,直到我在Lambda客户端文档(Java版本)中看到了这个:
访问AWS Lambda的客户端。使用此客户端进行的所有服务调用都是阻塞的,直到服务调用完成才返回。
所以SNS有一个明显的优势:它是异步的。你的lambda不会等待后续的lambda完成。
下面是调用另一个lambda函数并获得其响应的python示例。有两种调用类型“RequestResponse”和“Event”。如果你想获得lambda函数的响应,请使用'RequestResponse',并使用'Event'来异步调用lambda函数。所以异步和同步两种方式都是可用的。
lambda_response = lambda_client.invoke(
FunctionName = lambda_name,
InvocationType = 'RequestResponse',
Payload = json.dumps(input)
)
resp_str = lambda_response['Payload'].read()
response = json.loads(resp_str)
您可以以异步方式直接从其他Lambda函数直接触发Lambda函数。
https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations
你可能会使用Async.js的瀑布特性——参见本文档第3步大代码块底部的示例:
https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/
在java中,我们可以这样做:
AWSLambdaAsync awsLambdaAsync = AWSLambdaAsyncClientBuilder.standard().withRegion("us-east-1").build();
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.withFunctionName("youLambdaFunctionNameToCall").withPayload(payload);
InvokeResult invokeResult = awsLambdaAsync.invoke(invokeRequest);
在这里,payload是你的stringized java对象,它需要作为Json对象传递给另一个lambda,以防你需要从调用lambda传递一些信息到被调用lambda。