AWS Lambda函数连接到Postgresql数据库

有谁知道如何通过AWS Lambda函数连接到PostgreSQL数据库。 我在网上search它,但我找不到任何关于它的东西。 如果你能告诉我如何去做,这将是伟大的。

如果你能发现我的代码(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; }; 

该代码将引发错误:无法find模块'pg'

我直接在AWS Lambda上写了它,如果这样做有什么不同,就不会上传任何东西。

我直接在AWS Lambda上写了它,如果这样做有什么不同,就不会上传任何东西。

是的,这使差异! Lambda不提供第三方库。 只要您对第三方库有依赖关系,就需要手动压缩并上传Lambda代码或使用API​​。

获取更多信息: Lambda执行环境和可用的库

您需要参考创build部署包(Node.js)

简单场景 – 如果您的自定义代码只需要AWS SDK库,那么您可以使用AWS Lambda控制台中的内联编辑器。 使用控制台,您可以编辑代码并将其上传到AWS Lambda。 控制台会将带有相关configuration信息的代码压缩到Lambda服务可以运行的部署包中。

高级场景 – 如果您正在编写使用其他资源(如用于image processing的graphics库)的代码,或者要使用AWS CLI而不是控制台,则需要先创buildLambda函数部署包,然后使用控制台或CLI来上传软件包。

你的情况就像我的高级情况。 所以我们需要创build一个部署包,然后上传它。 在这里我做了什么 –

  1. mkdir部署
  2. cd部署
  3. vi index.js
  4. 把你的lambda代码写在这个文件中。 确保您的处理程序名称是在创build时使用index.handler。
  5. npm install pg
  6. 您应该看到在部署目录中创build了node_modules目录,其中包含多个模块
  7. 将部署目录打包成一个zip文件并上传到Lambda。
  8. 那你应该很好

注:npm install会将节点模块安装在node_modules目录下的相同目录中,除非它在父目录中看到一个node_module目录。 首先要执行npm init然后执行npm install以确保模块安装在同一个目录中进行部署。