AWS Lambda函数用于连接Postgresql数据库

时间:2017-06-23 05:24:27

标签: node.js postgresql amazon-web-services aws-lambda

有谁知道如何通过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上写的,如果有所作为,我们就不会上传任何内容。

2 个答案:

答案 0 :(得分:3)

  

我是直接在AWS Lambda上写的,如果有所不同,则不会上传任何内容。

是的,这有所不同! Lambda并不提供开箱即用的第三方库。只要您依赖第三方库,就需要手动或使用API​​压缩和上传Lambda代码。

更多信息:Lambda Execution Environment and Available Libraries

答案 1 :(得分:1)

您需要参考Creating a Deployment Package (Node.js)

  

简单方案 - 如果您的自定义代码仅需要AWS SDK库,则可以使用AWS Lambda控制台中的内联编辑器。使用控制台,您可以编辑代码并将其上载到AWS Lambda。控制台将使用相关配置信息将代码压缩到Lambda服务可以运行的部署包中。

  

高级方案 - 如果您正在编写使用其他资源的代码,例如用于图像处理的图形库,或者您想使用AWS CLI而不是控制台,则需要先创建Lambda函数部署包,然后使用控制台或CLI上传包。

像我这样的情况属于高级方案。所以我们需要创建一个部署包然后上传它。我在这里做了什么 -

  1. mkdir deployment
  2. cd deployment
  3. vi index.js
  4. 在此文件中写下您的lambda代码。创建时,请确保您的处理程序名称为index.handler。
  5. npm install pg
  6. 您应该看到在部署目录中创建的node_modules目录,其中包含多个模块
  7. 将部署目录打包为zip文件并上传到Lambda。
  8. 你应该好的
  9. 注意:npm install会将节点模块安装在node_modules目录下的同一目录中,除非它在父目录中看到node_module目录。首先,npm init后跟npm install以确保模块安装在同一目录中以进行部署。