如何从Node.js中的Lambda函数在PostgreSQL RDS上运行SQL?

Era*_*tan 9 postgresql lambda

我在Lambda函数中有这个代码:

sql="SELECT ...";
var pg = require('pg');
var connectionString = 'postgres://...';

var client = new pg.Client(connectionString);
client.connect();
var query = client.query(sql);
query.on('end', function() { client.end(); });
Run Code Online (Sandbox Code Playgroud)

当我从EC2运行时,它工作正常.当我从Lambda运行时,我得到错误:无法找到模块'pg'

imT*_*chu 8

我是Node JS中的超级菜鸟,但我真的想尝试AWS Lambda.这是我采取的步骤.我使用的是Ubuntu 14.04.

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
sudo ln -s /usr/bin/nodejs /usr/bin/node

mkdir the_function && cd the_function
mkdir node_modules 
npm install pg

******Now create a file index.js and paste the content of your funcion.
console.log('Loading S2 Function');
var pg = require("pg");

exports.handler = function(event, context) {   
    var conn = "pg://user:password@host:5432/bd_name";

    var client = new pg.Client(conn);
    client.connect();

    var query = client.query("SELECT * FROM BLA WHERE ID = 1");
    query.on("row", function (row, result) {
        result.addRow(row);
    });
    query.on("end", function (result) {
        var jsonString = JSON.stringify(result.rows);
        var jsonObj = JSON.parse(jsonString);
        console.log(jsonString);
        client.end();
        context.succeed(jsonObj);
    });
 };

******Now zip the contents of the_function folder (not the_function folder itself)
Run Code Online (Sandbox Code Playgroud)

您可以查看此AWS链接中的官方样本:http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser-create-test-function-create-function.html