我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
当前回答
因为这个问题,亚马逊发布了Step Functions (https://aws.amazon.com/step-functions/)。
AWS Lambda背后的核心原则之一是,您可以更多地关注业务逻辑,而不是将它们联系在一起的应用程序逻辑。步骤函数允许您编排函数之间的复杂交互,而无需编写代码。
其他回答
您可以直接调用lambda函数(至少通过Java),方法是使用AWS博客文章中描述的AWSLambdaClient。
我用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
因为这个问题,亚马逊发布了Step Functions (https://aws.amazon.com/step-functions/)。
AWS Lambda背后的核心原则之一是,您可以更多地关注业务逻辑,而不是将它们联系在一起的应用程序逻辑。步骤函数允许您编排函数之间的复杂交互,而无需编写代码。
我也有同样的问题,但我实现的Lambda函数将在DynamoDB中插入一个条目,所以我的解决方案使用DynamoDB触发器。
我让DB对表中的每一次插入/更新都调用一个Lambda函数,这样就分离了两个Lambda函数的实现。
文档在这里: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.html
下面是一个有指导的攻略: https://aws.amazon.com/blogs/aws/dynamodb-update-triggers-streams-lambda-cross-region-replication-app/
这个解决方案是使用boto3和Python完成的:
import boto3
import json
lambda_client = boto3.client('lambda', region_name='eu-west-1')
def lambda_handler(event, context):
lambda_client.invoke(FunctionName = 'function_name', InvocationType = 'RequestResponse', Payload = json.dumps(event))
return True