AWS Lambda のファンクション実行時間を5分まで延長させてみる #reinvent

2015.10.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Lambda のファンクションが5分まで延長可能に

re:Invent 2015 にて AWS Lambda の大幅アップデートがあり、ファンクションの実行時間が延長されるアップデートがありました。これによって、より長い処理を Lambda に任せることができるようになりました。

「ETL 処理などがとてもフィットする」と書かれていますが、最大実行時間が5分に増加されたことにより、大きいボリュームのデータを処理するアプリケーションなどに適しているというわけです。このようなユースケースはなかなか多いのではないでしょうか。

ということで、簡単ではありますが試してみました。

ファンクションの実行時間の延長

実行時間の延長は Configuration の Timeout で行います。5分まで設定できるようになっています。

lambda-5-minutes-01

ファンクションの実行時間の確認

実行時間は Context#getRemainingTimeInMillis メソッドで確認することが出来ます。

5分まで延長させてみる

ものは試し、5分まで無理矢理延長させてみましょう。while 文で5分スリープさせてみました。5分ぴったりだとタイムアウトしてしまうので、4分50秒くらいにしています。

exports.handler = function(event, context) {
console.log('Start!');
console.log('RemainingTimeInMillis : ' + context.getRemainingTimeInMillis());
var millseconds = 290000; // 4分50秒
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + millseconds);
console.log('OK!');
};

「Save and test」を行うと実行されます。Lambda のコンソール上では下図のようにずっと待たされます。

lambda-5-minutes-02

ちなみに Lambda のコンソールでは60秒以上かかる function の結果は表示できないので、CloudWatch で見る必要があります。

lambda-5-minutes-03

CloudWatch でログを見てみましょう。5分近く延長されていることが確認できました!

lambda-5-minutes-04

まとめ

今回の大規模アップデートにより、Lambda の利用用途がぐっと広まりました。沢山使っていきましょう!