1

AWS Lambda NodeJS (サーバーレス フレームワークを使用) で単純なクエリを実装するのに問題があります。ローカルでの実行は機能しますが、AWS にアップロードしてから API Gateway エンドポイントを使用して実行しようとすると、次のエラーが発生します。

{
    "code": "PROTOCOL_INCORRECT_PACKET_SEQUENCE",
    "fatal": true
}

Google、StackOverflow、または GitHub でこのエラーに関する情報を見つけることができず、何が間違っているのかわかりません。

これが私が試みていることです。

    var mysql = require('mysql');

    var connection = mysql.createConnection({
        host : '', 
        user : '', 
        password : '', 
        database : ''
    });

    function getLists (client_id,api_key,callback){
        connection.query("SELECT * FROM list WHERE client_id = ?",
        [client_id],function(error, results){
            connection.end();
            callback(error,results);
        }
    )};

    module.exports.run = function(event, context, cb) {
        getLists(event.x_mail_list_client_id,'',function(error,results){
            if(error){
                return cb(null,error);
            }
            return cb(null,results);
        });
    };
4

4 に答える 4

1

awsm.json を編集します。

"exclude": [
  "aws-sdk",
  "mysql"
],
"includePaths": [
  "node_modules/mysql",
  "node_modules/bignumber.js",
  "node_modules/readable-stream",
  "node_modules/isarray",
  "node_modules/core-util-is",
  "node_modules/inherits",
  "node_modules/string_decoder"
]

https://github.com/felixge/node-mysql/issues/1249

于 2015-11-26T07:09:02.973 に答える
0

これとまったく同じ問題がありました。

問題は browserify と mysql モジュールにあります。残念ながら、私は本当の解決策を見つけることができませんでした。

コードを読むと、ビルダーとして利用できるオプションは browserify だけです。

https://github.com/jaws-framework/JAWS/blob/master/lib/commands/deploy_lambda.js

「ビルダー」を false に設定できます。これにより、Amazon に送信する前にすべてのファイルが単純に圧縮されます。

残念ながら(再び)これを行うだけではうまくいきません。何らかの理由で、すべてのファイルが「node_module」フォルダー内にあるため、パッケージをアップロードする前にファイルを取り出す必要があります。

とはいえ、これはすべて手動です...

編集: この最後の部分については、すでに未解決の問題があります: https://github.com/jaws-framework/JAWS/issues/239

于 2015-10-22T19:25:20.173 に答える