【问题标题】:AWS VPC Lambda Function keeps losing internet accessAWS VPC Lambda 函数不断失去互联网访问
【发布时间】:2016-08-03 12:44:18
【问题描述】:

希望有人能帮助我解决这个问题。我目前正在开发一个 lambda 函数,该函数利用云监视调度程序来检查各种设备,并且它正在使用 elasticache 来维护一个简单的读数数据库。

我的问题是在我晚上关闭测试后。我早上启动了 lambda 函数,但该函数无法访问互联网。这由函数超时表示。经常在搞乱我的路线和我的 vpc 设置几个小时后,它会再次开始工作。只是为了第二天休息。有时它与 nat 网关一起工作,有时它只与一个 nat 实例一起工作。我通常对 vpc 设置所做的更改很小。我使用的设置模式是一个公共、一个私有和一个 natgateway。

更新:昨天一整天都无法从我的 VPC 访问互联网后,今天运行正常。我做了什么不同的,没有。当它再次停止运行时,可能是今天晚些时候,我会打电话给 AWS,看看我们是否能彻底解决这个问题。

【问题讨论】:

  • 我遇到了完全相同的问题。你能解决它吗?
  • 你查到真相了吗???
  • 这也发生在我身上,我阅读了几篇关于使用 nat 网关等的文章......然后我对其进行了配置、测试并随机它失去了互联网访问权限,有时它工作得很好D:
  • 我也遇到过同样的问题(私有子网中的 Lambda 函数,公有子网中的 NAT 网关,来自私有子网的出站流量通过 NAT 路由)。还没有解决它,但我发现不知何故,该函数仅在它第一次在特定子网中触发时才起作用。之后,它无法连接到互联网。
  • 查看this question。如果您只允许一组临时端口,那么“互联网”(即您正在查询的某些特定服务器)可能会在您阻止的某些端口上回复。

标签: node.js amazon-web-services aws-lambda amazon-elasticache vpc


【解决方案1】:

我刚刚用我的 lambda 解决了同样的问题 - 问题是我已将 lambda 设置为在我的所有子网中运行(我有 2 个私有子网和 1 个公共子网)。这篇知识库文章指定您应该只在私有子网中运行它们,这是有道理的:

https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

在 AWS 控制台上转到您的 lambda 页面,取消选择公共子网并保存,问题应该会解决。

【讨论】:

  • 这拯救了我的一天!只有一个问题 - 这应该是所有 lambdas(有和没有互联网访问)的策略吗?
  • 我建议您将它用于所有 Lambda 是一种很好的做法 - 您可以使用可能只能从您的私有子网访问的其他 AWS 服务。
【解决方案2】:

这听起来像是由于 AWS Lambda 使用的临时端口范围。我建议您检查所有网络 ACLS (NACLS) 以确保它们允许在 ephemeral port range used by Lambda 上进行通信:

AWS Lambda 函数使用端口 1024-65535

所以这意味着当你的 lambda 运行时,它可以使用这个范围内的任何端口来发送到互联网的通信。即使目标是端口 80 或 443,发送端口也将在此临时范围内,因此当 Internet 服务器响应时,它会将响应发送回原始临时端口。确保您的 NACLS 允许此临时范围的通信(入站或出站或两者都取决于您的用例),否则您可能会被阻止,具体取决于使用的临时端口。这篇文章有一个有用的解释:https://www.whizlabs.com/blog/ephemeral-ports/

【讨论】:

    【解决方案3】:

    具有 VPC 访问权限的 Lambda 函数需要 NAT 网关才能访问互联网。您声明它有时仅适用于 Internet 网关,但根据 AWS 文档,这是不可能的。如果您要删除 NAT 网关或 VPC 到 NAT 网关的路由,那么这将删除任何启用了 VPC 访问的 Lambda 函数的互联网访问。

    【讨论】:

    • K,也许它只适用于 nat 网关。但是,这并不能忽视这样一个事实,即第二天 nat 网关已停止连接到 Internet,而没有对配置进行任何更改。
    • 这听起来像是您的 NAT 网关而不是 Lambda 函数的问题。您是使用托管 NAT 网关服务还是创建自己的 NAT 网关?
    • 猜猜,我应该在我的描述中让他更清楚。 Lambda 函数很好。问题在于 Nat 网关。通常我选择创建新的 nat 网关,启动一个弹性 ip,然后将它与我在 0.0.0.0/0 的路由关联。
    • 我遇到了同样的问题,即 VPC 下的 lambda 函数在所有正确配置以访问互联网时,有时无法与外部互联网连接。
    • @Liam 否,VPC 中运行的 Lambda 函数无法仅通过 Internet 网关访问 Internet。它需要一个 NAT 网关。您的回答指定您将 Lambda 从公有子网(仅具有 Internet 网关的子网)中取出并仅在私有子网(具有到 NAT 网关的路由的子网)中运行它们。所以你的答案其实和我的一样。
    猜你喜欢
    • 2019-12-06
    • 1970-01-01
    • 2020-05-04
    • 2020-01-04
    • 2017-07-20
    • 2019-01-07
    • 2021-01-09
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多