【问题标题】:What is the downside of NOT running AWS Lambda functions in a VPC?不在 VPC 中运行 AWS Lambda 函数的缺点是什么?
【发布时间】:2017-08-09 02:10:51
【问题描述】:

我在 VPC 中运行 AWS Lambda 函数。

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

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

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

最后,AWS 让我筋疲力尽,我决定放弃在 VPC 中运行我的 AWS Lambda 函数 - 没有用于 Internet 代理的端点,而且各种 AWS 服务太难了。

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

【问题讨论】:

    标签: aws-lambda amazon-vpc


    【解决方案1】:

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

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

    【讨论】:

    • 正如 John 所说,在 VPC 中运行它比在 VPC 之外运行它有更多的缺点。在 VPC 之外,它将自动访问 Internet。 VPC 外部的冷启动会更快,因为它不需要创建 ENI 来访问您的 VPC。不要在 VPC 中运行 Lambda 函数,除非您的函数需要访问 VPC 中存在的资源。
    • 我应该在 VPC 中运行 lambda 函数吗:docs.aws.amazon.com/lambda/latest/dg/…
    • @MarkB “在 VPC 之外,它会自动访问 Internet。”以前不知道这个。谢谢!
    • @MarkB 如果 Lambda 函数在 Default VPC(默认情况下可以访问 Internet)内运行,它是否能够访问 SQS?
    • @Alisson 默认 VPC 在这方面与其他 VPC 没有什么不同。您所说的“默认互联网访问”只是一个带有互联网网关的公共子网。您必须将 NAT 网关添加到 VPC,以及带有到 NAT 的路由的私有子网,然后将 Lambda 函数放置在私有子网中以便为其提供 Internet 访问权限。或者将 SQS VPC 终端节点添加到 VPC。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      这里讨论了 Lambda 函数的修复 IP:Is there a way to assign a Static IP to a AWS Lambda without VPC?

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 您明白 AWS 意义上的“NAT 网关”不是服务器……对吧? NAT 网关服务是网络基础设施的一项功能,一旦提供,“就可以正常工作”。它不在虚拟机上运行,​​也不需要维护或监控。
        • @michael-sqlbot - 是的,但您需要按小时支付 NAT 网关的费用,所以对我来说也是一样的。
        • @DukeDougal 我相信他是在专门评论您的陈述“没有 NAT 网关的复杂性”。您的解决方案比使用 NAT 网关更复杂,现在是单点故障。
        • 运行一个小型 ec2 实例每小时 0.02 美元或更少。对于我们许多人来说,使用 lambda 是免费的。以每小时 0.045 美元的价格设置带有 NAT 的 lambda 几乎完全没有使用它的任何理由(如果它需要在 vpc 中,显然在 vpc 之外,一切都很好)。代理是个好主意,但除非您真的需要 lambda 的免费计算,否则我认为您不妨将 lambda 函数作为 ec2 实例中的普通程序运行
        猜你喜欢
        • 1970-01-01
        • 2017-05-24
        • 2020-02-17
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        • 1970-01-01
        相关资源
        最近更新 更多