将 Lambda 与 VPC 内的资源连接
Connecting Lambda with resources within a VPC
Redshift 集群位于 VPC 内,不直接暴露于 Internet,但可以通过 ssh 隧道访问。
我有一个 lambda 函数需要同时连接到互联网和这个 Redshift 集群。
更自然的方法是什么?
我应该尝试从我的 lambda 中通过 ssh 隧道传输 Redshift public IP 吗?我将如何实现这一目标?
我应该将我的 lambda 放在另一个 'internet open' VPC 中并允许 VPC 对等吗?这是否意味着安全问题?
非常感谢。
你基本上有两个选择:
- 将Lambda函数放在与Amazon Redshift集群相同的VPC中,或
- 将 Lambda 函数放在 VPC 之外
如果 Lambda 函数在同一个 VPC 中,以便它可以与 Redshift 集群通信,并且它还需要访问互联网,那么配置将是:
- 将 Lambda 函数附加到私有子网
- 在 public 子网中创建 NAT 网关 或 NAT 实例 并更新
- 更新私有子网的路由 Table 以将 Internet-bound 流量发送到 NAT Gateway/NAT 实例
如果 Lambda 函数在 VPC 之外,它需要一些访问 Redshift 集群的方法。这会相当混乱并且可能不利于安全(例如将端口暴露到 Internet)。我反对。
还有第三种方法,我通常不会建议,但可能适合你。涉及:
- 将 Lambda 函数与 public 子网相关联
- 将弹性 IP 地址附加到由 Lambda 函数创建的弹性网络互联网 (ENI)
当 Lambda 函数附加到子网时,它会创建一个 ENI。这就是 Lambda 函数和 VPC 之间的连接。 (实际上,它是 容器 之间的连接 运行 Lambda 函数和 VPC。)
我注意到我可以将弹性 IP 地址附加到 ENI,这会授予对 Lambda 函数的 Internet 访问权限。但是,ENI 可能被 Lambda 服务created/destroyed,因此这不一定会继续工作。也就是说,ENI 可能不会持续存在,因此可能不会始终附加弹性 IP 地址。因此,我建议谨慎使用此方法。
“正确”的方法是使用 NAT 网关或 NAT 实例。
Redshift 集群位于 VPC 内,不直接暴露于 Internet,但可以通过 ssh 隧道访问。
我有一个 lambda 函数需要同时连接到互联网和这个 Redshift 集群。
更自然的方法是什么?
我应该尝试从我的 lambda 中通过 ssh 隧道传输 Redshift public IP 吗?我将如何实现这一目标?
我应该将我的 lambda 放在另一个 'internet open' VPC 中并允许 VPC 对等吗?这是否意味着安全问题?
非常感谢。
你基本上有两个选择:
- 将Lambda函数放在与Amazon Redshift集群相同的VPC中,或
- 将 Lambda 函数放在 VPC 之外
如果 Lambda 函数在同一个 VPC 中,以便它可以与 Redshift 集群通信,并且它还需要访问互联网,那么配置将是:
- 将 Lambda 函数附加到私有子网
- 在 public 子网中创建 NAT 网关 或 NAT 实例 并更新
- 更新私有子网的路由 Table 以将 Internet-bound 流量发送到 NAT Gateway/NAT 实例
如果 Lambda 函数在 VPC 之外,它需要一些访问 Redshift 集群的方法。这会相当混乱并且可能不利于安全(例如将端口暴露到 Internet)。我反对。
还有第三种方法,我通常不会建议,但可能适合你。涉及:
- 将 Lambda 函数与 public 子网相关联
- 将弹性 IP 地址附加到由 Lambda 函数创建的弹性网络互联网 (ENI)
当 Lambda 函数附加到子网时,它会创建一个 ENI。这就是 Lambda 函数和 VPC 之间的连接。 (实际上,它是 容器 之间的连接 运行 Lambda 函数和 VPC。)
我注意到我可以将弹性 IP 地址附加到 ENI,这会授予对 Lambda 函数的 Internet 访问权限。但是,ENI 可能被 Lambda 服务created/destroyed,因此这不一定会继续工作。也就是说,ENI 可能不会持续存在,因此可能不会始终附加弹性 IP 地址。因此,我建议谨慎使用此方法。
“正确”的方法是使用 NAT 网关或 NAT 实例。