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()
を作成します。
元の質問で言われたように、Lambda関数のタイムアウトはデフォルト値ではなく、すでに最大で300秒に設定されています。 –