【问题标题】:Connecting Lambda with resources within a VPC将 Lambda 与 VPC 中的资源连接起来
【发布时间】:2020-12-23 14:21:02
【问题描述】:

Redshift 集群位于 VPC 中,不直接暴露于互联网,但可以通过 ssh 隧道访问。

我有一个 lambda 函数,它需要同时连接到互联网和这个 Redshift 集群。

更自然的方法是什么?

我是否应该尝试从我的 lambda 中通过 ssh 隧道连接 Redshift 公共 IP?我将如何实现这一目标?

我是否应该将我的 lambda 放入另一个“互联网开放”VPC 并允许 VPC 对等互连?这是否意味着安全问题?

非常感谢。

【问题讨论】:

  • 您打算将什么用作 Lambda 函数触发器?
  • 在 Step Functions 状态机中调用。
  • 你的 VPC 是什么,有 NAT 网关、私有子网吗?
  • 它没有 NAT 网关,有公共子网和私有子网。
  • 我认为它可能就像创建一个新的公共子网并将其与 Lambda 函数关联一样简单。然后应该可以通过网关访问私有子网和互联网。很抱歉,如果很明显。

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


【解决方案1】:

你基本上有两种选择:

  • 将 Lambda 函数放在与 Amazon Redshift 集群相同的 VPC 中,
  • 将 Lambda 函数放在 VPC 之外

如果 Lambda 函数在同一个 VPC 中以便它可以与 Redshift 集群通信,并且它还需要 Internet 访问,那么配置将是:

  • 将 Lambda 函数附加到私有子网
  • 在公共子网中创建 NAT 网关NAT 实例 并更新
  • 更新私有子网的路由表以将 Internet 绑定流量发送到 NAT 网关/NAT 实例

如果 Lambda 函数在 VPC 之外,则它需要一些访问 Redshift 集群的方法。这会相当混乱,并且可能对安全性不利(例如,将端口暴露给 Internet)。我建议不要这样做。

我通常不会建议第三种方法,但可能适合你。它涉及:

  • 将 Lambda 函数与公有子网关联
  • 将弹性 IP 地址附加到由 Lambda 函数创建的弹性网络 Internet (ENI)

当 Lambda 函数附加到子网时,它会创建一个 ENI。这是 Lambda 函数和 VPC 之间的连接。 (实际上,它是运行 Lambda 函数的 容器 和 VPC 之间的连接。)

我注意到我可以将弹性 IP 地址附加到 ENI,从而授予对 Lambda 函数的 Internet 访问权限。但是,ENI 可能会由 Lambda 服务创建/销毁,因此这不一定会继续工作。也就是说,ENI 可能不会持续存在,因此弹性 IP 地址可能不会始终附加。因此,我建议谨慎使用此方法。

“正确”的方法是使用 NAT 网关或 NAT 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2018-08-08
    相关资源
    最近更新 更多