繁体   English   中英

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

[英]AWS Lambda function to connect to a Postgresql database

有谁知道如何通过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上写了它,如果有所不同,就不会上传任何内容。

我直接在AWS Lambda上写了它,如果有所不同,就不会上传任何内容。

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM