将AWS Lambda连接到Redshift - 60秒后超时

时间:2015-02-01 16:38:01

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

我创建了一个AWS Lambda函数:

  • 通过JDBC URL登录Redshift
  • 运行查询

在本地,使用Node,我可以通过JDBC成功连接到Redshift实例,并执行查询。

var conString = "postgresql://USER_NAME:PASSWORD@JDBC_URL”;
var client = new pg.Client(conString);
client.connect(function(err) {   
  if(err) {
            
      console.log('could not connect to redshift', err);
          
  }  
          
// omitted due to above error

但是,当我在AWS Lambda上执行该功能时(它包含在async#waterfall块中),AWS Cloudwatch日志告诉我,AWS Lambda函数在60秒后超时。

关于为什么我的功能无法连接的任何想法?

2 个答案:

答案 0 :(得分:2)

我发现要么将Redshift安全组公开给所有来源,要么就是没有。因为Lambda函数不在固定地址甚至固定范围的IP地址上运行,这对用户完全透明(无AKA服务器)。

我刚看到亚马逊宣布新的Lambda功能,以支持VPC昨天。我想如果我们可以在VPC中运行Redshift集群,这可以解决问题。

答案 1 :(得分:0)

如果您使用的是无服务器框架v1.5.0,则应添加:

iamRoleStatements: - Effect: Allow Action: - ec2:CreateNetworkInterface Resource: '*' - Effect: Allow Action: - ec2:DeleteNetworkInterface - ec2:DescribeNetworkInterfaces Resource: 'arn:aws:ec2:${self:provider.region}:*:network-interface/*'

还应将所有securityGroupIds添加到Inbounds Rules,如下所示: screenshot 2017-01-09 23 02 33

更多信息:https://serverless.com/framework/docs/providers/aws/guide/functions/#vpc-configuration