我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
我有2个Lambda函数——一个生成报价,一个将报价转换为订单。 我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。
我已经看遍了我能想到的所有地方——但不知道我该如何链接或调用函数……这当然存在!
当前回答
您可以设置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();
其他回答
我用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
这个解决方案是使用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
下面是python的示例代码,
from boto3 import client as boto3_client
from datetime import datetime
import json
lambda_client = boto3_client('lambda')
def lambda_handler(event, context):
msg = {"key":"new_invocation", "at": datetime.now()}
invoke_response = lambda_client.invoke(FunctionName="another_lambda_",
InvocationType='Event',
Payload=json.dumps(msg))
print(invoke_response)
顺便说一句,您还需要向您的lambda角色添加这样的策略
{
"Sid": "Stmt1234567890",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "*"
}
我一直在考虑删除SNS,直到我在Lambda客户端文档(Java版本)中看到了这个:
访问AWS Lambda的客户端。使用此客户端进行的所有服务调用都是阻塞的,直到服务调用完成才返回。
所以SNS有一个明显的优势:它是异步的。你的lambda不会等待后续的lambda完成。
一个AWS Lambda函数可以调用另一个吗 简单的c#代码——
InvokeRequest RebookingLambdalambda = new InvokeRequest
{
FunctionName = "Name"
InvocationType = InvocationType.RequestResponse,
Payload = "Json Data"
};