简要介绍我的情况:我有一个VPC,其中包含一个API网关,它将其调用重定向到我的Lambda函数,然后它们访问RDS实例和外部API调用(互联网访问)。
它的结构
由于函数需要访问RDS,因此我将RDS和Lambda放在同一个VPC中,正确保护RDS而不公开。现在,由于Lambda位于VPC中,它们需要NAT网关才能访问互联网(几乎所有这些函数都需要调用第三方API),这就是我面临的巨大问题。
问题
我有一个小项目为几个用户提供服务(从10到200个用户),并且使用我创建的无服务器设置,我预计每个月的成本为从3.00美元到10.00美元,这是没有单个NAT网关的成本。现在,如果我们增加一个价格为$0.045每小时的网关的价格 - 我甚至没有考虑每传输1GB数据的$0.045 - 就是>每月30美元。对我来说,不创建另一个进行多AZ和减轻可能的可用区故障是愚蠢的 - 因此需要>两个NAT网关每月60.00美元。
这不仅对我来说不切实际,而且也会使整个无服务器结构的重点失效,因为通常会遵循按需方法。
如何解决这个问题?
我的其中一个选择是将Lambda移出VPC(即没有VPC),并通过某种机制访问RDS,而无需使其公开可访问-在这里我也失败了,如何在Lambda函数在RDS VPC之外的情况下安全地访问RDS?
在最坏的情况下 - 我知道公开我的RDS是不好的 - 但是公开它会有多大的漏洞风险?
请注意,我不是责怪AWS的价格,这完全集中在寻找替代NAT网关的方法上 - 我欢迎解决此问题的建议。另外,如果我做了完全错误的假设,我很抱歉,我是AWS生态系统的新手。