如何使用 Application Load Balancer 或 Network Load Balancer 調用 API Gateway 私有 API?

3 分的閱讀內容
0

我想要將 Amazon API Gateway 私有 API 設定為負載平衡器之後的目標。然後使用 AWS 帳戶,從 Application Load Balancer 或 Network Load Balancer 存取我的私有 API。

簡短說明

若要使用 AWS Direct Connect 或 Amazon Route 53 來存取您的私有 API,請參閱如何調用私有 API。您也可以使用介面 VPC 端點在另一個 AWS 帳戶中存取 API Gateway 私有 REST API

下列解決方案使用 Amazon Virtual Private Cloud (Amazon VPC) 端點彈性網路介面 IP 地址。使用此 IP 地址,您可以將私有 API 新增為負載平衡器的目標。

**重要事項:**API Gateway 不支援對私有 API 自訂網域名稱。作為因應措施,您可以調用網域並將其連接至負載平衡器。然後,使用以下設定來調用私有 API。

解決方案

建立 Amazon VPC 端點

1.    開啟 Amazon VPC 主控台。

2.    選擇端點,然後選擇建立端點
**注意:**如果您已使用 API execute-api,在 VPC 中設定任何 Amazon VPC 端點,則請關閉私有 DNS。

3.    在服務中,選擇 com.amazonaws.com.your-region.execute-api

4.    在 VPC 中,選取 Amazon VPC。

5.    在子網路中,選取不同可用區域 (AZ ID) 中的兩個子網路,然後選擇建立端點

6.    選取端點,選擇子網路,然後複製 IP 地址

如需詳細資訊,請參閱針對 API Gateway execute-api 建立介面 VPC 端點

建立私有 REST API,並授予 Amazon VPC 端點權限

1.    開啟 API Gateway 主控台,然後選擇建立 API

2.    在 REST API 中,選擇建置

3.    在設定中,輸入下列資訊: 
API 名稱中,輸入 API 的名稱。
端點類型中,選擇私有
端點 ID 中,輸入您建立的端點 ID。

4.    選擇建立 API

5.    在導覽窗格中,選擇資源政策

6.    在資源政策編輯器中,貼上以下政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-081234d1ad408e"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*"
    }
  ]
}

**注意:**使用您的 VPC 端點 ID 取代 vpce-081234d1ad408e。使用您的 API ARN 取代 arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID

7.    選擇儲存

如需詳細資訊,請參閱使用 API Gateway 主控台建立私有 API

建立或匯入 AWS Certificate Manager 公有憑證

請求公有憑證,或匯入憑證

建立 Application Load Balancer 或 Network Load Balancer

建立 Application Load Balancer,或建立 Network Load Balancer

建立目標群組

1.    開啟 Amazon Elastic Compute Cloud (Amazon EC2) 主控台

2.    在導覽窗格的負載平衡中,選擇負載平衡器,然後選擇目標群組

3.    選擇建立目標群組

4.    在目標類型中,選擇 IP 地址

5.    在目標群組名稱中,輸入名稱。

Application Load Balancer

通訊協定中,選擇 HTTPS
連接埠中,選擇 443
VPC 中,選取您的 VPC。
運作狀態檢查路徑中,輸入 200,403,以便 VPC 端點在目標群組中顯示為運作狀態良好

Network Load Balancer

通訊協定中,選擇 TLS
連接埠中,選擇 443
VPC 中,選取您的 VPC。

6.    選擇下一步

7.    在指定 IP 中,輸入您在建立介面 Amazon VPC 端點區段中複製的 IP 地址,然後選擇新增 IPv4 地址

8.    選擇建立目標群組

設定負載平衡器

1.    開啟 EC2 主控台

2.    在導覽窗格中,選擇負載平衡器,然後選擇建立負載平衡器

Application Load Balancer

配置中,依您的組態而定,選擇面對網際網路內部
通訊協定中,選擇 HTTPS
VPC子網路中,選取您的 VPC 和子網路。

Network Load Balancer

配置中,依您的組態而定,選擇面對網際網路內部
通訊協定中,選擇 TLS
VPC子網路中,選取您的 VPC 和子網路。
安全政策中,選取預設政策 ELBSecurityPolicy-TLS (建議使用)
預設 SSL/TLS 憑證中,選擇從 ACM
選擇選取憑證下拉式清單,然後選取您的憑證。

3.    選擇建立負載平衡器

注意:負載平衡器目標位置為 VPC 端點建立之彈性網路介面所在的 IP 地址。若要尋找這些彈性網路介面,請選取 VPC 端點,然後開啟子網路索引標籤。

在 Amazon Route 53 公有或私有託管區域中建立記錄

建立公有託管區域,或者建立私有託管區域

然後,建立 CNAME 記錄,並將其與 Application Load Balancer 或 Network Load Balancer 建立關聯。

測試

針對公有負載平衡器,您可從本機電腦發出 curl 請求。

針對私有負載平衡器,請在負載平衡器的其中一個子網路啟動新的 EC2 執行個體。然後,發出類似下列請求的 curl 請求:

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

-或-

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

成功的請求會傳回 200 正常回應代碼。失敗的請求會傳回 403 禁止回應代碼,或 DNS 解析錯誤。如果遇到任何問題,請參閱負載平衡器疑難排解

相關資訊

如何透過 Direct Connect 連線與私有 API Gateway 建立連線?

如何疑難排解連線至 API Gateway 私有 API 端點時出現的問題?

使用 Amazon CloudWatch 指標監控 REST API

在 API Gateway 中為 REST API 設定 CloudWatch 日誌記錄

AWS 官方
AWS 官方已更新 1 年前