使用私有端點和 Application Load Balancer API 在內部網站上部署 Amazon API Gateway - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用私有端點和 Application Load Balancer API 在內部網站上部署 Amazon API Gateway

由 Saurabh Kothari 建立 (AWS)

環境:生產

技術:Web 和行動應用程式;聯網;無伺服器;基礎設施

AWS 服務:Amazon API Gateway;Amazon Route 53;AWSCertificate Manager (ACM)

Summary

此模式示範如何在內部API網站上部署 Amazon API Gateway,該網站可從內部部署網路存取。您學習使用以私有端點、Application Load Balancer AWS PrivateLink、 和 Amazon Route 53 設計的架構,API為私有建立自訂網域名稱。此架構可防止使用自訂網域名稱和代理伺服器在 上協助以網域為基礎的路由的意外後果API。例如,如果您在無法路由的子網路中部署虛擬私有雲端 (VPC) 端點,您的網路就無法連線到 API Gateway。常見的解決方案是使用自訂網域名稱,然後在可路由子網路API中部署 ,但這可能會在代理組態將流量 (execute-api.{region}.vpce.amazonaws.com) 傳遞至 AWS Direct Connect 時破壞其他內部網站。最後,此模式可協助您滿足使用無法從網際網路和自訂網域名稱連線API的私有 的組織需求。

先決條件和限制

先決條件

  • 作用中AWS帳戶

  • 網站 和 的伺服器名稱指示 (SNI) 憑證 API

  • 使用 AWS Direct Connect 或 從內部部署環境連線至已設定的 AWS 帳戶 AWS Site-to-Site VPN

  • 具有對應網域 (例如 domain.com) 的私有託管區域,已從內部部署網路解析並將DNS查詢轉送至 Route 53

  • 可從內部部署網路連線的可路由私有子網路

限制

如需負載平衡器、規則和其他資源配額 (先前稱為限制) 的詳細資訊,請參閱 Elastic Load Balancing 文件中的 Application Load Balancer 配額

架構

技術堆疊

  • Amazon API Gateway

  • Amazon Route 53

  • Application Load Balancer

  • AWS Certificate Manager

  • AWS PrivateLink

目標架構

下圖顯示 Application Load Balancer 如何部署在 中VPC,以根據 Application Load Balancer 接聽程式規則,將 Web 流量導向網站目標群組或API閘道目標群組。API Gateway 目標群組是 API Gateway 中VPC端點的 IP 地址清單。API Gateway 已設定為使用其資源政策讓 API 私有。政策會拒絕所有來自特定VPC端點的呼叫。API 閘道中的自訂網域名稱會更新為針對 API及其階段使用 api.domain.com。Application Load Balancer 規則會根據主機名稱新增以路由流量。

使用 Application Load Balancer 接聽程式規則來引導 Web 流量的架構。

該圖顯示以下工作流程:

  1. 內部部署網路的使用者嘗試存取內部網站。請求會傳送至 ui.domain.com 和 api.domain.com。然後,請求會解析為可路由私有子網路的內部 Application Load Balancer。SSL 會在適用於 ui.domain.com 和 api.domain.com 的 Application Load Balancer 中終止 。

  2. 在 Application Load Balancer 上設定的接聽程式規則,檢查主機標頭。

    a. 如果主機標頭為 api.domain.com,則請求會轉送至API閘道目標群組。Application Load Balancer 透過連接埠 443 啟動與API閘道的新連線。

    b. 如果主機標頭為 ui.domain.com,則請求會轉送至網站目標群組。

  3. 當請求到達 API Gateway 時,在 API Gateway 中設定的自訂網域映射會決定主機名稱和API要執行的項目。

自動化和擴展

此模式中的步驟可以使用 AWS CloudFormation 或 AWS 雲端開發套件 (AWS CDK) 自動化。若要設定API閘道呼叫的目標群組,您必須使用自訂資源來擷取VPC端點的 IP 地址。API 呼叫describe-vpc-endpointsdescribe-network-interfaces傳回 IP 地址和安全群組,可用於建立 IP 地址API的目標群組。

工具

史詩

任務描述所需的技能

建立SNI憑證並將憑證匯入 ACM。

  1. 為 ui.domain.com 和 api.domain.com 建立SNI憑證。如需詳細資訊,請參閱在 Amazon 文件中選擇如何 CloudFront 提供HTTPS請求。 CloudFront

  2. 將SNI憑證匯入 AWS Certificate Manager (ACM)。如需詳細資訊,請參閱 ACM 文件中的將憑證匯入 AWS Certificate Manager

網路管理員
任務描述所需的技能

在 API Gateway 中建立介面VPC端點。

若要建立介面VPC端點,請遵循 Amazon Virtual Private Cloud (AmazonVPC) 文件中的使用介面VPC端點存取AWS服務的指示。

雲端管理員
任務描述所需的技能

為您的應用程式建立目標群組。

為應用程式的 UI 資源建立目標群組

雲端管理員

建立API閘道端點的目標群組。

  1. 使用 IP 地址類型 建立目標群組,然後將API閘道VPC端點端點的端點 IP 地址新增至目標群組。

  2. 為目標群組設定成功碼為 403 的運作狀態檢查。403 是必要的,因為當目標群組運作狀態檢查調用 API 閘道的VPC端點時,其會傳回 403 碼,而沒有任何標頭。

雲端管理員

建立 Application Load Balancer 。

  1. 在可路由私有子網路中建立 Application Load Balancer (內部)。

  2. 將 443 接聽程式新增至 Application Load Balancer ,然後從 選擇憑證ACM。

雲端管理員

建立接聽程式規則。

建立接聽程式規則以執行下列動作:

  1. 將主機 api.domain.com 轉送至API閘道目標群組

  2. 將主機 ui.domain.com 轉送至 UI 資源的目標群組

雲端管理員
任務描述所需的技能

建立私有託管區域。

為 domain.com 建立私有託管區域

雲端管理員

建立網域記錄。

建立下列項目CNAME的記錄

  • API 的值設定為 Application Load Balancer DNS名稱的

  • 將 值設定為 Application Load Balancer DNS名稱的 UI

雲端管理員
任務描述所需的技能

建立和設定私有API端點。

  1. 若要建立私有API端點,請遵循API閘道文件中在 Amazon API Gateway API中建立私有的指示。 

  2. 設定資源政策,以僅允許API從VPC端點呼叫 。如需詳細資訊,請參閱閘道API文件中API的使用API閘道資源政策控制對 的存取

應用程式開發人員、雲端管理員

建立自訂網域名稱。

  1. 為 api.domain.com 建立自訂網域名稱。如需詳細資訊,請參閱APIREST閘道文件中設定 的自訂網域名稱APIs

  2. 選取已建立的 API和 階段。如需詳細資訊,請參閱APIREST閘道文件中的使用 的API映射APIs

雲端管理員

相關資源