呼叫僅限內部存取的 API Proxy

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

查看 Apigee Edge 說明文件。

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

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

另請參閱「網路選項」。

事前準備

請先完成下列設定步驟:

  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是您在必要條件中建立的 Cloud 專案編號。這個範例會發出 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 憑證驗證問題,可以使用 -k (或 --insecure) 旗標搭配 curl 指令。這會略過憑證驗證,允許連線繼續進行。 請注意,雖然通訊內容仍會加密,但這個選項可能會影響安全性,因為系統不會驗證伺服器是否為正版。
      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
    • (服務端點選項) 如果您使用 Private Service Connect 佈建付費或評估機構,並選擇服務端點路由選項:
      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

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

    • (服務端點選項) 如果您使用 Private Service Connect 佈建付費或評估機構,並選擇服務端點路由選項:
      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 達成這個目標。