无法从 AWS lambda 连接 AWS redshift

Posted

技术标签:

【中文标题】无法从 AWS lambda 连接 AWS redshift【英文标题】:Unable to connect AWS redshift from AWS lambda 【发布时间】:2021-04-27 06:38:00 【问题描述】:

我正在尝试从我的 AWS Lambda 函数连接到 AWS Redshift:

var Redshift = require('node-redshift');
const getLOOKUP_LOV_JSON= async ()=>
 try

   
        
    var client = 
        
  host: "redshift-host",
  user: 'admin',
  database: 'dev',
  password: 'password',
  port: "5439"
  
;
  return new Promise(function (resolve, reject) 
      
      
var redshiftClient = new Redshift(client, rawConnection: true);
     
      
           console.log("before Connect");
 redshiftClient.connect(function(err)
       console.log("after connect");
    if(err)
      console.log(err);
      throw err;
    
    else 
      
      redshiftClient.query('SELECT * FROM "Persons"', raw: true, function(err, data)
        if(err)
          
          console.log(err);
          throw err;
        
        else
          console.log(data);
         redshiftClient.close();
        
      );
    
  );

我的代码执行到连接方法之前,我的记录器中没有任何问题,它只打印“连接之前”。

【问题讨论】:

这能回答你的问题吗? Connect to Redshift from AWS Lambda 【参考方案1】:

AWS Lambda 函数需要配置为连接到与 Amazon Redshift 集群位于同一 VPC 中的私有子网。

你会遇到超时问题。要解决此问题,您需要将 lambda 函数放入 VPC 你可以按照教程https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html

然后在Redshift的安全组中为5439端口的lambda函数安全组添加入站规则 https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html

【讨论】:

以上是关于无法从 AWS lambda 连接 AWS redshift的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 无法连接到 RDS 实例,但我可以在本地连接?

无法从 AWS Lambda 连接到 AWS RDS MySql DB。 ClassNotFoundException:com.mysql.jdbc

AWS Lambda 连接互联网

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs

无法从 lambda 中的 python 连接到 aws redshift