我如何使用 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. 選擇端點,然後選擇建立端點
  3. 輸入下列資訊:
    服務中,選擇 com.amazonaws.com.your-region.execute-api
    VPC 中,選取 Amazon VPC。
    子網路中,選取不同可用區域 (AZ ID) 中的兩個子網路。
    **注意:**如果您已使用 execute-api,在 VPC 中設定 Amazon VPC 端點,則請關閉私有 DNS。
  4. 選擇建立端點
  5. 選取端點,選擇子網路,然後複製 IP 地址

如需詳細資訊,請參閱在 API Gateway 中的私有 REST API

建立私有 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 的 Amazon Resource Name (ARN) 取代 arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID
  7. 選擇儲存

建立或匯入 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 地址
    對於目標群組名稱,輸入名稱。
    Application Load Balancer
    通訊協定中,選擇 HTTPS
    連接埠中,選擇 443
    VPC 中,選取您的 VPC。
    運作狀態檢查路徑中,輸入「/」並在成功程式碼中,輸入 200,403,以便 VPC 端點顯示為運作狀態良好
    Network Load Balancer
    通訊協定中,選擇 TLS
    連接埠中,選擇 443
    對於 VPC,選取您的 VPC。
  5. 選擇下一步
  6. 指定 IP 中,輸入您在建立介面 Amazon VPC 端點區段中複製的 IP 地址。然後,選擇新增 IPv4 位址
  7. 選擇建立目標群組

設定負載平衡器

請完成下列步驟:

  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 建立關聯。

建立自訂網域

在 API Gateway 主控台中建立自訂網域。然後,在自定網域下對應私有 Rest API。

測試

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

curl -v https://{custom-domain-name}/<resource-path>

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

相關資訊

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

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

使用 Amazon CloudWatch 指標來監控 REST API 執行

在 API Gateway 中設定 REST API 的 CloudWatch 記錄功能