【问题标题】:Why is my Lambda unable to access the internet?为什么我的 Lambda 无法访问互联网?
【发布时间】:2019-08-22 22:21:17
【问题描述】:

我有一个可以从 API 网关或 ALB 请求触发的 Lambda 函数。我还有一个 RDS Aurora PostgreSQL 实例,它们都在 VPC 中运行。

我可以从 Lambda 连接到 RDS 实例,但是我无法访问互联网,例如尝试向https://jsonplaceholder.typicode.com/todos/1 发起请求将导致超时。

我也无法使用 DBeaver 等 SQL 客户端连接到远程数据库。

以下是一些详细信息,但如果您需要其他信息,请告诉我。我被难住了。

Lambda 入站规则

Security group ID       Ports   Source
sg-0f2c4426c8fc85235    80      0.0.0.0/0
sg-0f2c4426c8fc85235    5432    0.0.0.0/0
sg-0f2c4426c8fc85235    All     sg-0f2c4426c8fc85235
sg-0f2c4426c8fc85235    22      0.0.0.0/0
sg-0f2c4426c8fc85235    443     0.0.0.0/0

Lambda 出站规则

Security group ID       Ports   Destination
sg-0f2c4426c8fc85235    All     0.0.0.0/0

RDS 连接

VPC

公共子网

私有子网

编辑

Nat 网关(与公共子网关联)

路由表

路由表路由

编辑 2

Lambda 子网

【问题讨论】:

  • 可以分享一下路由表吗?
  • 我希望你在这里犯了一个常见的错误,你应该在公共子网中创建 NAT 网关并更新私有子网的路由表。通常人们在私有子网中创建NAT网关,这实际上是一个死锁。 - docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
  • @RafafTahsin - 抱歉,我错了,NAT 在公共子网中。我已经编辑了原始帖子以添加 NAT 和路由表的图像。
  • Lambda 函数附加到哪个子网?
  • @Craig 与私有子网关联的路由表 (rtb-0d15b06e1cff79515) 没有到 NAT 网关的路由。此外,如果您希望 Lamba 函数使用 NAT 网关,则它应该仅位于私有子网中。查看此链接:docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html

标签: amazon-web-services aws-lambda serverless-framework


【解决方案1】:

Lambda 函数应该连接到私有子网。

这使得互联网绑定的流量能够路由到公共子网中的 NAT 网关。

如果 Lambda 函数连接到公有子网,它将无法访问 Internet。

【讨论】:

  • 啊,谢谢约翰。我已经删除了公共子网,如下所示:!lam 不幸的是,我仍然收到超时。传播通常需要一点时间吗?
【解决方案2】:

我认为是两件事的混合。 1,正如所指出的,Lambda 应该只连接到私有子网。

我认为我还混淆了公共子网和私有子网之间的可用区?

无论如何,Lambda 现在已成功连接到 RDS,访问外部 API,我也可以通过 DBeaver 连接。

非常感谢。

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 2020-05-24
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多