簡體   English   中英

允許從 API 網關到私有 ALB 的請求

[英]Allow request from API Gateway to private ALB

我設置了公共 API 網關,我想將來自 API 網關的請求轉發到 VPC 中的私有 ALB。 在 AWS 控制台上,對於 API 網關 VPC 鏈接設置,我只能 select VPC 中的 NLB。

  1. 為什么我們只能路由到 NLB 而不能路由到 ALB?
  2. 有沒有辦法可以從 API 網關路由到私有 ALB?

目前 AWS 僅支持連接到 NLB 以進行 VPC 鏈接集成。 他們有一個功能請求以啟用對 ALB 的支持。 現在,你可以做 -

公共 API --> VPC 鏈接 --> NLB --> ALB

在 NLB 的目標組中,添加 ALB 的私有 IP。 通過這種方式,您可以獲得 NLB(TCP 層)和 ALB (HTTPS) 的好處。

將 static IP 地址用於應用程序負載均衡器

所選答案已過時。 通過使用 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 方法。

  1. 在 API 網關控制台中,選擇要與 Application Load Balancer 集成的 API。

  2. 在資源窗格中,對於方法,選擇您的 API 使用的 HTTP 方法。

  3. 選擇集成請求。

  4. 在 Integration Request 窗格中,對於 Integration Type,選擇 HTTP。

注意:要將整個 API 請求及其參數傳遞到后端應用程序負載均衡器,請改為創建以下內容之一:HTTP 代理集成 - 或 - HTTP 自定義集成

有關詳細信息,請參閱在 API 網關中設置 HTTP 集成。

  1. 在端點 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。

  1. 選擇保存。

  2. 部署 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM