context.succeed("Success");
のように書いておくと、実行したプログラムがエラーなく正常に動いた時に、コンソールに
Success
と表示されます。
しかし、context.succeedが実行されると、プログラムが勝手に終了しまうようです。
例えば、
// get all instances var DI_params = { DryRun: false, MaxResults: 10, NextToken: null }; ec2.describeInstances(DI_params, function(DI_err, DI_data) { if (DI_err) console.log(DI_err, DI_err.stack); // an error occurred else console.log(DI_data); // successful response }); context.succeed("Success");
のように書くとします。
プログラムは上から一行ずつ実行されますが、
ec2.describeInstances(DI_params, function(DI_err, DI_data) { if (DI_err) console.log(DI_err, DI_err.stack); // an error occurred else console.log(DI_data); // successful response });
の部分で時間がかかるとします。 このとき、node.jsが非同期処理であるがゆえに
context.succeed("Success");
のせいで、時間がかかるコードが終了する前に、プログラムが勝手に終了してしまい、所望の結果が得られないということがあります。
これを回避するやり方は色々とあるそうですが、とりあえず、
context.succeedを書かない
ことで解決できます。
また、これを書かないことにより、
{ "errorMessage": "Process exited before completing request" }
のようにエラーが出ますが、影響はないので、心配はいりません。