【发布时间】:2019-10-20 13:13:57
【问题描述】:
快速介绍我的场景:我有一个 VPC,其中包含一个 API 网关,该网关将其调用重定向到我的 Lambda 函数,然后它们访问 RDS 实例和外部 API 调用(互联网访问)。
它的结构
由于函数需要访问 RDS,我将 RDS 和 Lambda 放在同一个 VPC 中,从而在不公开访问的情况下正确保护 RDS。现在,由于 Lambda 在 VPC 中,它们需要一个 NAT 网关来访问互联网(几乎所有这些功能都需要调用第三方 API),这就是我面临的一个巨大问题。
问题
我有一个为少数用户(从 10 到 200 个用户)提供服务的小项目,使用我创建的无服务器设置,我预计成本会每月从 3.00 美元到 10.00 美元强>。这就是没有单个 NAT 网关的成本。现在,如果我们加上网关的价格,即 $0.045 per hour - 我什至没有考虑每 GB 数据传输 0.045 美元 - 那就是 >30 美元/月。如果我不创建另一个多可用区并减轻可能的可用区故障,那就太愚蠢了——所以 >2 个 NAT 网关需要 60.00 美元。
这不仅对我来说是不切实际的,而且它是否也会使通常遵循按需方法的整个无服务器结构的点失效?
如何解决?
我的一个替代方案是将 Lambda 移出 VPC(意味着没有 VPC)并通过某种机制访问 RDS,而不使其公开访问 - 这也是我失败的地方,如何安全地访问Lambdas函数在RDS VPC之外的场景中的RDS?
在最坏的情况下 - 我知道将我的 RDS 暴露给公众是不好的 - 但是暴露它的漏洞有多大?
请记住,我并不是在责怪 AWS 的价格,这只是专注于寻找 NAT 网关的替代品 - 我很欣赏解决这种情况的建议。另外,如果我做了一个完全错误的假设,我很抱歉,我是 AWS 生态系统的新手。
【问题讨论】:
-
目前还不清楚您的系统有多忙,但例如,一个 t3.medium - 4GB,2CPU's - 每月大约 30 美元,无需预订。它可以在没有 NAT 网关的情况下放入 VPC,同样,根据您的负载,应该能够毫无问题地托管 Web 服务器和数据库。当然,还有许多其他尺寸的机器,从 $3.38/月到 $22k/月(见ec2instances.info有很多选择)。
-
我认为 t2.nano 可以满足我的需要。问题是,假设在一个简短的窗口中,5 个 lambdas 同时调用了这个实例。它能够同时处理这么多的多个请求吗? NAT 网关肯定会为我管理这个,但我不知道 ec2 实例是否可以 - 你有什么想法吗?
-
作为 NAT 实例的 t2.nano 处理 5... 可能没有问题,即使有 100 个或更多同时请求通过它。在预算紧张的环境中,我会毫不犹豫地使用它们。您可以随时查看实例指标。
标签: amazon-web-services aws-lambda nat amazon-vpc