2016-08-12 14 views
3

AWSラムダで長い操作を実行するMeteor(ノード4.4.7)アプリケーションを実行しています。私は自分のコードからラムダ関数を呼び出し、次の呼び出しに進む前に応答を待ちます。 former question(ラムダと私のコードのAWS.Lambdaオブジェクトの両方)に記述されているように、タイムアウトを300000msに設定しました。AWSラムダ呼び出し関数(js sdk):タイムアウトがデフォルトにリセットされます

私の問題は、時々AWS.Lambdaのタイムアウト値が120000msのデフォルト値にリセットされることです。私のラムダ関数は実行に時間がかかります(ただし、最大300秒未満です)ので、私は応答を受け取りません。さらに、私は自分の関数がデフォルトのmaxRetriesの値に3回以上呼び出されていることを確認しています。

私はそれを再現するステップを知らない。ランダムなようです。それは通常、私のアプリを実行して数日後に発生します。 AWS.Lambdaオブジェクトのプロパティをチェックすると、デフォルトの120000msの値を持つように動作しますが、300000msのタイムアウト値が残ります。これが起こると、その後のすべての呼び出し要求は同じ問題を抱え、アプリケーションを再起動して再び機能させる必要があります。

ラムダログでは、関数が適切に実行されていることがわかります。継続時間<私のコードに120sが返されます。 Duration> 120sを再試行します。

サンプルコード:私が試したもののうち、

var options = { 
    maxRetries: 1, 
    httpOptions: { 
    timeout: 300000 
    } 
}; 

var lambda = new AWS.Lambda(options); 

var myEventObject = {...}; 
var payload = JSON.stringify('myEventObject'); 

var params = { 
    FunctionName: 'myLambdaFunction' 
    InvocationType: 'RequestResponse', 
    LogType: 'None', 
    Payload: payload 
}; 

lambda.invoke(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

:各呼び出しのためのnew AWS.Lambda()を作成します。

答えて

1

SDK documentationによると、AWS.LambdaのhttpOptions.timeoutキーは機能タイムアウトではなく、ソケットタイムアウトです。ラムダ関数のデフォルトのタイムアウトは2分ではなく3秒であるため、これは意味があります。

updateConfigurationメソッドを使用して、コード内の関数のタイムアウトを変更できます。または、Serverless Frameworkを使用してラムダ関数をデプロイする場合は、serverless.ymlにタイムアウトを設定できます。もちろん、AWSコンソールでタイムアウトを設定することもできます(私は、Serverless/CloudFormationでデプロイするとコンソールで設定された設定の問題が解消されましたが、どのように展開しているのかわかりませんS3のコードを読み込んだり、ZIPをアップロードしているだけでは問題にはなりません。

+0

元の質問で言われたように、Lambda関数のタイムアウトはデフォルト値ではなく、すでに最大で300秒に設定されています。 –

0

lambda.invokeを呼び出しているラムダ(lambda.invokeではなく、options)のタイムアウトを設定する必要があります。

だから、あなたはLambdaBを呼び出すLambdaAを持っている場合は、LambdaAのタイムアウトが同じ(またはより高い)である必要がありLambdaBのタイムアウト、LambdaBが完了する前にそうLambdaAが潜在的にタイムアウトします。

提供しているコードがラムダで実行されているとします。 のタイムアウトは、ラムダに設定する必要があります。

AWS.Lambdaの作成に使用しているoptionsは、ここで指定したコードで破棄できます。

関連する問題