我在Lambda funcion中有这段代码:
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(); });
当我从EC2运行时,它运行正常。当我从Lambda运行时,我得到错误:无法找到模块' pg'
答案 0 :(得分: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)
您可以查看此AWS链接的官方样本:http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser-create-test-function-create-function.html
答案 1 :(得分:0)
您可以轻松地将预先定义的libs导入到lambda中。例如,你只能使用boto3和core for python,对于java你可以只使用core。 http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html 您无法以简单的方式导入任何其他库。 你可以尝试使用“艰难的方式”。 在这种情况下,您应该将所有必需的库保存到s3(或您可以从lambda访问的其他位置),然后复制到lambda环境(/ tmp)并在反射的帮助下导入它。
答案 2 :(得分:0)
错误:无法找到模块' pg'
就我而言,我只是上传了index.js。我们还需要打包第三方节点模块。
npm install package
package.json
并run mpn install
node_modules
文件夹在同一目录中创建。现在我得到:无法导入模块'索引':错误。我的函数必须被称为index.js
在我的情况下,我正在压缩整个目录而不是它的内容。所以你需要真正做到 -
zip -r deploymentpkg.zip ./*
而不是
zip -r deploymentpkg.zip folder