amazon-web-services - 带有 Internet 网关的 VPC 中的 AWS Lambda 函数仍然无法访问 Internet

标签 amazon-web-services aws-lambda amazon-vpc

我有一个简单地执行 http.get 的 lambda 函数至http://www.google.com .如果我没有 VPC 背后的功能,它可以正常工作。当我把它放在我的 VPC 中时,问题就发生了。

我知道您需要设置一个 Internet 网关。我这样做了。我的两个子网附加到路由 0.0.0.0/0 的路由表到这个 Internet 网关。这不应该是我所需要的吗?

无论 Internet 网关的关联如何,该功能仍然挂起。子网的安全组允许来自 0.0.0.0/0" 的所有流量.

根据Grant Internet Access to a VPC Lambda Function这就是我应该做的一切。

编辑:

添加要清楚的 VPC 组件的完整列表。

  • 创建了一个新的 VPC (vpc-09*)
  • 创建了一个新子网 (subnet-05*) 指向我的新子网:
  • 路由表,(rtb-0b)。我在子网关联下看到了子网 05*。在 Routes 下,我看到 Destination 0.0.0.0/0 链接到
  • 的目标。
  • 一个新的 NAT 网关 (nat-08*)。此 NAT 网关具有弹性 IP 地址和私有(private) IP 地址。它位于正确的子网中。状态为可用。
  • 此外,我为 Lambda 函数创建了一个新的安全组。这包含一个“所有流量”的出站规则,目标为 0.0.0.0/0

  • 据我所知,我已经完成了 AWS 文档链接中的所有工作,为我的 Lambda 提供互联网访问。然而,当试图向外部互联网发出请求时,它仍然永远挂起。

    最佳答案

    您快到了。您提供的链接直接解决了您的问题:

    If your function also requires internet access (for example, to reach a public AWS service endpoint), your function must use a NAT gateway or instance



    你错过了这个:

    Your VPC should contain a NAT gateway or instance in a public subnet.



    这意味着如果没有 NAT,您的 Lambda 将无法访问互联网——即使“它们”在公共(public)子网中。这就是 lambda 在 VPC 中的基本工作方式。

    完全相同link您提供的指导您如何与您的 VPC 和 Lambda 一起创建此 NAT 网关。

    补充答案 - 在 为什么需要 NAT 网关 在这种情况下 - 是由于:

    ... you can use a network address translation (NAT) gateway to enable instances in a private subnet to connect to the internet or other AWS services, but prevent the internet from initiating a connection with those instances...

    Extracted from aws docs



    请记住:如果你需要你的 lambda 来访问 只有互联网 - 而不是同一 VPC 中的任何其他资源 - 我建议将它们设为非 VPC,然后他们将可以开箱即用地访问互联网 - 您无需支付 NAT 的成本。

    关于amazon-web-services - 带有 Internet 网关的 VPC 中的 AWS Lambda 函数仍然无法访问 Internet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56589269/

    相关文章:

    javascript - DynamoDB 节流

    node.js - 从 Lambda 创建 Elasticsearch 映射时为 "Authorization Exception"

    node.js - 使用aws lambda node js获取存储在s3存储桶中的视频的视频元数据

    amazon-web-services - 每个私有(private)子网是否需要单独的 NAT 网关?

    amazon-web-services - 如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

    amazon-web-services - 为什么 AWS Cloudformation 中的自定义资源未能在预期时间内稳定下来?

    amazon-web-services - 如何为 kubernetes 入口定义外部 ip

    node.js - 如何使用 API 网关集成访问 Node js AWS Lambda 中的 POST 参数?

    amazon-web-services - 如何使用 AWS VPN 从 EC2 实例 ping 到本地 Windows Server?

    amazon-web-services - 如何通过本地/VPN 访问私有(private) API 网关?