不在 VPC 中运行 AWS Lambda 函数有什么缺点?

问题描述 投票:0回答:4

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

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

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

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

最终 AWS 让我疲惫不堪,我决定放弃在 VPC 中运行我的 AWS Lambda 函数 - 没有互联网代理端点和各种 AWS 服务,这太难了。

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

amazon-web-services aws-lambda amazon-vpc
4个回答
15
投票

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

如果您在连接到 VPC 时需要访问互联网,那么您应该将 Lambda 函数连接到私有子网并使用 NAT 网关,这是一个完全托管的 NAT,以便您可以保持无服务器状态。它将解决您列出的问题。


5
投票

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

Decision tree for deploying a Lambda function in a VPC

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


1
投票

在 VPC 中创建 Lambda 的一个原因是您拥有特定的 IP 或 IP 范围。如果系统只接受来自特定 IP 的呼叫,而该 IP 需要加入白名单,则可能会出现这种情况。

此处讨论了 Lambda 函数的固定 IP:有没有办法在没有 VPC 的情况下将静态 IP 分配给 AWS Lambda?

VPC 中没有 Lambda 的缺点:您的 Lambda 函数没有特定的 IP/IP 范围。


-2
投票

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

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

boto3 获取环境变量并将所有请求发送到代理。这似乎工作得很好,没有 NAT 网关的复杂性。

© www.soinside.com 2019 - 2024. All rights reserved.