AWS API 网关访问私有子网

Sam*_*m-T 5 amazon-web-services aws-vpc api-gateway

我的 VPC 中有公共和 Pvt 子网。我有一些服务在 Pvt 子网中的 EC2 上运行,需要通过外部/移动资源访问。我该怎么做 - VPCLink 和 NLB 是这样做的方式,还是其他方式,在公共子网 (??) 中创建一些访问点。Lambda 似乎是答案(现在几乎适用于 AWS 中的所有内容)——甚至不确定该访问如何对 Pvt 子网中的资源起作用。

同样的 Pvt 子网也可以访问外部资源(AWS 之外) - 如何使用 API 网关执行此操作?

不太了解 API 网关(和 Lambda)是如何相对于 VPC 和子网定位的,以及网络访问控制功能如何——它们是否可以直接访问 Pvt 子网。文档对此有些沉默,只谈论 IAM -如果有人可以解释这一点。在 Lambda 上找到了这个:AWS Lambda:如何为具有 VPC 访问权限的 lambda 函数设置 NAT 网关

文档说“API 网关允许您安全地连接……托管在 AWS 内部或外部的可公开寻址的Web 服务”。我在 Pvt 子网中的资源不可公开寻址 - 我想。

谢谢

Ben*_*ley 7

您在 EC2 上运行的服务是否提供 API?API Gateway 用于代理 API 请求。它通常与 Lambda 结合使用,以允许 Lambda 函数处理 HTTP 请求。您的服务不需要 API 网关。您可以简单地使用应用程序负载均衡器 (ALB) 或弹性负载均衡器 (ELB)。它们可以驻留在公共子网中,而您的服务保留在私有子网中。您可以使用安全组和 VPC 路由表来允许从公共 ALB/ELB 到私有 EC2 服务的通信。

  • Ben - 是的,我可以将服务公开为“API”或 REST API。我更喜欢使用 API 网关进行访问控制等。所以你是说公开这些“私有”服务的唯一方法是通过公共 ALB,否则 API 网关无法访问它们。所以在外面,除非我使用 NAT 或其他什么,否则我的 Pvt EC2 无法直接访问 API 网关?我完全不清楚 VPC 链接是如何工作的 - 或者它是否至少在入站端适用于这种情况(?)。 (2认同)
  • 当您在 API Gateway 中创建 API 时,它将可公开访问。您可以将 API 网关中的端点设置为私有子网中的 EC2。除非您想要冗余或需要多个实例,否则不需要 ELB。 (2认同)
  • ALB 可以是私有的,API 网关将能够接收入站流量并将其路由到您的 ALB。如果您的 API 服务需要出站访问(您确定需要吗?),请将 NAT 网关附加到您的私有子网并设置路由,以便您的 EC2 实例可以访问 Internet。如果您的服务只需要回复请求并且不需要出于任何其他原因访问 Internet,则您可能不需要这样做。另外,您可能会发现这篇博客文章很有帮助:https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/ (2认同)