首页 文章

AWS将公共可访问的RDS与Lambdas组合访问Internet?

提问于
浏览
0

我有一个带有3个私有和一个公共子网的VPC . 在3个私有子网中,我托管了RDS和Lambda函数 . 在公有子网中,我托管NAT网关 . 3个私有子网通过路由表指向NAT网关 . Within this setup my Lambda functions successfully communicate with my RDS and the Internet ,但我无法从家用计算机访问RDS,因为NAT阻止了对VPC的外部访问 . 我现在的问题是:

How do I let the Lambda functions access the RDS within the VPC and make the RDS public accessible from my computer at the same time?

P.S . :到目前为止,我总是需要手动更改我的3个私有子网到IGW的路由,以使RDS可访问 .

3 回答

  • 2

    首先澄清:NAT不会阻止对VPC的外部访问 . NAT网关只提供对VPC中没有公共IP地址的资源的Internet访问 . NAT与您能够从外部访问VPC无关 . 事实上,你还没有做任何事情来允许外部访问 .

    您可以使用以下选项从外部访问RDS实例:

    • 将VPN服务器添加到公共子网中的VPC,这将允许您在 Build VPN连接后连接到RDS服务器 .

    • 将RDS服务器移动到公有子网并启用"publicly accessible"标志,这将允许您直接连接到RDS服务器 .

    • 在公有子网中创建Linux堡垒主机,允许您通过SSH端口转发连接到RDS服务器 .

    在任何这些场景中,只要Lambda函数和RDS实例在同一个VPC中,Lambda函数就可以访问RDS实例 . 只要Lambda函数保留在具有NAT网关的私有子网中,它就可以访问Internet .

  • 0

    您需要在公有子网中创建 Bastion Host . 堡垒主机提供从公共Internet到您的私有VPC子网的连接 .

    AWS的常见堡垒主机是OpenVPN . 您可以在AWS Marketplace中找到预配置的AMI .

    AWS Security: Bastion Host, NAT instances and VPC Peering

    OpenVPN

  • 1

    用户 reggi 的gist.github上有一个名为 How to setup AWS lambda function to talk to the internet and VPC 的指南 . 该指南将指导您完成设置AWS Lambda以与Internet和VPC通信的步骤 .

    您可以在评论解决方案中找到将lambda连接到RDS和互联网的复杂性,同时在没有VPN的情况下维护可公开访问的RDS,其中一些信息在评论中 . 我已在此处添加此信息,以防信息不可用 .

    为了允许lambdas具有Internet访问权限,RDS访问权限以及允许RDS公开可用(希望在特定的ip范围内 - 即您的静态IP),您的RDS的子网组必须只包含公共子网;这是一个子网,其路由表指向0.0.0.0/0到附加到您的VPC的IGW . 您必须在包含公共子网的Amazon RDS>子网组中创建子网组,然后使用此新子网组启动RDS实例(或将当前系统配置为这些规范) .

    https://gist.github.com/reggi/dc5f2620b7b4f515e68e46255ac042a7

相关问题