有谁知道如何通过AWS Lambda函数连接到PostgreSQL数据库。我在网上查了一下,但我找不到任何关于它的信息。如果你能告诉我如何去做那件事会很棒。
如果你发现我的代码(node.js)有问题,那就太好了,否则你能告诉我怎么做吗?
exports.handler = (event, context, callback) => {
"use strict"
const pg = require('pg');
const connectionStr =
"postgres://username:password@host:port/db_name";
var client = new pg.Client(connectionStr);
client.connect(function(err){
if(err) {
callback(err)
}
callback(null, 'Connection established');
});
context.callbackWaitsForEmptyEventLoop = false;
};
代码抛出错误: 找不到模块' pg'
我是直接在AWS Lambda上写的,如果有所作为,我们就不会上传任何内容。
答案 0 :(得分:3)
我是直接在AWS Lambda上写的,如果有所不同,则不会上传任何内容。
是的,这有所不同! Lambda并不提供开箱即用的第三方库。只要您依赖第三方库,就需要手动或使用API压缩和上传Lambda代码。
答案 1 :(得分:1)
您需要参考Creating a Deployment Package (Node.js)
简单方案 - 如果您的自定义代码仅需要AWS SDK库,则可以使用AWS Lambda控制台中的内联编辑器。使用控制台,您可以编辑代码并将其上载到AWS Lambda。控制台将使用相关配置信息将代码压缩到Lambda服务可以运行的部署包中。
和
高级方案 - 如果您正在编写使用其他资源的代码,例如用于图像处理的图形库,或者您想使用AWS CLI而不是控制台,则需要先创建Lambda函数部署包,然后使用控制台或CLI上传包。
像我这样的情况属于高级方案。所以我们需要创建一个部署包然后上传它。我在这里做了什么 -
注意:npm install会将节点模块安装在node_modules目录下的同一目录中,除非它在父目录中看到node_module目录。首先,npm init
后跟npm install
以确保模块安装在同一目录中以进行部署。