2017年1月16日月曜日

AWS Lambda Process exited before completing request error

  • このエントリーをはてなブックマークに追加


AWS Lambda Process exited before completing request error

LambdaでRDS(mariadb)にデータをプッシュするAPIを作っています。

Nodejs sample code

var mysql = require('mysql');

exports.handler = function(event,context){

var connection = mysql.createConnection({
host : 'xxx.xxx.eu-west-1.rds.amazonaws.com', //RDSのエンドポイント
user : 'xxxxxx', //MySQLのユーザ名
password : 'xxxxxx', //MySQLのパスワード
database : 'xxxxxx'
});

connection.connect();

var name = event.Name
var email = event.Email
var birth = event.Birth

var insert_sql = "insert into User (Name, Email, Birth) value ('" + name +"','" + email +"','" + birth + "')"
connection.query(insert_sql, function(err, rows, fields) {
if (err)
{
console.log("--err");
console.log(err);
throw err;
}
});

connection.end(function(err) {
context.done();
});

}

Mac でコードをZIPする

$ mkdir lambda-func
$ cd lambda-func
$ brew install Nodejs
$ npm install mysql
$ ls
UpdateDB.js node_modules
$ zip -r lambda-func.zip UpdateDB.js node_modules/

Upload lambda-func.zip to lambda and set handler to UpdateDB.handler (UpdateDB.js + exports.handler)

Error

RequestId: 1682cd4d-dbea-11e6-81d7-03af694d0c84 Process exited before completing request

Process exited before completing requestのエラーがよく出ています。
色々調べたのですが、原因は以下何種あります。

  • Time out DBに接続して処理に時間がかかった。

  • Memory 割り当てるMemoryが足りなかった。
    REPORT RequestId: 1682cd4d-dbea-11e6-81d7-03af694d0c84 Duration: 3658.20 ms Billed Duration: 3700 ms Memory Size: 128 MB Max Memory Used: 128 MB

解決策

[Configuration]タブでMemoryとTime outを上げる。
他の原因かもしれません。ただ言えるのは、スクリプト内でどこかでエラーになって処理終わらなくてこのエラーが出力されていると言う感じです。DebugにConsole.logをこまめに使ってデバックしましょう

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿