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 件のコメント:

コメントを投稿