65.9K
CodeProject 正在变化。 阅读更多。
Home

如何为 ECS 配置 AWS HTTP API Gateway(带 HTTPS 监听器)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2023 年 9 月 12 日

CPOL

3分钟阅读

viewsIcon

11572

使用 Amazon ECS 和 API Gateway 实现微服务

引言

Amazon Elastic Container Service (Amazon ECS) 是一种全面的容器编排服务,旨在简化容器化应用程序的部署、管理和扩展。 另一方面,Amazon API Gateway 是一种 AWS 服务,专为以任何规模创建、发布、维护、监控和保护 REST、HTTP 和 WebSocket API 而量身定制。 在本文中,我们将探讨使用 Amazon ECS 与 AWS API Gateway 相结合来实现微服务架构的过程。

使用应用程序负载均衡器创建 ECS

默认情况下,当您在 AWS 中创建 VPC(虚拟私有云)时,它会设置四个子网,其中两个是公共的,两个是私有的。 出于安全原因,建议将您的 ECS(弹性容器服务)和负载均衡器部署在私有子网中。

首先,让我们创建一个应用程序负载均衡器 (ALB)。 由于它不需要公开访问,因此在创建过程中选择“内部”类型。 选择您的 VPC 并确保选择私有子网。 配置 HTTPS 监听器,确保选择正确的 SSL 证书。 在 HTTPS 监听器设置中,将其设置为将流量转发到新的目标组。 创建一个新的目标组,选择**IP 地址**作为目标类型并使用 HTTP 协议。 不要忘记指定健康检查路径。 这里的关键是 HTTPS 监听器将流量转发到 HTTP 目标组。

现在,在创建 ECS 集群时,使用先前创建的 ALB 和目标组配置负载均衡。 确保 ECS 网络安全组允许来自与应用程序负载均衡器关联的安全组的所有 TCP 流量。

AWS HTTP 网关

接下来,让我们创建一个 AWS HTTP 网关。 AWS API Gateway 提供 REST 网关和 HTTP 网关选项,其中 HTTP 网关速度更快且成本效益更高。 要建立将 HTTP API 路由连接到 VPC 中资源(例如应用程序负载均衡器或 Amazon ECS 基于容器的应用程序)的私有集成,您可以使用 VPC 链接。 VPC 链接有助于 API Gateway 和您的 VPC 资源之间的安全连接。 它们可以在不同的路由和 API 中重复使用。

要进行设置

  1. 导航到 AWS 管理控制台中的 API Gateway。
  2. 选择 **VPC 链接**,然后为 HTTP API 添加 VPC 链接。 选择用于您的 ECS 和 ALB 的 VPC 和子网。

现在,继续创建 HTTP API。 在此阶段,您无需添加集成;只需提供 API 名称,其他所有内容都保留为默认设置。 创建 API 后,为 **Any** -> **/{proxy+}** 添加路由。 现在,转到“集成”,选择**将集成附加到路由**,然后创建并附加集成。 选择**集成类型**作为**私有资源**,手动选择集成方法,然后选择 ALB/NLB。 在下拉列表中,选择您之前创建的 ALB。 对于监听器,选择 HTTPS:443,因为您的 ALB 只有一个 HTTPS 监听器。 最后,从 VPC 链接下拉列表中选择您之前创建的 VPC 链接。 附加集成后,将在 $default 阶段生成一个调用 URL。

现在,您可以使用此调用 URL 作为基本 URL 来测试您的 API,例如,{invoke URL}/health。 如果您收到 **400 Bad Request — The plain HTTP request was sent to the HTTPS port**,那是因为您忘记在集成中设置安全主机。

要解决此问题,请转到**集成** -> **管理集成** -> **编辑**,然后选择**高级设置**。**安全服务器名称**字段不应留空。 它应该与您的 ALB(应用程序负载均衡器)上的 HTTPS 证书的域匹配。 将证书域复制到**安全服务器名称**字段。 现在,再次尝试 {invoke URL}/health,它应该可以无缝运行。

历史

  • 2023 年 9 月 12 日:初始版本
© . All rights reserved.