将Lambda连接到不同可用区域中的Redshift

时间:2016-10-31 22:19:45

标签: amazon-redshift aws-lambda amazon-vpc

我们的Redshift群集位于A区。

当我们的Lambda函数使用Zone A子网时,它可以连接到Redshift。

当我们的Lambda函数使用区域A以外的子网时,它会超时。

我们不允许在0.043.0之间允许在端口5439上连接Redshift的连接。

  • 我们将Lambda函数和Redshift集群放在同一个VPC中。
  • Lambda函数有4个专用子网(每个区域一个)
  • Redshift每个区域还有4个专用子网
  • Lambda函数有自己的安全组(SG)
  • Redshift群集也拥有自己的SG。
  • Redshift SG允许来自Lambda SG和Admin SG的端口5439
  • Enhanced VPC Routing已启用
  • Cluster Subnet Groups包括所有4个Redshift子网(每个区域一个)
  • 在Redshift SG上从0.0.0.0/0允许端口5439时没有问题
  • 当我们禁用0.0.0.0/0规则时,REJECT的流日志从A区正常工作到A区,但不能从其他区域到A区。
  • 所有Lambda子网都使用区域A中存在的NAT
  • 所有Redshift子网都使用
  • 中存在的IGW
  • 所有网络ACL目前都允许所有(默认)

1 个答案:

答案 0 :(得分:1)

我陷入了类似的境地。将NAT网关的弹性IP添加到Redshift的端口5439的安全组的入站规则中为我修复了它。

步骤:

  • 使用NAT网关(subnet-abc)检查lambda的私有子网
  • 转到VPC控制台>子网> subnet-abc>路由表
  • 在路由表路由中,您可以找到使用的NAT网关(nat-abcdefg)
  • 转到VPC控制台> NAT网关> NAT-ABCDEFG。获取此NAT网关使用的elastic-ip。 (xx.yy.zz.pqr)
  • 在redshift的安全组中添加此弹性IP的入站规则(port = 5439 CIDR xx.yy.zz.pqr / 32)

Volla! Lambda连接到redshift。

尽管如此,在执行此操作之前,应将lambda配置为与红移相同的VPC,并使用适当的私有子网(配置为使用NAT网关)作为OP建议。