本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用私有端點和 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 規則會根據主機名稱新增以路由流量。
該圖顯示以下工作流程:
內部部署網路的使用者嘗試存取內部網站。請求會傳送至 ui.domain.com 和 api.domain.com。然後,請求會解析為可路由私有子網路的內部 Application Load Balancer。SSL 會在適用於 ui.domain.com 和 api.domain.com 的 Application Load Balancer 中終止 。
在 Application Load Balancer 上設定的接聽程式規則,檢查主機標頭。
a. 如果主機標頭為 api.domain.com,則請求會轉送至API閘道目標群組。Application Load Balancer 透過連接埠 443 啟動與API閘道的新連線。
b. 如果主機標頭為 ui.domain.com,則請求會轉送至網站目標群組。
當請求到達 API Gateway 時,在 API Gateway 中設定的自訂網域映射會決定主機名稱和API要執行的項目。
自動化和擴展
此模式中的步驟可以使用 AWS CloudFormation 或 AWS 雲端開發套件 (AWS CDK) 自動化。若要設定API閘道呼叫的目標群組,您必須使用自訂資源來擷取VPC端點的 IP 地址。API 呼叫describe-vpc-endpoints
工具
Amazon API Gateway 可協助您以任何規模建立、發佈、維護HTTP、監控和保護 REST、 和 WebSocket APIs 。
Amazon Route 53 是高度可用且可擴展的 DNS Web 服務。
AWS Certificate Manager (ACM) 可協助您建立、儲存和更新公有和私有 SSL/TLS X.509 憑證和金鑰,以保護AWS網站和應用程式。
AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可協助您在程式碼中定義和佈建 AWS Cloud 基礎設施。
AWS PrivateLink 可協助您建立從 VPCs到 外部服務的單向私有連線VPC。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
建立SNI憑證並將憑證匯入 ACM。 |
| 網路管理員 |
任務 | 描述 | 所需的技能 |
---|---|---|
在 API Gateway 中建立介面VPC端點。 | 若要建立介面VPC端點,請遵循 Amazon Virtual Private Cloud (AmazonVPC) 文件中的使用介面VPC端點存取AWS服務的指示。 | 雲端管理員 |
任務 | 描述 | 所需的技能 |
---|---|---|
為您的應用程式建立目標群組。 | 為應用程式的 UI 資源建立目標群組。 | 雲端管理員 |
建立API閘道端點的目標群組。 |
| 雲端管理員 |
建立 Application Load Balancer 。 |
| 雲端管理員 |
建立接聽程式規則。 | 建立接聽程式規則以執行下列動作:
| 雲端管理員 |
任務 | 描述 | 所需的技能 |
---|---|---|
建立和設定私有API端點。 |
| 應用程式開發人員、雲端管理員 |
建立自訂網域名稱。 |
| 雲端管理員 |