2016-07-27 10 views
1

私は、共通関数を持つノードパッケージをインポートするラムダ関数を持っています。 Lambda 1はメッセージをSQSに入れ、Lambda 2はエラーログを出力します。共有関数の1つがLambda 2を呼び出しますが、2回目の呼び出しでエラーが発生します。ノードパッケージ関数からラムダを呼び出す

ラムダ1:

exports.handler = function (event, context) { 
    var pnmacCommon = require('./pnmacCommon.js'); //loading node package 
    try { 
    // this part omitted for space 
    var aws = require('aws-sdk'); 
    var sqs = new aws.SQS({ region : 'us-west-2' }); 
    var params = { 
     MessageBody: JSON.stringify(event), 
     QueueUrl: '[url]' 
    }; 
    sqs.sendMessage(params, function(err,data){ 
     if(err) { 
     console.log('error:',"FAIL Send Message: " + err); 
     context.done(err, "ERROR Put SQS"); // ERROR with message 
     pnmacCommon.SvtLogErrorToElmah(application, "FAIL Send Message: " + err, context); 
     }else{ 
     console.log('Message Sent:', queueUrl); 
     console.log('data:',data.MessageId); 
     context.done(null,''); // SUCCESS 
     } 
    } 
    }); 
} 
catch (error) { 
    pnmacCommon.SvtLogErrorToElmah(application, 'SVTMessageBus_Client' + error, context); 
    context.done(error, "ERROR put SQS"); 
} 

pnmacCommon.js:CloudWatchの中で探し

var SvtLogErrorToElmah = function (application, error, context) { 
    console.log("SvtLogErrorToElmah=" + JSON.stringify(error, null, 2)); 
    // this part omitted for space 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({region: 'us-west-2' }); 
    lambda.invoke({ 
    FunctionName: "SVTExceptionLogger", 
    Payload: JSON.stringify(message, null, 2) 
    }, function (error2, data) { 
    if (error2) { 
     context.fail(error2); 
    } else { 
     context.fail(error); 
    }); 
    context.done(null, message); 
} 
module.exports.SvtLogErrorToElmah = SvtLogErrorToElmah; 

、それは第二ラムダを起動しようとしたとき、私はSvtLogErrorToElmah関数が呼び出されることがわかりますが、それが失敗しました。エラーメッセージはTypeError: lambda.invoke is not a functionです。

アイデア?前もって感謝します。

答えて

0

これは変数スコープの問題であることが判明しました。共有関数では、変数名awsを再利用します。これを別の名前に変更すると、問題はなくなりました。

0

私はちょうどあなたが持っていたのと同じエラーが出てきました。そして私のためにaws-sdkバージョンのアップデートが問題を解決しました。

package.json[AWS-SDKバージョン]

古い更新:(固定エラーに(と '例外TypeError lambda.invoke関数ない')

"dependencies": { 
    "aws-sdk": "^2.1.17" 
} 

を)

"dependencies": { 
    "aws-sdk": "^2.18.0" 
} 
関連する問題