[英]Allow request from API Gateway to private ALB
我設置了公共 API 網關,我想將來自 API 網關的請求轉發到 VPC 中的私有 ALB。 在 AWS 控制台上,對於 API 網關 VPC 鏈接設置,我只能 select VPC 中的 NLB。
目前 AWS 僅支持連接到 NLB 以進行 VPC 鏈接集成。 他們有一個功能請求以啟用對 ALB 的支持。 現在,你可以做 -
公共 API --> VPC 鏈接 --> NLB --> ALB
在 NLB 的目標組中,添加 ALB 的私有 IP。 通過這種方式,您可以獲得 NLB(TCP 層)和 ALB (HTTPS) 的好處。
所選答案已過時。 通過使用 VPC 鏈接和私有資源集成,可以通過 http 將 API 網關與面向內部的 ALB 集成。
有關分步詳細信息,請參閱我對另一個問題的回答: https://stackoverflow.com/a/67413951/2948212
編輯:我看到我把這篇文章與另一篇文章混淆了......我相信我的回答仍然增加了價值,所以我離開了它(我認為這指定了 REST API 網關而不是 HTTP API 網關,但它沒有)。
雖然@diegosasw 的回答有效且有用,但它適用於 AWS HTTP API 網關,而不是 AWS REST API 網關。
話雖如此,他們說這是可能的是正確的:請參閱以下 AWS 文檔了解如何完成此操作: https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-application-load-平衡器/
請注意 AWS 記錄的方法的一個特別缺點:它需要一個公共ALB。 當然這並不理想,但仍然可以強化他們的 ALB,使其只接受來自 REST API 網關的流量。 如果這對於現有用例來說是不可接受的,那么必須遵循@Suraj Bhatia 的上述回答(至少對於 REST API 集成)。 如果HTTP網關是可以接受的,那么@diegosasw 的答案是更好的方法,因為它更易於管理並且仍然允許私有 ALB
為了繁榮,AWS 的文檔說明如下:
注意:以下過程假定兩件事:
您有權訪問公共應用程序負載均衡器及其 DNS 名稱。 您有一個 API 網關 REST API 資源和 HTTP 方法。
在 API 網關控制台中,選擇要與 Application Load Balancer 集成的 API。
在資源窗格中,對於方法,選擇您的 API 使用的 HTTP 方法。
選擇集成請求。
在 Integration Request 窗格中,對於 Integration Type,選擇 HTTP。
注意:要將整個 API 請求及其參數傳遞到后端應用程序負載均衡器,請改為創建以下內容之一:HTTP 代理集成 - 或 - HTTP 自定義集成
有關詳細信息,請參閱在 API 網關中設置 HTTP 集成。
- 在端點 URL 字段中,輸入 Application Load Balancer 的默認名稱 DNS 或自定義名稱 DNS。 然后,添加其偵聽器的已配置協議。 例如,在端口 8080 上配置了 HTTPS 偵聽器的應用程序負載均衡器需要以下端點 URL 格式:https://domain-name:8080/
重要提示:確保使用您選擇的端口和偵聽器規則為 Application Load Balancer 創建 HTTP 偵聽器或 HTTPS 偵聽器。 有關更多信息,請參閱應用程序負載均衡器的偵聽器。 對於配置了 HTTPS 偵聽器的 Application Load Balancer,關聯的證書必須由 API 網關支持的證書頒發機構頒發。 如果您必須使用自簽名證書或由私有證書頒發機構頒發的證書,請在集成的 tlsConfig 中將 insecureSkipVerification 設置為 true。
選擇保存。
部署 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.