呼叫僅限內部存取的 API Proxy

本頁內容適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何從內部網路執行的用戶端呼叫 API Proxy。如果 Apigee 佈建為使用內部網路路由,這些步驟有助於測試設定。如果 Apigee 是透過下列任一網路轉送設定佈建,請按照本文步驟操作:

佈建選項 網路選項 佈建步驟
付費訂閱 使用虛擬私有雲對等互連 內部轉送 (VPC)
內部轉送 (PSC)
即付即用 使用虛擬私有雲對等互連 內部轉送 (VPC)
內部轉送 (PSC)
評估 使用虛擬私有雲對等互連 設定路徑 (內部)
評估 不使用虛擬私有雲對等互連 內部路徑 (PSC)

另請參閱「網路選項」。

事前準備

請先完成下列設定步驟:

  1. 如尚未初始化 Cloud SDK,請按照「初始化 gcloud CLI」一文中的說明操作,或確保您在「必要條件」中建立的 Google Cloud 專案是 gcloud 的預設專案。
  2. 定義下列本機環境變數:

    export PROJECT_ID=YOUR_PROJECT_ID
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export SUBNET=NETWORK_NAME
    export INSTANCE_NAME=INSTANCE_NAME
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

    其中:

    • PROJECT_ID 是您在必要條件中建立的 Cloud 專案 ID。
    • AUTH 會使用不記名憑證定義 Authentication 標頭。呼叫 Apigee API 時,您會使用這個標頭。請注意,權杖會在一段時間後過期,屆時您只要使用相同指令重新產生即可。詳情請參閱 print-access-token 指令的參考頁面。
    • SUBNET 是佈建期間指定的子網路。例如:default
    • INSTANCE_NAME:新執行個體的名稱。例如:my-runtime-instance。名稱開頭須為小寫英文字母,長度上限為 32 個字元,且只能包含小寫英文字母、數字和連字號。開頭或結尾不得為連字號,且長度至少須為兩個字元。
    • PROJECT_NUMBER 是您在必要條件中建立的雲端專案編號。這個範例會發出 gcloud 指令,為您取得專案編號。
  3. 從 Apigee 執行個體取得 location 屬性的值。這個值是執行個體所在的區域,例如 us-west1
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. 在執行個體區域中選擇一個區域,並將區域名稱放在變數中。可用區必須位於執行個體內。例如:
    export VM_ZONE="us-west1-b"

    如需協助找出執行個體區域內的可用區,可以使用 gcloud 指令,傳回已設定的執行階段區域名稱。例如:

    VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')

建立 VM 並呼叫 API Proxy

接著,使用 gcloud beta compute 指令,在 VPC 網路中建立新的 VM。VM 會做為橋樑,讓您將要求傳送至內部負載平衡器 IP。設定 VM 後,即可呼叫已部署的 API Proxy:

  1. 下列範例會建立新的 VM,並使用一些常見選項,以及您先前定義的環境變數做為輸入內容。
    gcloud beta compute --project=$PROJECT_ID \
      instances create $INSTANCE_NAME \
      --zone=$VM_ZONE \
      --machine-type=e2-micro \
      --subnet=$SUBNET \
      --network-tier=PREMIUM \
      --no-restart-on-failure \
      --maintenance-policy=TERMINATE \
      --preemptible \
      --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-server,https-server \
      --image=debian-12-bookworm-v20240701 \
      --image-project=debian-cloud \
      --boot-disk-size=10GB \
      --boot-disk-type=pd-standard \
      --boot-disk-device-name=$INSTANCE_NAME \
      --no-shielded-secure-boot \
      --shielded-vtpm \
      --shielded-integrity-monitoring \
      --reservation-affinity=any
  2. 開啟與新建立 VM 的安全連線。

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. 在 VM 殼層中,安裝 jq 公用程式。後續步驟會用到這個值:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. 在 VM 殼層中,建立下列環境變數,方便複製/貼上 API 代理要求:
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export PROJECT_ID=YOUR_PROJECT_ID
    export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
    
  5. 確認變數設定正確:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. 呼叫 API Proxy。在 Apigee 佈建期間,選取與您設定路由方式相應的選項。

    使用虛擬私有雲對等互連的安裝選項

    • (TLS 選項 #1) 如果您已在專案中設定內部負載平衡器 (ILB),如「內部路由 (VPC)」一文所述,請使用該 ILB 的 IP 呼叫 Proxy。這個選項會使用您控管的 CA 憑證,這些憑證是在建立內部負載平衡器時建立:
      1. 使用 VM 執行個體群組後端設定內部 HTTP(S) 負載平衡一文所述,取得專案中 ILB 的 IP 位址。
      2. 呼叫 API Proxy:
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (TLS 選項 #2) 使用預設的完整網域名稱,該名稱會解析為 Apigee 專案中的內部負載平衡器。如果選取這個選項,系統會使用內部建立的 Apigee 自行簽署憑證,採用 TLS。您無法控管這些憑證。
      1. 在 Apigee 專案中取得內部負載平衡器的 IP:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. 使用下列指令,擷取在建立機構時建立的 CA 憑證:
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. 將要求傳送至已部署的 API Proxy,其中 example.$PROJECT_ID.apigee.internal 是可解析為內部負載平衡器的內部預設完整網域名稱。
        curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
          https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \
          --cacert cacert.crt \
          --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
    • (非 TLS 選項) 如果遇到 SSL/TLS 憑證驗證問題,可以使用 curl 指令搭配 -k (或 --insecure) 旗標。這會略過憑證驗證,允許連線繼續進行。 請注意,雖然通訊內容仍會加密,但由於系統不會驗證伺服器真實性,因此這個選項可能會影響安全性。
      1. 在 Apigee 專案中取得內部負載平衡器的 IP:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. 呼叫 API Proxy:
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (服務端點選項) 如果您使用 PSC 佈建付費或評估機構,並選擇服務端點路徑選項:
      1. 取得服務端點的 IP。如需查詢端點 IP,請參閱「列出端點」。
      2. 呼叫 API Proxy:
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        例如:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    不使用非虛擬私有雲對等互連的安裝選項

    • (服務端點選項) 如果您使用 PSC 佈建付費或評估機構,並選擇服務端點路徑選項:
      1. 取得服務端點的 IP。如需查詢端點 IP,請參閱「列出端點」。
      2. 呼叫 API Proxy:
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        例如:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    如果在這個程序中發生錯誤,請確認您在指令中建立及使用的所有環境變數都有有效值。另請參閱「疑難排解」。

    後續步驟

    您可以嘗試建立 Proxy,然後部署,或是瀏覽 Apigee 教學課程,瞭解 Apigee 的功能,例如防範流量突然暴增,或是詳細瞭解要求/回應流程

    (進階) 如果您打算將此設定做為正式版,可以為新叢集和相關 Cloud 服務設定安全防護範圍。您可以使用 VPC Service Controls 達成這個目標。