GSP906

總覽
在這個實驗室,您將瞭解如何把新的環境和環境群組新增至 Apigee X 機構。
「環境」是 API Proxy 執行階段的執行作業結構定義。API Proxy 必須部署至環境,才能透過網路存取該 Proxy 公開的 API。
「環境群組」是環境的邏輯分組。主機名稱是在環境群組中定義,Apigee 會根據主機名稱,將要求轉送至群組中的環境。接著,API Proxy 會處理要求。這個 Proxy 部署在環境群組中的一個環境,且有相符的基準路徑。
本實驗室的操作說明也適用於將環境和環境群組新增至付費機構。
目標
在這個實驗室,您將瞭解如何執行下列工作:
- 將第二個環境新增至 Apigee X 機構
- 將第二個環境群組新增至 Apigee X 機構,並指派環境和主機名稱
- 將環境部署至執行階段的執行作業結構定義
- 在各環境部署及呼叫 API Proxy
設定和需求
瞭解以下事項後,再點選「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:檢查 eval 環境和環境群組
在這項工作,您將使用 Apigee 控制台來探索環境和環境群組。
Apigee X 的評估機構最初會包含一個名為 eval 的環境,以及一個名為 eval-group 的環境群組。eval 環境是 eval-group 環境群組的成員。
- 前往 Cloud 控制台的 Apigee UI。
- 依序前往「管理」>「環境」。
- 在「環境」分頁,點選「eval」環境。
eval 環境已設為 eval-group 環境群組的成員。
eval 環境標示為「Ready for deployment」,表示 API Proxy 可部署至該環境。
- 依序前往「管理」>「環境」>「環境群組」。
- 在 eval-group 環境,依序點按三點圖示和「編輯」。
eval-group 環境群組目前只列出一個主機名稱 (eval.example.com),但可使用多個主機名稱。
eval-group 環境群組目前只有 eval 環境,但環境群組可以包含多個環境。
- 按一下「取消」。
工作 2:建立 prod 環境
在這項工作,您將建立新環境。
- 依序前往「管理」>「環境」。
- 在「環境」分頁,點選「+ 建立環境」。
- 在「顯示名稱」和「名稱」欄位中指定 prod。其他欄位應維持不變。
- 點按「建立」。
您應該會收到環境已定義的訊息。新 prod 環境會標示為「Pending Provisioning」。
不久後,您應該會看到環境已可使用的訊息,且環境不再標示為「Pending Provisioning」。
點選「Check my progress」,確認目標已達成。
建立 prod 環境
工作 3:建立 prod-group 環境群組
在這項工作,您將建立新的環境群組。
- 在左側導覽窗格,依序選取「管理」>「環境」。
- 在「環境」窗格,選取「環境群組」,然後點選「+ 建立環境群組」。
- 將環境群組命名為 prod-group。
- 如要查看 Hostnames,請使用以下連結:
prod.example.com
- 在「Environments (Optional)」部分選取「prod」,然後點選「Ok」。
- 點按「建立」。
點選「Check my progress」,確認目標已達成。
建立 prod-group 環境群組
工作 4:等待執行個體佈建完成
在這項工作,您將等待 Apigee 評估機構佈建完成。
Apigee 機構佈建作業需要較長時間。您可以使用 Apigee API 監控機構的佈建進度。
啟動監控指令碼
- 在右上方的工具列,點按「啟用 Cloud Shell」圖示
。
- 如果出現提示訊息,請點選「繼續」。
佈建並連線至 Cloud Shell 的作業需要一些時間。連線建立完成即代表已通過驗證,而且專案已設為您的「PROJECT_ID」。
- 在 Cloud Shell,確認變數是否包含您的 Apigee 機構名稱:
echo ${GOOGLE_CLOUD_PROJECT}
GOOGLE_CLOUD_PROJECT 變數應包含專案名稱,也就是 Apigee 機構名稱。
-
如果未設定 GOOGLE_CLOUD_PROJECT 變數,請使用類似下方的指令手動設定變數:
export GOOGLE_CLOUD_PROJECT={{{project_0.project_id |Project ID}}}
- 在 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,判斷是否已建立執行階段執行個體,然後等待 eval 環境附加至該執行個體。
- 如果出現提示訊息,請按一下「授權」。
畫面顯示 ***ORG IS READY TO USE*** 文字時,部署至 eval 環境的 Proxy 即可接受流量。
注意:在等待執行個體和環境建立完全的期間,請瞭解 Apigee X 使用者和角色。請注意實驗室剩餘時間,並定期檢查 Cloud Shell 輸出內容,瞭解何時可以測試機構。
使用者與角色
您可以使用使用者和角色授予 Apigee 存取權。「使用者」代表經過驗證的帳戶,可存取 Apigee 機構和機構內的實體,例如環境和 API Proxy。系統會根據指派的「角色」類型,向使用者授予功能。
如要將新使用者新增至 Apigee 機構,請先在 Cloud 專案授予使用者「帳戶」存取權,然後視需要透過 Apigee UI 授予存取權。Google Cloud 資源階層中,資源權限會由該資源內含的資源沿用。
如果將 Apigee 角色指派給 Cloud 專案的使用者,該使用者就能以該角色存取機構內的所有 Apigee 資源 (包括所有環境)。在 Apigee UI,也可將 Apigee 角色指派給特定環境的使用者。這項權限會加到專案層級的角色。
為遵循最小權限原則,應在專案層級指定使用者的最低權限,並在環境層級授予更多權限。
這張圖片說明這個存取模式的沿用機制:

Apigee 角色
下表彙整了預先定義的 Apigee 角色。
| Apigee 角色 |
說明 |
| Apigee 機構管理員 |
具備 Apigee 機構中所有 Apigee 資源的完整存取權。 |
| Apigee 唯讀管理員 |
具備 Apigee 機構中所有 Apigee 資源的唯讀存取權。 |
| Apigee 數據分析資料編輯者 |
為 Apigee 機構建立及分析 API Proxy 流量報表。可編輯查詢和報表。 |
| Apigee 數據分析資料檢視者 |
Apigee 數據分析使用者。無法編輯查詢或報表。 |
| Apigee API 管理員 |
建立及測試 API Proxy 的開發人員。 |
| Apigee 環境管理員 |
在環境部署及取消部署 API Proxy。 |
| Apigee 開發人員管理員 |
管理開發人員的 API 存取權。 |
如要進一步瞭解各 Apigee 角色的 API 權限,請參閱 Apigee 角色指南。
工作 5:將 prod 環境新增至執行階段執行個體
在這項工作,您會將 prod 環境新增至執行階段執行個體,讓部署至 prod 的 Proxy 能夠執行。
將 prod 環境連結至執行個體
- 確認在 Cloud Shell 執行的指令已傳回
***ORG IS READY TO USE***。
- 執行下列指令,開始將 prod 環境連至執行階段:
export INSTANCE_NAME=eval-instance; curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X POST "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" -d '{ "environment": "prod" }' | jq
如果收到錯誤訊息,請查看訊息詳細資料:
- 「NOT_FOUND」錯誤可能表示 prod 環境未建立成功。
- 如果畫面出現「FAILED_PRECONDITION」錯誤,並顯示「the resource is locked by another operation」訊息,表示評估環境的完整佈建作業可能尚未完成。
成功開始將 prod 環境附加至執行階段的程序後,您應該會看到系統傳回的訊息,狀態為「IN_PROGRESS」,如下所示:
{
"name": "organizations/qwiklabs-gcp-01-e12f9fd402f4/operations/c4e1a09f-05d2-4c46-95ed-559457507379",
"metadata": {
"@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
"operationType": "INSERT",
"targetResourceName": "organizations/qwiklabs-gcp-01-e12f9fd402f4/instances/eval-instance/attachments/c2e04a79-15e6-4656-9d25-f618080b57fb",
"state": "IN_PROGRESS"
}
}
- 使用下列指令檢查 prod 附件的狀態:
export ATTACHING_ENV=prod; export INSTANCE_NAME=eval-instance; echo "waiting for ${ATTACHING_ENV} attachment"; 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 == \"${ATTACHING_ENV}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ATTACHING_ENV}" ]] || break; echo -n "."; sleep 5; done; echo; echo "***${ATTACHING_ENV} ENVIRONMENT ATTACHED***";
這組指令會使用 Apigee API,判斷 prod 環境是否已附加至執行個體,以及部署至 prod 的 Proxy 是否已準備好處理流量。
畫面出現 ***prod ENVIRONMENT ATTACHED*** 文字時,部署至 prod 環境的 Proxy 即可接受流量。
讓指令繼續執行,然後進行下一個工作。
點選「Check my progress」,確認目標已達成。
將 prod 環境連至執行個體
工作 6:建立 API Proxy
在這項工作,您會建立 API Proxy,使用流程變數傳回 API 呼叫的主機名稱和環境。
- 前往 Cloud 控制台的 Apigee UI。
- 在左側導覽選單,依序選取「Proxy 開發」>「API Proxy」。
- 點選「+ 建立」,即可啟動 Proxy 精靈。
- 在「Proxy template」部分,選取「No Target」。
注意:請勿在「OpenAPI Spec template」部分選取「No Target」。
-
請指定下列屬性:
| 屬性 |
值 |
| Proxy 名稱 |
test-env |
| 基本路徑 |
/test-env |
-
點選「下一步」。
-
保留其他設定的預設值,然後按一下「建立」。
系統會產生 API Proxy,您將在稍後部署。
- 點選「Develop」分頁標籤。
這個分頁是用來編輯 API Proxy。「Proxy Endpoint PreFlow」已選取。
-
在「導覽」選單中,依序點選「Proxy endpoints」>「Preflow」。
-
在「Flow」窗格的「Response」部分,點選「PreFlow」旁的「+」圖示。

您將在 PreFlow 回應中新增政策步驟。政策會執行特定的有限管理功能。
- 選取「建立新政策」,然後在「調節」
部分點選「Assign Message」,接著將「名稱」和「顯示名稱」設為 AM-SetResponse,然後按一下「新增」。

- 在「政策」部分選取「AM-SetResponse」。這會將新的 AssignMessage 政策附加至 API Proxy。您應該會在「流程」窗格下方看到 AssignMessage 程式碼:

- 將 AssignMessage 程式碼替換為下列內容:
<AssignMessage continueOnError="false" enabled="true" name="AM-SetResponse">
<Set>
<Payload contentType="application/json">{
"environment": "{environment.name}",
"hostname": "{request.header.Host}"
}
</Payload>
</Set>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>
這項政策會建立回應,傳回環境名稱和主機名稱。Proxy flow 變數 environment.name 包含已部署的 Proxy 環境,該 Proxy 接收了流量,而變數 request.header.Host 則包含 Host 標頭,指出 API 呼叫所用的主機名稱。
-
按一下「儲存」。
-
點選「部署」,然後在「環境」選取「eval」,接著依序點按「部署」和「確認」。
這會將 Proxy 部署至 eval 環境。
- 再次點選「部署」,然後在「環境」選取「prod」,接著依序點按「部署」和「確認」。

這會將 Proxy 部署至 prod 環境。
- 按一下「總覽」分頁標籤。
- 等待兩項部署作業完成。
將 Proxy 部署至兩個環境後,「總覽」分頁的「部署作業」部分應如下所示:

注意:如果幾分鐘後,Proxy 仍未部署至 prod 環境,可能是 prod 環境尚未完成與執行階段執行個體的連結。您可以返回 Cloud Shell,等待指令傳回「***prod ENVIRONMENT ATTACHED***」來檢查狀態。
點選「Check my progress」,確認目標已達成。
建立 API Proxy
工作 7:測試 prod 和 eval 環境
在這項工作中,您會呼叫 test 和 prod 環境。
系統已自動建立虛擬機器 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)
export PROD_ENVGROUP_HOSTNAME=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${ORG}/envgroups/prod-group" | jq ".hostnames[0]" --raw-output)
echo "INTERNAL_LB_IP=${INTERNAL_LB_IP}"
echo "EVAL_ENVGROUP_HOSTNAME=${EVAL_ENVGROUP_HOSTNAME}"
echo "PROD_ENVGROUP_HOSTNAME=${PROD_ENVGROUP_HOSTNAME}"
PROD_ENVGROUP_HOSTNAME 是從您在先前工作建立的 prod-group 環境群組擷取而來。
- 在 eval 環境呼叫部署的 test-env API Proxy:
curl -i -k --resolve "${EVAL_ENVGROUP_HOSTNAME}:443:${INTERNAL_LB_IP}" \
"https://${EVAL_ENVGROUP_HOSTNAME}/test-env"
--resolve 設定會將傳送至環境群組主機名稱的指令強制解析為內部負載平衡器 IP 位址,而不使用 DNS 解析 IP 位址。-k 選項會略過內部負載平衡器的 TLS 憑證驗證,因為內部負載平衡器未代管含有您所用主機名稱的 TLS 憑證。
curl 指令應傳回 test-env Proxy 產生的回應,內容大致如下:
HTTP/2 200
content-type: application/json
content-length: 66
date: Tue, 10 Aug 2021 17:02:53 GMT
server: apigee
{
"environment": "eval",
"hostname": "eval.example.com"
}
- 在 prod 環境呼叫部署的 test-env API Proxy:
curl -i -k --resolve "${PROD_ENVGROUP_HOSTNAME}:443:${INTERNAL_LB_IP}" \
"https://${PROD_ENVGROUP_HOSTNAME}/test-env"
這次環境和主機名稱都應傳回 prod,而不是 eval。
恭喜!
您在這個實驗室為機構建立了新的環境和環境群組,並將環境附加至執行階段執行個體,還接著建立並部署 API Proxy。最後,您使用 eval 和 test 環境主機名稱呼叫了 Proxy,而且該 API Proxy 能偵測到呼叫的環境。
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 9 月 23 日
實驗室上次測試日期:2025 年 9 月 23 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。