Amazon redshift 将Lambda连接到不同可用性区域中的红移

Amazon redshift 将Lambda连接到不同可用性区域中的红移,amazon-redshift,aws-lambda,amazon-vpc,Amazon Redshift,Aws Lambda,Amazon Vpc,我们的红移集群位于A区 当我们的Lambda函数使用区域a子网时,它可以连接到Redshift 当Lambda函数使用区域a以外的子网时,它会超时 不需要解决此问题,即我们允许在端口5439上从0.0.0.0/0进行红移连接 我们的Lambda函数和红移集群位于同一VPC中 Lambda功能有4个专用子网(每个区域一个) Redshift每个区域也有4个专用子网 Lambda函数有自己的安全组(SG) 红移星团也有自己的SG 红移SG允许来自Lambda SG和Admin SG的端口5439

我们的红移集群位于A区

当我们的Lambda函数使用区域a子网时,它可以连接到Redshift

当Lambda函数使用区域a以外的子网时,它会超时

不需要解决此问题,即我们允许在端口5439上从0.0.0.0/0进行红移连接

  • 我们的Lambda函数和红移集群位于同一VPC中
  • Lambda功能有4个专用子网(每个区域一个)
  • Redshift每个区域也有4个专用子网
  • Lambda函数有自己的安全组(SG)
  • 红移星团也有自己的SG
  • 红移SG允许来自Lambda SG和Admin SG的端口5439
  • 已启用增强的VPC路由
  • 群集子网组
    包括所有4个红移子网(每个区域一个)
  • 在红移SG上从0.0.0.0/0允许端口5439时没有问题
  • 当我们禁用0.0.0.0/0规则时,拒绝的流量日志从区域A到区域A可以正常工作,但不能从其他区域到区域A
  • 所有Lambda子网都使用区域a中存在的NAT
  • 所有红移子网都使用中存在的IGW
  • 所有网络ACL当前允许所有(默认)

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

      步骤:

      • 使用NAT网关检查lambda的专用子网(子网abc)
      • 转到VPC控制台>子网>子网abc>路由表
      • 在路由表routes中,您可以找到使用的NAT网关(NAT abcdefg)
      • 转到VPC控制台>NAT网关>NAT abcdefg。获取此NAT网关使用的弹性ip。(xx.yy.zz.pqr)
      • 在redshift的安全组中为此弹性ip添加入站规则(端口=5439 CIDR xx.yy.zz.pqr/32)
      沃拉!Lambda连接到redshift


      不过,在执行此操作之前,应在与redshift相同的VPC中配置lambda,并按照OP的建议使用适当的专用子网(配置为使用NAT网关)

      能否请你澄清一下目前的情况,哪些是预期的效果,哪些不是预期的效果?例如,当Lambda和Redshift都在同一个AZ中时,它是否有效?你能澄清你所说的“但当我们禁用…时不能从其他区域”是什么意思吗?您说“从0.0.0.0/0允许端口5439时没有问题”——这是否意味着在这种情况下一切都很好,但您不希望如此广泛地开放红移?此外,您是否有阻止任何子网上流量的网络ACL?更新了帖子。网络ACL是默认的(全部允许)。红移开放到0.0.0.0/0是一种我们无法使用的变通方法。Lambda A区至红移A区有效。问题是除区域A之外的区域中的函数无法连接到红移区域A。Lambda函数是如何引用Amazon红移的?大概是通过一个DNS名称——但该DNS名称是解析为内部IP地址还是公共IP地址?您可以通过从VPC内的EC2实例执行
      nslookup
      来测试这一点,以查看返回的IP地址。另外,您是否尝试激活VPC流量日志来分析Lambda和Redshift之间的流量?您是否能够解决此问题?我被完全相同的问题困住了。谢谢你的建议。谢谢