2017-10-08 47 views
0

调用aws lamda函数我试图根据电子邮件触发器调用aws lamda函数。我收到了电子邮件触发器,它触发了我期望的if语句,但是它不能执行lambda.invoke。如何从另一个

我失踪了什么?我得到大部分的日志报表,但似乎并没有

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") 
     } 

}; 
+0

这篇文章可能会有所帮助[https://stackoverflow.com/questions/31714788/can-an-aws-lambda-function-call-another](https://stackoverflow。 com/questions/31714788/can-an-aws-lambda-function-call-another) – KKK

+0

您是否碰巧将您的Lambda函数放入您的VPC中?如果是这样,您需要一个NAT网关才能让Lambda函数访问AWS API(以便调用其他函数)。或者只是从VPC中删除它。如果那不是,那就试着发布完整的日志。 –

回答

-2

这听起来像你想要的功能。他们将让您链不同拉姆达功能整合在一起,做并行的事情,等

0
  1. 保持你的代码

    `VAR AWS =需要的顶部您的AWS-SDK文件(“AWS -sdk');

    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") 
         } 
    
        };