ApiGateway 通过运行 FastAPI 的负载均衡器控制 EC2 实例

0

【以下的问题经过翻译处理】 我有一个运行 fastapi (python) 的 EC2。这个 EC2 有一个公共 ip,它链接到我网站的一个子域。我可以通过此 http 链接使用 APIGateway 访问 api。但是,我想私下制作它,并有一个负载平衡器。我可以遵循的最佳方法和步骤是什么?在创建所有安全私有/公共事物时,我有疑问。

这个想法对吗?

1.在私有子网中创建一个EC2(是否也必须有一个私有VPC?)。在这个 EC2 中运行 Fastapi。 (疑惑:如果它是私有的,我如何连接到 EC2 来安装 fastapi?)这个 EC2 必须能够访问 RDS 实例。 2. 创建负载平衡器。我打算选择网络负载均衡器。我必须选择什么类型?面向互联网还是内部? 3. 创建 REST api 网关并连接到 AWS 服务。什么是“AWS 子域”?动作类型有什么区别?我应该扮演什么角色?我如何连接到特定的 EC2? FastApi 将所有内容发送到端口 80。 4.为了避免ddos攻击,使用EC2限制调用是否足够?

1 Antwort
0

【以下的回答经过翻译处理】 你好,

将 Amazon API Gateway 放置在您的负载均衡器前面,作为在 EC2 实例上运行的后端的入口门,这确实遵循了最佳实践。我了解到您想通过 API 网关安全私密地访问在 EC2 实例中运行的自定义 API 服务器。另一种理解是您想通过 API 网关调用 EC2 服务 API 操作(例如“AcceptReservedInstancesExchangeQuote”),但您需要一个复杂的实现来使用“AWS 服务”集成类型来支持它们,我认为这不是这里的要求。

**解决方案:**使用来自 API 网关的公共 REST API,通过 VPC 链接进行私有集成,来自 Elastic Load Balancing (ELB) 服务的私有网络负载均衡器 (NLB),VPC 至少有 2 个子网(1 个公共带有 NAT 网关和 1 个私有),以及一个运行您的自定义 API 服务器的 EC2 实例放置在私有子网内,路由通过放置在公共子网中的 NAT 网关指向 Internet。将 RDS 实例放在私有子网中。

参考:

  • 设置 API 网关私有集成:API 网关私有集成使得在 Amazon VPC 中公开您的 HTTP/HTTPS 资源以供 VPC 外部的客户端访问变得简单 -- <https://docs.aws.amazon.com/ apigateway/latest/developerguide/set-up-private-integration.html>
  • NAT 网关:您可以使用 NAT 网关,以便私有子网中的实例可以连接到 VPC 外部的服务,但外部服务无法启动与这些实例的连接 -- <https://docs.aws.amazon.com/vpc /latest/userguide/vpc-nat-gateway.html>

现在,来到你的最终问题清单:

  1. 将您的 EC2 实例放置在私有子网中,并带有通往 NAT 网关的路由,放置在具有 Internet 网关的公共子网中以访问 Internet。将 RDS 实例放在私有子网中。
  2. 内部国家图书馆。按照 https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-nlb-for-vpclink-using-console.html 中的说明进行操作
  3. 在 API 网关的 REST API 配置中,私有集成的集成请求部分,如果您使用集成类型“VPC 链接”,则配置选项是“VPC 链接”作为您需要创建的资源,以使 API 网关成为-NLB 连接,以及“端点 URL”,它是来自内部 NLB 的 DNS 名称(A 记录)或在您的 EC2 实例中运行的服务器的 DNS 名称。不要使用集成类型“AWS 服务”(因此,没有 AWS 子域)。
  4. 不要使用 EC2 实例来抵御 DDoS 攻击。改用 API 网关 -- https://docs.aws.amazon.com/whitepapers/latest/aws-best-practices-ddos-resiliency/protecting-api-endpoints-bp4.html 并通过 WebACL 利用 AWS WAF 来保护您的 REST API 端点——https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html

亲切的问候,

路易斯

profile picture
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen