我正在尝试从Lambda函数访问Redshift数据库。当我将0.0.0.0/0添加到Redshift界面中的安全组连接时(如this article所示),我能够成功连接。但是,从安全角度来看,使用0.0.0.0/0感觉不舒服。
有没有办法只允许Lambda访问Redshift而不将其打开到公共互联网?
我尝试添加AWS IP ranges但是,这不起作用(因为它只允许有限数量的安全组连接)。
答案 0 :(得分:6)
为您的Lambda函数启用VPC访问,并将Redshift安全组打开到分配给Lambda函数的SG,就像您将其打开到EC2服务器一样。
答案 1 :(得分:1)
我遇到了同样的问题,答案无济于事。可以在我的安全组中添加0.0.0.0/0,但我不能长期使用。
我最终创建了一个新的VPC,该VPC具有公用(10.0.1.0)和专用(10.0.2.0)子网,以及公用子网上的NAT。在专用子网上运行lambda函数,但仍然无法访问redshift db。将Redshift db移动到公共(10.0.1.0)子网。我将Redshift放在该子网中是因为加载脚本在外部运行,并且有一个安全组可以通过我的两个工作/家庭IP 在端口5439上,它也允许进入私有10.0.2.0/24子网,其中lambda 脚本正在运行。
那表示它仍然无法正常工作,花了一段时间才弄清楚我无法使用完整的dns名称访问Redshift。即使已安装了有效的NAT,它仍未连接到redshift。我用两个EC2实例和一个简单的脚本来连接和运行查询进行了测试。这比在lambda中解决连接问题要快。 managing clusters上的此链接和cluster node ip上的此链接为我解决了这个问题。
解决方案:转到群集并单击它。所有配置信息的右下角是SSH接收设置和专用IP。我用那个IP代替了URL,它解决了我所有的连接问题。现在看来很基本,但是花了很多时间搜索并且找不到我想要的答案。
祝你好运, 木