使用私有终端节点和应用程序负载均衡器API在内部网站上部署 Amazon API Gateway - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用私有终端节点和应用程序负载均衡器API在内部网站上部署 Amazon API Gateway

由 Saurabh Kothari 创作 () AWS

环境:生产

技术:Web 和移动应用程序;网络;无服务器;基础架构

AWS服务:亚马逊 API Gateway;亚马逊 Route 53;AWSCertifice Manager (ACM)

Summary

此模式向您展示如何在可从本地网络访问的内部API网站上部署 Amazon API Gateway。您将学习使用专有终端节点、Application Load Balancer 和 Amazon Route 53 设计的架构为私有域名创建自定义域名。API AWS PrivateLink这种架构可防止使用自定义域名和代理服务器来帮助在上进行基于域的路由而产生的意想不到的后果。API例如,如果您在不可路由的子网中部署虚拟私有云 (VPC) 终端节点,则您的网络将无法访问API网关。常见的解决方案是使用自定义域名,然后将其部署在可路由的子网API中,但是当代理配置将流量 (execute-api.{region}.vpce.amazonaws.com) 传递到 Di AWS rect Connect 时,这可能会中断其他内部站点。最后,这种模式可以帮助您满足使用无法通过互联网访问API的私有域名和自定义域名的组织要求。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 您的网站的服务器名称指示 (SNI) 证书,以及 API

  • 从本地环境到使用 Di AWS rect Connect 设置的AWS账户的连接或 AWS Site-to-Site VPN

  • 带有相应域(例如 domain.com)的私有托管区域,该域名从本地网络解析并将DNS查询转发到 Route 53

  • 可从本地网络访问的可路由私有子网

限制

有关负载均衡器、规则和其他资源的配额(以前称为限制)的更多信息,请参阅 Elastic Load Balancing 文档中的应用程序负载均衡器配额

架构

技术堆栈

  • 亚马逊API网关

  • Amazon Route 53

  • 应用程序负载均衡器

  • AWSCertification

  • AWS PrivateLink

目标架构

下图显示了如何部署应用程序负载均衡器,VPC该负载均衡器是如何根据应用程序负载均衡器侦听器规则将网络流量引导到网站目标组或API网关目标组的。API网关目标组是网API关中VPC终端节点的 IP 地址列表。APIGateway 配置为使用其资源策略将其设为API私有。该策略拒绝所有不是来自特定VPC终端节点的呼叫。API网关中的自定义域名已更新为使用 api.domain.com 作为及其阶段。API添加了应用程序负载均衡器规则,以根据主机名路由流量。

使用 Application Load Balancer 侦听器规则来定向 Web 流量的架构。

图表显示了以下工作流:

  1. 本地网络中的用户尝试访问内部网站。该请求已发送至 ui.domain.com 和 api.domain.com。然后,请求被解析至可路由私有子网的内部应用程序负载均衡器。在 ui. SSL domain.com 和 api.domain.com 的 Application Load Balancer 上终止。

  2. 在应用程序负载均衡器上配置的侦听器规则将检查主机标头。

    a. 如果主机标头是 api.domain.com,则请求将转发到网关目标组。APIApplication Load Balancer 通过端口 443 启动与API网关的新连接。

    b. 如果主机标头为 ui.domain.com,则请求将转发到网站目标组。

  3. 当请求到达 API Gateway 时,Gate API way 中配置的自定义域映射将决定主机名和API要运行的主机名。

自动化和扩缩

可以使用AWS CloudFormation 或 AWS Cloud Development Kit (AWSCDK) 自动执行此模式中的步骤。要配置API网关呼叫的目标组,必须使用自定义资源来检索VPC终端节点的 IP 地址。API调用describe-vpc-endpointsdescribe-network-interfaces返回 IP 地址和安全组,这些地址和安全组可用于创建API目标 IP 地址组。

工具

  • Amazon API Gateway 可帮助您以任何规模创建、发布RESTHTTP、维护、监控和 WebSocket APIs保护。

  • Amazon Route 53 是一项高度可用且可扩展的DNS网络服务。

  • AWSCertifice Manager (ACM) 可帮助您创建、存储和续订保护您的AWS网站和应用程序的公共和私有SSL/TLSX.509 证书和密钥。

  • AWSCloud Development Kit (AWSCDK) 是一个软件开发框架,可帮助您在代码中定义和配置AWS云基础架构。

  • AWS PrivateLink帮助您创建从您VPCs到外部服务的单向私有连接。VPC

操作说明

任务描述所需技能

创建SNI证书并将证书导入ACM。

  1. 为 ui.domain.com 和 api.domain.com 创建SNI证书。有关更多信息,请参阅 Amazon CloudFront 文档中的选择如何 CloudFront HTTPS处理请求

  2. 将SNIAWS证书导入 Certifice Manager (ACM)。有关更多信息,请参阅ACM文档中的将AWS证书导入到 Certificate Manager

网络管理员
任务描述所需技能

在 Gate API way 中创建接口VPC终端节点。

要创建接口VPC终端节点,请按照 Amazon Vir tual Private Cloud (AmazonVPC) 文档中的使用接口VPC终端节点访问AWS服务中的说明进行操作。

云管理员
任务描述所需技能

为应用程序创建目标组。

为应用程序的 UI 资源创建目标组

云管理员

为API网关终端节点创建目标组。

  1. 创建一个 IP 地址类型的目标组,然后将API网关VPC终端节点的终端节点的 IP 地址添加到目标组。

  2. 使用成功代码 403 为目标组@@ 配置运行状况检查。403 是必需的,因为目标组运行状况检查在没有任何标头的情况下调用API网关的VPC终端节点时,网关的终端节点会返回 403 代码。

云管理员

创建应用程序负载均衡器。

  1. 在可路由的私有子网中创建应用程序负载均衡器(内部)。

  2. 将 443 侦听器添加到 Application Load Balancer,然后从ACM中选择证书。

云管理员

创建侦听器规则。

创建侦听器规则,以执行以下操作:

  1. 将主机 api.domain.com 转发给 Gateway 目标组 API

  2. 将主机 ui.domain.com 转发到 UI 资源的目标组

云管理员
任务描述所需技能

创建私有托管区。

为 domain.com 创建私有托管区

云管理员

创建域记录。

为以下内容@@ 创建CNAME记录

  • API的值设置为 Application Load Balancer 的DNS名称

  • 一个用户界面,其值设置为 Application Load Balancer 的DNS名称

云管理员
任务描述所需技能

创建和配置私有API终端节点。

  1. 要创建私有API终端节点,请按照API网API关文档API中在 Amazon Gateway 中创建私有终端节点中的说明进行操作。 

  2. 将资源策略配置为仅允许API来自VPC终端节点的调用。有关更多信息,请参阅 Gateway 文档中的API使用 API Gateway 资源策略控制对的API访问权限

应用程序开发人员、云管理员

创建自定义域名。

  1. 为 api.domain.com 创建自定义域名。有关更多信息,请参阅 Gate API way 文档RESTAPIs中的为设置自定义域名

  2. 选择已创建的API和舞台。 有关更多信息,请参阅 Gat e API way 文档RESTAPIs中的使用API映射

云管理员

相关资源