在VPC中不运行AWS Lambda函数的不利之处是什么?

Duk*_*gal 3 aws-lambda

我正在VPC中运行AWS Lambda函数。

在项目过程中,我遇到了一些问题,因为:

  • 无法访问我的数据库-必须以某种方式解决此问题
  • 无法访问AWS SES-必须找到解决方法
  • 无法访问AWS SQS-从Lambda函数中删除了所有排队功能
  • 无法访问外部Internet-仍然不知道如何在没有Internet访问的情况下实施ReCapthca
  • 无法访问AWS Cognito-无法获取有关已登录用户的信息

我可以在VPC中实现NAT网关,但是如果必须运行NAT服务器实例,无服务器的意义是什么?那不是没有服务器的。

因此,最终,AWS让我失望了,我决定放弃在VPC中运行我的AWS Lambda函数-没有用于Internet代理的端点和各种AWS服务太难了。

所以我的问题是-在没有VPC的情况下运行AWS Lambda函数的缺点/缺点是什么?

Ram*_*gil 8

AWS 提供了 Lambda 部署的参考文档:Serverless Application Lens、AWS Well-Architected Framework。他们在其中提供了以下决策树:

在 VPC 中部署 Lambda 函数的决策树

唯一注意到的主要缺点是 VPC 外部的 Lambda 无法直接访问 VPC 内的私有资源。


Joh*_*ein 5

如果您需要访问VPC中的资源,请在VPC中运行AWS Lambda函数。如果您不需要此访问,那么就不是一个VPC内运行。

如果需要Internet访问,则应将Lambda功能连接到专用子网并使用NAT网关,后者是完全托管的NAT,因此您可以保持无服务器状态。它将解决您列出的问题。

  • 正如John所说,在VPC中运行它比在VPC之外运行还有更多弊端。在VPC外部,它将自动访问Internet。VPC外部的冷启动会更快,因为不需要创建ENI即可访问您的VPC。除非您的函数需要访问VPC内部存在的资源,否则请不要在VPC内部运行Lambda函数。 (2认同)
  • @MarkB“在VPC外部,它将自动访问Internet。” 以前不知道 谢谢! (2认同)