Javascript 如何从另一个调用aws lamda函数
我正在尝试基于电子邮件触发器调用aws lamda函数。我得到了email触发器,它命中了我期望的if语句,但是它没有执行lambda.invoke 我错过了什么?我得到了大多数日志语句,但似乎没有Javascript 如何从另一个调用aws lamda函数,javascript,amazon-web-services,aws-lambda,Javascript,Amazon Web Services,Aws Lambda,我正在尝试基于电子邮件触发器调用aws lamda函数。我得到了email触发器,它命中了我期望的if语句,但是它没有执行lambda.invoke 我错过了什么?我得到了大多数日志语句,但似乎没有 exports.handler = function(event, context) { var aws = require('aws-sdk'); var lambda = new aws.Lambda({ region: 'us-east-1' });
exports.handler = function(event, context) {
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: 'us-east-1'
});
var sesNotification = event.Records[0].ses;
//console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
var sub=sesNotification.mail.commonHeaders.subject;
if(sub){
if(sub.toLowerCase()=="startpipeline"){
console.log("Starting Pipeline");
lambda.invoke({
FunctionName: 'StartDevOpsServers',
Payload: JSON.stringify(event, null, 2), // pass params
InvocationType: 'Event'
}, function(error, data) {
if (error) {
console.log("error",error,data);
context.done('error', error);
}
if(data.Payload){
console.log("succeed",data.Payload);
context.succeed(data.Payload)
}
});
}else if(sub.toLowerCase()=="stoppipeline"){
console.log("Stopping Pipeline");
lambda.invoke({
FunctionName: 'StopDevOpsServers',
Payload: JSON.stringify(event, null, 2) // pass params
}, function(error, data) {
if (error) {
context.done('error', error);
}
if(data.Payload){
context.succeed(data.Payload)
}
});
context.succeed();
}else{
console.log('subjectnotRecognized')
}
}else{
console.log("noSubJect")
}
};
听起来你想要阶跃函数。它们将允许您将不同的lambda函数链接在一起,并行地执行操作,等等
这篇文章可能会有帮助。你有没有碰巧把Lambda函数放在你的专有网络中?如果是这样,您将需要一个NAT网关,以便Lambda函数访问AWSAPI(以便调用另一个函数)。或者从VPC中删除它。如果不是这样,请尝试发布完整日志。
exports.handler = function(event, context)
{
var lambda = new aws.Lambda({
region: 'us-east-1'
});
var sesNotification = event.Records[0].ses;
//console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
var sub=sesNotification.mail.commonHeaders.subject;
if(sub){
if(sub.toLowerCase()=="startpipeline"){
console.log("Starting Pipeline");
lambda.invoke({
FunctionName: 'StartDevOpsServers',
Payload: JSON.stringify(event, null, 2), // pass params
InvocationType: 'Event'
}, function(error, data) {
if (error) {
console.log("error",error,data);
context.done('error', error);
}
if(data.Payload){
console.log("succeed",data.Payload);
context.succeed(data.Payload)
}
});
}else if(sub.toLowerCase()=="stoppipeline"){
console.log("Stopping Pipeline");
lambda.invoke({
FunctionName: 'StopDevOpsServers',
Payload: JSON.stringify(event, null, 2) // pass params
}, function(error, data) {
if (error) {
context.done('error', error);
}
if(data.Payload){
context.succeed(data.Payload)
}
});
context.succeed();
}else{
console.log('subjectnotRecognized')
}
}else{
console.log("noSubJect")
}
};