具有 VPC 配置并使用 aws-sdk 的 AWS Lambda 函数给出超时异常

AWS Lambda function that has VPC configuration and uses aws-sdk gives timeout exception

我有一个使用 VPC 配置(具有 public 个子网)连接到数据库的 AWS Lambda 函数,该函数还需要使用 AWS SDK 访问 QuickSight。与数据库的连接有效,但是当使用 aws sdk 访问 quicksight 时,它会出现超时异常。据我了解,aws sdk 需要互联网连接(因为它是 API)。 public 子网不应该允许访问互联网并解决问题还是我遗漏了什么?

QuickSight 也有一个 VPC 配置,我在其中设置了一个带有入站规则的安全组,以允许从 lambda 函数使用的安全组进行访问(不确定这是否 helps/is 相关)。

由于 VPC 内的 AWS Lambda 函数 运行 永远不会分配 public IP 地址,无论您的 VPC 的设置如何,将它们放置在 public 子网中实际上会阻止 Lambda 函数访问 VPC 之外的任何内容。让 Lambda 函数同时访问 VPC 和 Internet 的唯一方法是 run it in a private subnet with a route to a NAT Gateway.

对于某些 AWS 服务,您可以改用 AWS PrivateLink,但 QuickSight the list of PrivateLink services(目前)还未启用,因此此处不提供该选项。

此外,关于您的 QuickSight VPC 设置,据我了解,这仅用于允许出站 QuickSight 连接到您的 VPC 中的资源。当某些东西与 QuickSight 交互时,它实际上是在与 AWS API 交互,而不是 VPC 中的东西,因此 QuickSight 安全组中的入站规则毫无意义。