在VPC中运行AWS Lambda函数的缺点是什么?

时间:2017-08-09 02:10:51

标签: aws-lambda

我在VPC中运行AWS Lambda函数。

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

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

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

所以最终AWS让我疲惫不堪,我决定放弃在VPC中运行我的AWS Lambda功能 - 没有用于Internet代理的端点和各种AWS服务太难了。

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

3 个答案:

答案 0 :(得分:5)

如果您需要访问VPC中的资源,请在VPC中运行AWS Lambda函数。如果您不需要此访问权限,则在VPC中运行它。

如果您需要访问Internet,则应将Lambda函数连接到专用子网并使用NAT Gateway,这是一个完全托管的NAT,因此您可以保持无服务器。它将解决您列出的问题。

答案 1 :(得分:3)

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

Decision tree for deploying a Lambda function in a VPC

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

答案 2 :(得分:0)

最后我留在了VPC,但我在VPC中添加了一个EC2实例并在其上运行了TinyProxy。然后,我使用环境变量配置了我的AWS Lambda函数:

HTTPS_PROXY https://ip-10-0-1-53.eu-west-1.compute.internal:8888

boto3选择环境变量并将所有请求发送到代理。如果没有NAT网关的复杂性,这似乎工作正常。