GSP907

總覽
在本實驗室中,您將啟用 NAT (網路位址轉譯) IP 位址,建立可預測 IP 位址並列入許可清單,以從 Apigee 執行個體向後端服務傳送要求。
目標
您將瞭解如何執行下列工作:
- 從 Apigee API 說明文件呼叫 Apigee API
- 為來自 Apigee 執行階段的 Apigee 要求,建立並啟用 NAT IP 位址
- 確認傳送至後端伺服器的要求使用已設定的 NAT IP 位址
設定
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
開啟 Apigee 控制台
如要開啟 Apigee 控制台,請按照下列指示操作:
- 在 Google Cloud 控制台的「搜尋」欄位輸入
Apigee,然後點選搜尋結果中的「Apigee API 管理平台」。
Apigee 控制台隨即開啟,到達網頁會顯示常用位置的快速連結。
- 前往導覽選單 (
),按一下「Apigee」旁的「收藏」圖示 (
)。
這樣 Apigee 就會新增至導覽選單的收藏。
工作 1:查看 Apigee API 說明文件
在這項工作中,您將使用 Google APIs Explorer 查看 Apigee API 說明文件。
- 在顯示 Google Cloud 控制台的瀏覽器視窗開啟新分頁,然後複製並貼上以下 Google APIs Explorer 連結:Google APIs Explorer 的 Apigee API 參考資源。
Apigee API 的作用是透過程式開發及管理組織的 API。您可以直接從說明文件頁面呼叫 Apigee API。
- 在右窗格找出 「v1.organizations.instances」REST 資源。
- 在「v1.organizations.instances」部分點選「list」。
本頁說明 Apigee API 的執行個體列出方法。
- 將「Try this API」窗格中的「parent」設為:
organizations/{{{ project_0.project_id | PROJECT }}}
-
點選「Execute」。
-
如果畫面顯示彈出式視窗,要求您選擇帳戶才能繼續使用 Google APIs Explorer,請選取您的實驗室使用者名稱,然後點選「Allow」。
API 回應大致如下:
{
"instances": [
{
"name": "eval-instance",
"location": "{{{ project_0.default_zone | ZONE }}}",
"host": "172.21.60.2",
"port": "443",
"state": "ACTIVE"
}
]
}
或是:
{
"instances": [
{
"name": "eval-instance",
"location": "europe-west1",
"createdAt": "1706780597609",
"lastModifiedAt": "1706780670711",
"state": "CREATING",
"peeringCidrRange": "SLASH_22",
"runtimeVersion": "1-11-0-apigee-14",
"ipRange": "10.188.120.0/28"
}
]
}
執行個體的名稱為「eval-instance」,您要為這個執行個體建立 NAT IP 位址。
- 點按「Try this API」窗格右上角的「Expand」圖示
。
窗格展開後,會顯示要求的對等 cURL,並提供可用於發出要求的 HTTP 要求和 JavaScript 程式碼片段。

- 點按「Revert」
即可關閉展開的窗格。
工作 2:等待執行個體佈建完成
在這項工作中,您將等待 Apigee 評估組織佈建完成。
Apigee 組織佈建作業可能需要較長時間才能完成。您可以使用 Apigee API 監控組織的佈建進度。
啟動監控指令碼
- 返回 Cloud 控制台分頁。
- 在右上方的工具列,點按「啟用 Cloud Shell」按鈕。

- 如果出現提示訊息,請點選「繼續」。
佈建並連線至 Cloud Shell 的作業需要一些時間。連線建立完成即代表已通過驗證,而且專案已設為您的「PROJECT_ID」。
- 在 Cloud Shell 輸入下列指令,確認 「GOOGLE_CLOUD_PROJECT」變數包含您的專案名稱:
echo ${GOOGLE_CLOUD_PROJECT}
GOOGLE_CLOUD_PROJECT 變數應包含專案名稱,也就是 Apigee 組織名稱。
-
如果未設定 GOOGLE_CLOUD_PROJECT 變數,請使用類似下方的指令手動設定變數,並將「{project}」替換為專案名稱:
export GOOGLE_CLOUD_PROJECT={project}
注意:執行這個步驟時,請移除大括號。
- 將下列指令貼入 Cloud Shell:
export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; if [ -z "${GOOGLE_CLOUD_PROJECT}" ]; then echo "Error: GOOGLE_CLOUD_PROJECT environment variable is not set. Please set it to your project ID."; else export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\" or (.environment | endswith(\"/${ENV_NAME}\"))) | .environment" --raw-output); [[ -n "${ATTACHMENT_DONE}" ]] && break; echo -n "."; sleep 5; done; echo; echo "${ENV_NAME} environment attached"; echo "***ORG IS READY TO USE***"; fi
這組指令會使用 Apigee API,判斷是否已建立 Apigee 執行階段執行個體,以及是否已附加 eval 環境。
- 等待執行個體準備就緒。
畫面顯示 ***ORG IS READY TO USE*** 文字時,表示執行個體已準備就緒。
注意:如果指令立即顯示組織已可使用,表示實驗室可能在您進入前已預先啟動。
點選「Check my progress」,確認目標已達成。
執行監控指令碼並等待執行個體
工作 3:建立及部署 API Proxy
在這項工作中,您將建立 API Proxy 來測試向後端服務顯示的 IP 位址。
- 在 Apigee 導覽選單中,依序選取「Proxy 開發」>「API Proxy」。
- 在「選取環境」下拉式選單中,選取「eval」。
注意:如果無法在下拉式選單中選取 eval 環境,請重新整理頁面。
- 如要使用 Proxy 精靈建立新的 Proxy,請按一下「+ 建立」。
- 針對「Proxy template」,選取「General template」>「Reverse proxy (Most common)」。
注意:請勿選取「OpenAPI spec template」部分的「Reverse proxy (Most common)」。
-
請指定下列屬性:
| 屬性 |
值 |
| Proxy 名稱 |
test-nat |
| 基本路徑 |
/test-nat |
| 目標 (現有 API) |
https://httpbin.org/ip |
您要建立 httpbin 要求和回應服務的 API Proxy。這項服務在測試 API 時相當實用。
要求通過 Proxy 伺服器時,每部伺服器的 IP 位址都會新增至 X-Forwarded-For 標頭。httpbin.org /ip 端點會傳回 X-Forwarded-For 標頭中的 IP 位址,以及與 httpbin.org 伺服器建立連線的最終 IP 位址。
- 點選「下一步」。
- 保留「Deploy (optional)」設定的預設值,然後點選「建立」。
- 前往「總覽」分頁,等待部署狀態顯示 Revision 1 已在 eval 環境。

點選「Check my progress」,確認目標已達成。
建立及部署 API Proxy
工作 4:測試 API Proxy
在這項工作中,您將呼叫 API Proxy,來確認後端服務使用動態執行個體 IP 位址。
系統已自動建立虛擬機器 apigeex-test-vm,使用這個虛擬機器,透過私人 IP 位址呼叫 Apigee 執行階段。
呼叫 Apigee 執行階段
- 在 Cloud Shell 啟用連往 VM 的 SSH 連線:
TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)")
gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
- 對顯示的每個問題按下 Enter 或 Return 鍵,使用預設的輸入內容。
您是以專案「擁有者」的身分登入,因此能透過 SSH 連至這個機器。
Cloud Shell 工作階段現在會在 VM 內執行。
- 在 VM 的殼層,設定必要殼層變數:
export PROJECT_NAME=$(gcloud config get-value project)
export ORG=${PROJECT_NAME}
export INSTANCE_NAME=eval-instance
export INTERNAL_LB_IP=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/instances/${INSTANCE_NAME}" | jq ".host" --raw-output)
export EVAL_ENVGROUP_HOSTNAME=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/envgroups/eval-group" | jq ".hostnames[0]" --raw-output)
echo "INTERNAL_LB_IP=${INTERNAL_LB_IP}"
echo "EVAL_ENVGROUP_HOSTNAME=${EVAL_ENVGROUP_HOSTNAME}"
EVAL_ENVGROUP_HOSTNAME 包含與 eval-group 環境群組相關聯的主機名稱。系統已自動建立這個主機名稱的 DNS 項目,來指定內部負載平衡器的私人 IP 位址。
注意:這個 DNS 項目會使用私人 DNS 可用區和私人 IP 位址。私人 DNS 項目無法在 apigeex-vpc 網路外解析,私人 IP 位址則無法透過 Cloud Shell 或 apigeex-vpc 網路外的 IP 位址存取。
- 在 eval 環境呼叫已部署的 test-nat API Proxy:
curl -k "https://${EVAL_ENVGROUP_HOSTNAME}/test-nat"
-k 選項會告知 curl 越過 TLS 憑證驗證。內部負載平衡器使用的憑證為自行簽署,而不是由信任的憑證授權單位 (CA) 建立。
注意:
在正式環境中,切勿使用 -k 選項略過憑證驗證。
curl 指令應傳回 test-nat Proxy 產生的回應,內容大致如下:
{
"origin": "10.0.0.2,10.0.0.5,10.0.0.7, 34.83.164.141"
}
origin 欄位回應會顯示多個 IP 位址。其中最後一個 IP 位址來自呼叫 httpbin.org 伺服器的最終伺服器。這裡顯示的前 3 個 IP 位址都是內部 IP 位址,會記錄從執行個體向 httpbin.org 傳送要求的其他躍點。
如果重複呼叫多次,每次顯示的最終 IP 位址可能都相同。不過,除非您將 NAT 位址新增至執行個體,否則最終 IP 位址可能會隨時間改變,導致難以加入許可清單。
工作 5:建立執行個體的 NAT IP
在這項工作中,您將建立 NAT IP,讓執行階段執行個體在呼叫後端服務時使用。
NAT IP 的用途是在 Apigee 執行個體對後端服務的呼叫時,提供可預測的 IP 位址。
- 返回「Apigee API」瀏覽器分頁。
- 在左窗格展開「organizations.instances.natAddresses」部分。
- 在「organizations.instances.natAddresses」下方點選「建立」。
本頁說明 Apigee API 的 NAT 位址建立方法。
- 將「Try this API」窗格中的「parent」設為:
organizations/{{{ project_0.project_id | PROJECT }}}/instances/eval-instance
- 依序點按「Add request body parameters」和「name」。
- 在雙引號之間設定以下字串:
eval-instance-ip
- 點選「Execute」。
如果畫面顯示彈出式視窗,要求您選擇帳戶才能繼續使用 Google APIs Explorer,請選取您的實驗室使用者名稱,然後點選「Allow」。
API 回應大致如下:
{
"name": "organizations/qwiklabs-gcp-01-f24706170325/operations/c79a19c8-ae9f-49de-978e-7f4873b06e51",
"metadata": {
"@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
"operationType": "INSERT",
"targetResourceName": "organizations/qwiklabs-gcp-01-f24706170325/instances/eval-instance/natAddresses/eval-instance-ip",
"state": "IN_PROGRESS"
}
}
這是非同步作業,不過很快就會完成。
- 在左窗格的「organizations.instances.natAddresses」下方點選「獲得」。
本頁面說明 Apigee API 的 NAT 位址取得方法。
- 將「Try this API」窗格中的「parent」設為:
organizations/{{{ project_0.project_id | PROJECT }}}/instances/eval-instance/natAddresses/eval-instance-ip
- 點選「Execute」。
如果畫面顯示彈出式視窗,要求您選擇帳戶才能繼續使用 Google APIs Explorer,請選取您的實驗室使用者名稱,然後點選「Allow」。
API 回應大致如下:
{
"name": "eval-instance-ip",
"ipAddress": "104.198.6.224",
"state": "RESERVED"
}
NAT 位址已保留,但尚未啟用。
點選「Check my progress」,確認目標已達成。
建立執行個體的 NAT IP
工作 6:啟用 NAT IP
在這項工作中,您將啟用在前一項工作建立的 NAT IP。
- 在「organizations.instances.natAddresses」下方點選「啟用」。
本頁說明 Apigee API 的 NAT 位址啟用方法。
- 將「Try this API」窗格中的「parent」設為:
organizations/{{{ project_0.project_id | PROJECT }}}/instances/eval-instance/natAddresses/eval-instance-ip
- 點選「Execute」。
如果畫面顯示彈出式視窗,要求您選擇帳戶才能繼續使用 Google APIs Explorer,請選取您的實驗室使用者名稱,然後點選「Allow」。
API 回應大致如下:
{
"name": "organizations/qwiklabs-gcp-01-f24706170325/operations/4b96ee01-55a5-4824-859a-04c2e034d1d4",
"metadata": {
"@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
"operationType": "INSERT",
"targetResourceName": "organizations/qwiklabs-gcp-01-f24706170325/instances/eval-instance/natAddresses/eval-instance-ip",
"state": "IN_PROGRESS"
}
}
這是非同步作業,不過很快就會完成。
- 在左窗格的「organizations.instances.natAddresses」下方點選「獲得」。
本頁面說明 Apigee API 的 NAT 位址取得方法。
- 將「Try this API」窗格中的「parent」設為:
organizations/{{{ project_0.project_id | PROJECT }}}/instances/eval-instance/natAddresses/eval-instance-ip
- 點選「Execute」。
- 如果畫面顯示彈出式視窗,要求您選擇帳戶才能繼續使用 Google APIs Explorer,請選取您的實驗室使用者名稱,然後點選「Allow」。
API 回應大致如下:
{
"name": "eval-instance-ip",
"ipAddress": "104.198.6.224",
"state": "ACTIVE"
}
注意:如果 NAT IP 的狀態仍為 RESERVED,請繼續點按「Execute」,直到啟用完成且傳回的狀態為 ACTIVE。
NAT 位址現已啟用。
點選「Check my progress」,確認目標已達成。
啟用 NAT IP
工作 7:測試 NAT 位址
在這項工作中,您將呼叫 API Proxy,來確認呼叫後端服務時會使用 NAT 位址。
呼叫 Apigee 執行階段
- 如果 SSH 與 VM 之間的連線已關閉,請在 Cloud Shell 啟用連往 VM 的新 SSH 連線:
TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)")
gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
- 如有必要,對顯示的每個問題按下 Enter 或 Return 鍵,使用預設的輸入內容。
Cloud Shell 工作階段現在會在 VM 內執行。
- 在 VM 的殼層,設定必要殼層變數:
export PROJECT_NAME=$(gcloud config get-value project)
export ORG=${PROJECT_NAME}
export INSTANCE_NAME=eval-instance
export NAT_ADDR_NAME=eval-instance-ip
export INTERNAL_LB_IP=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/instances/${INSTANCE_NAME}" | jq ".host" --raw-output)
export EVAL_ENVGROUP_HOSTNAME=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/envgroups/eval-group" | jq ".hostnames[0]" --raw-output)
export NAT_IP_ADDRESS=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/instances/${INSTANCE_NAME}/natAddresses/${NAT_ADDR_NAME}" | jq ".ipAddress" --raw-output)
echo "INTERNAL_LB_IP=${INTERNAL_LB_IP}"
echo "EVAL_ENVGROUP_HOSTNAME=${EVAL_ENVGROUP_HOSTNAME}"
echo "NAT_IP_ADDRESS=${NAT_IP_ADDRESS}"
記下 NAT_IP_ADDRESS 的值。
NAT_IP_ADDRESS 是 NAT 公開 IP 位址。現在執行階段執行個體呼叫後端服務時,會使用這個位址。後端服務可將這個已知 IP 位址加入許可清單。
注意:這個 DNS 項目會使用私人 DNS 可用區和私人 IP 位址。私人 DNS 項目無法在 apigeex-vpc 網路外解析,私人 IP 位址則無法透過 Cloud Shell 或 apigeex-vpc 網路外的 IP 位址存取。
- 在 eval 環境呼叫已部署的 test-nat API Proxy:
curl -k "https://${EVAL_ENVGROUP_HOSTNAME}/test-nat"
-k 選項會告知 curl 越過 TLS 憑證驗證。內部負載平衡器使用的憑證為自行簽署,而不是由信任的憑證授權單位 (CA) 建立。
注意:
在正式環境中,切勿使用 -k 選項略過憑證驗證。
curl 指令應傳回 test-nat Proxy 產生的回應,內容大致如下:
{
"origin": "10.0.0.2,10.0.0.5,10.0.0.6, 104.198.6.224"
}
origin 欄位會顯示多個 IP 位址。其中最後一個 IP 位址現在是執行階段執行個體專屬 NAT 位址。
- 使用下列指令透過 Apigee API 擷取 NAT 位址,確認 NAT IP 位址相符:
curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/instances/${INSTANCE_NAME}/natAddresses/${NAT_ADDR_NAME}"
恭喜!
您學會從 Apigee API 說明文件呼叫 Apigee API,並使用 Apigee API 為執行階段執行個體建立及啟用 NAT IP 位址。此外,您建立了 API proxy 來呼叫 httpbin IP 位址服務。最後,您驗證了後端顯示的 IP 位址就是您設定的 NAT IP 位址。
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 1 月 29 日
實驗室上次測試日期:2025 年 1 月 29 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。