我的MongoDB生活在AWS EC2上,而我的Lambda函数(python代码)正试图通过IP地址23.23.23.23:27017访问它。在我们公司,我们通过在EC2实例上设置AWS安全组来将我们的EC2实例限制为我们公司的IP地址。 问题是没有打开端口27017对我的EC2实例安全组的所有流量的访问权限,我的lambda无法访问它,因为我们不知道执行Lambda的IP地址。 / p>
有没有更好的方法从AWS服务(如Lambda)访问EC2实例上的端口而不违反安全策略?
答案 0 :(得分:4)
不确定为什么每个人都说VPC端点会解决这个问题。 VPC端点允许源自VPC的通信访问VPC外部的AWS服务。提出的问题是关于存在于VPC之外的Lambda函数,访问VPC中存在的EC2实例。
根据this announcement,即将支持在VPC内运行Lambda函数。这将解决这个问题所解决的问题。
答案 1 :(得分:3)
今天在AWS上,当您需要限制从另一个AWS服务到您自己的实例的入站IP访问时,您的选项有限。 AWS网络架构的本质是该服务可能来自AWS IP Address Range
中的任何IP地址除了向所有流量开放实例外,您还可以考虑以下三个选项:
将实例打开到所有流量,但在实例上使用iptables或Windows防火墙,并限制对AWS IP地址范围中任何IP的访问。这仍然允许数百万个IP访问该实例,但它稍微更安全。至少可以说是不理想的。
使用简单排队服务构建内部API,以与服务进行交互。
让Lambda作业确定其IP,并动态更新目标实例的安全组,然后在完成后重置安全组。不漂亮,但它会工作。根据您的公司安全政策,这可能是最可行的选择。
答案 2 :(得分:0)
如果将lambda函数配置为在与运行Mongo DB的EC2实例相同的VPC和子网上运行,则可以从lambda函数访问MongoDB。
另一个配置是lambda函数中的安全组具有针对EC2实例所在的CIDR块的正确入站和出站设置。
您不需要特定的IP地址,只需要CIDR范围即可打开连接。