arrow_back

API Gateway:Qwik Start

登录 加入
访问 700 多个实验和课程

API Gateway:Qwik Start

实验 1 小时 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP872

Google Cloud 自學實驗室標誌

總覽

API Gateway 透過明確定義的 REST API,讓您為服務提供安全的存取機制。無論服務實作機制為何,都能確保存取方式一致。一致的 API 可帶來下列好處:

  • 方便應用程式開發人員使用您的服務
  • 可讓您變更後端服務實作,而不影響公開 API
  • 讓您充分運用 Google Cloud 內建的擴充、監控和安全性功能

在本實驗室中,您將在 API Gateway 上部署 API,確保後端服務的流量安全。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 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 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

設定區域

設定這個實驗室的專案區域:

gcloud config set compute/region {{{project_0.default_region | "REGION"}}}

啟用必用的 API。

  1. 在 Cloud 控制台的「導覽選單」「導覽選單」圖示中,依序點選「API 和服務」>「程式庫」

  2. 在「搜尋」列中輸入「api gateway」,然後選取「API Gateway API」圖塊。

  3. 接著在下個畫面點選「啟用」按鈕。

工作 1:部署 API 後端

API Gateway 位於已部署的後端服務前方,負責處理所有傳入的要求。在本實驗室中,API Gateway 會將來電轉送至名為 helloGET 的 Cloud Functions 後端,其中包含的函式如下:

/** * HTTP Cloud Function. * This function is exported by index.js, and is executed when * you make an HTTP request to the deployed function's endpoint. * * @param {Object} req Cloud Function request context. * More info: https://expressjs.com/en/api.html#req * @param {Object} res Cloud Function response context. * More info: https://expressjs.com/en/api.html#res */ exports.helloGET = (req, res) => { res.send('Hello World!'); };
  1. 在 Cloud 控制台中,複製 Cloud Functions 範例存放區:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
  1. 變更為包含 Cloud Functions 程式碼範例的目錄:
cd nodejs-docs-samples/functions/helloworld/helloworldGet
  1. 如要使用 HTTP 觸發條件部署函式,請在包含函式的目錄中執行下列指令:
gcloud functions deploy helloGET --runtime nodejs20 --trigger-http --allow-unauthenticated --region {{{project_0.default_region | "REGION"}}}
  • 如果系統提示您啟用 API,請輸入 Y
注意:如果系統要求您授權 gcloud 指令使用憑證,請點選「Authorize」。部署 Cloud 函式需要幾分鐘的時間。請等待作業完成後再繼續操作 警告:如果收到 IamPermissionDeniedException 錯誤,請重新執行上述指令。

點選「Check my progress」,確認目標已達成。 部署 API 後端

工作 2:測試 API 後端

  1. 當函式完成部署時,記下 httpsTrigger 的 url 屬性,或使用下列指令找到它:
gcloud functions describe helloGET --region {{{project_0.default_region | "REGION"}}}

輸出內容應類似下方的網址,其中 PROJECT_ID 是專案專屬的值。

  1. 將 PROJECT_ID 設為變數:
export PROJECT_ID={{{project_0.project_id}}}
  1. 前往該網址,叫用 Cloud 函式。您應該會看到「Hello World!」訊息做為回應:
curl -v https://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET

點選「Check my progress」,確認目標已達成。 測試 API 後端

建立 API 定義

API Gateway 會使用 API 定義,將呼叫轉送至後端服務。您可以使用包含特殊註解的 OpenAPI 規格,定義所需的 API Gateway 行為。本快速入門導覽課程的 OpenAPI 規格包含 Cloud Functions 後端的轉送指示。

  1. 從 Cloud Shell 返回主目錄:
cd ~
  1. 建立名為 openapi2-functions.yaml 的新檔案:
touch openapi2-functions.yaml
  1. 複製下列 OpenAPI 規格的內容,並將其貼到新建立的檔案中:
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID description description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET responses: '200': description: A successful response schema: type: string
  1. 請設定下列環境變數:
export API_ID="hello-world-$(cat /dev/urandom | tr -dc 'a-z' | fold -w ${1:-8} | head -n 1)"
  1. 執行下列指令,在 OpenAPI 規格檔案中替換上個步驟設定的變數:
sed -i "s/API_ID/${API_ID}/g" openapi2-functions.yaml sed -i "s/PROJECT_ID/$PROJECT_ID/g" openapi2-functions.yaml

工作 3:建立閘道

現在您已準備好在 API Gateway 中建立及部署閘道。

  1. 在頂端的搜尋列輸入 API Gateway,然後從顯示的選項中選取。

  2. 點選「建立閘道」。接著在「API」部分:

  • 確認「選取 API」輸入內容設為「建立新的 API」
  • 在「顯示名稱」部分輸入 Hello World API
  • 在「API ID」部分,請再次執行下列指令來取得 API ID,然後輸入至「API ID」欄位:
export API_ID="hello-world-$(cat /dev/urandom | tr -dc 'a-z' | fold -w ${1:-8} | head -n 1)" echo $API_ID
  1. 在「API 設定」部分:
  • 確認「選取設定」輸入內容設為「建立新的 API 設定」
  • 請按照下列步驟上傳先前建立的 openapi2-functions.yaml 檔案。
  1. 在 Cloud Shell 中執行下列指令:
cloudshell download $HOME/openapi2-functions.yaml
  1. 按一下「下載」
注意: 檔案 openapi2-functions.yaml 已下載至本機。
  1. 選取「瀏覽」,然後從瀏覽器的下載位置選取檔案:
  • 在「顯示名稱」欄位中輸入 Hello World Config
  • 確認「選取服務帳戶」輸入內容設為「Compute Engine 預設服務帳戶」
  1. 在「閘道詳細資料」部分:
  • 在「顯示名稱」欄位中輸入 Hello Gateway
  • 將「位置」下拉式選單設為「
  1. 點選「建立閘道」
注意: 建立閘道作業需要幾分鐘 (約 10 分鐘) 才能完成。如要查看建立和部署程序的狀態,可以點按主導覽列中的「通知」圖示,顯示狀態通知,如下圖所示。請確認圖示狀態旁有綠色勾號,再繼續操作。

點選「Check my progress」,確認目標已達成。 建立閘道

測試 API 部署作業

現在,您可以使用部署閘道時產生的網址來傳送要求至 API。

  1. 在 Cloud Shell 中輸入下列指令,擷取 API Gateway 代管的新 API 的 GATEWAY_URL
export GATEWAY_URL=$(gcloud api-gateway gateways describe hello-gateway --location {{{project_0.default_region | "REGION"}}} --format json | jq -r .defaultHostname)
  1. 執行下列指令,確認已設定 GATEWAY_URL 環境變數:
echo $GATEWAY_URL

如果不是,代表您需要等候更久,API Gateway 才會完成部署。

  1. 執行下列 curl 指令,確認傳回的回應是 Hello World!
curl -s -w "\n" https://$GATEWAY_URL/hello

工作 4:使用 API 金鑰確保存取安全

如要安全地存取 API 後端,請產生與專案相關聯的 API 金鑰,並授予該金鑰呼叫 API 的存取權。如要建立 API 金鑰,請執行下列操作:

  1. 在 Cloud 控制台中,依序前往「API 和服務」>「憑證」
  2. 選取「建立憑證」,然後從下拉式選單中選取「API 金鑰」。「已建立 API 金鑰」對話方塊中會顯示您新建立的金鑰。

建立憑證下拉式選單。

點選「Check my progress」,確認目標已達成。 使用 API 金鑰確保存取安全

  1. 從對話方塊複製 API 金鑰,然後點選「關閉」

  2. 在 Cloud Shell 執行下列指令,將 API 金鑰值儲存起來:

export API_KEY=REPLACE_WITH_COPIED_API_KEY

接著為服務啟用 API 金鑰支援功能。

  1. 在 Cloud Shell 中,使用下列指令取得剛建立的 Managed Service 名稱:
MANAGED_SERVICE=$(gcloud api-gateway apis list --format json | jq -r .[0].managedService | cut -d'/' -f6) echo $MANAGED_SERVICE
  1. 接著使用剛建立的 API 的「代管服務」名稱 ,執行下列指令,為服務啟用 API 金鑰支援功能:
gcloud services enable $MANAGED_SERVICE

修改 OpenAPI 規格,採用 API 金鑰安全性機制

在本節中,請修改已部署 API 的 API 設定,對所有流量強制執行 API 金鑰驗證安全性政策。

  1. security 類型和 securityDefinitions 區段新增至名為 openapi2-functions2.yaml 的新檔案,如下所示:
touch openapi2-functions2.yaml
  1. 複製下列 OpenAPI 規格的內容,並將其貼到新建立的檔案中:
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID description description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET security: - api_key: [] responses: '200': description: A successful response schema: type: string securityDefinitions: api_key: type: "apiKey" name: "key" in: "query"
  1. 執行下列指令,在 OpenAPI 規格檔案中替換上個步驟設定的變數:
sed -i "s/API_ID/${API_ID}/g" openapi2-functions2.yaml sed -i "s/PROJECT_ID/$PROJECT_ID/g" openapi2-functions2.yaml
  1. 下載更新後的 API 規格檔案,您將在下一個步驟中使用該檔案更新 Gateway 設定:
cloudshell download $HOME/openapi2-functions2.yaml
  1. 按一下「下載」

工作 5:建立新的 API 設定並部署至現有閘道

  1. 在 Cloud 控制台中開啟 API Gateway 頁面 (依序點選「導覽選單」>「API Gateway」)。
  2. 從清單中選取 API,即可查看詳細資料。
  3. 選取「閘道」分頁標籤。
  4. 從可用的閘道清單中選取「Hello Gateway」
  5. 按一下「閘道」頁面頂端的「編輯」
  6. 在「API 設定」下方,將下拉式選單變更為「建立新的 API 設定」
  7. 在「上傳 API 規格」輸入方塊中,點選「瀏覽」並選取 openapi2-functions2.yaml 檔案。
  8. 在「顯示名稱」欄位輸入 Hello Config
  9. 在「選取服務帳戶」部分,選取「Qwiklabs 使用者服務帳戶」
  10. 按一下「更新」
注意: 更新閘道作業可能需要幾分鐘才能完成。如要查看建立和部署程序的狀態,可以點按主導覽列中的「通知」圖示,顯示狀態通知,如下圖所示。請確認圖示狀態旁有綠色勾號,再繼續操作。

點選「Check my progress」,確認目標已達成。 建立新的 API 設定並部署至現有閘道

工作 6:使用 API 金鑰測試呼叫

  1. 如要使用 API 金鑰進行測試,請執行下列指令:
export GATEWAY_URL=$(gcloud api-gateway gateways describe hello-gateway --location {{{project_0.default_region | "REGION"}}} --format json | jq -r .defaultHostname) curl -sL $GATEWAY_URL/hello

由於 curl 呼叫未提供 API 金鑰,因此您應該會看到類似下列錯誤的回應: UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity)。請使用 API 金鑰或其他形式的 API 消費者身分來呼叫這個 API。

  1. 執行下列 curl 指令,並使用先前建立的 API 金鑰,透過 key 查詢參數呼叫 API:
curl -sL -w "\n" $GATEWAY_URL/hello?key=$API_KEY

如果沒有設定 API_KEY 環境變數,可以從左側選單依序前往「API 和服務」>「憑證」,取得 API 金鑰。金鑰會顯示在「API 金鑰」專區。

API 傳回的回應現在應為 Hello World!

注意:您可能需要多次執行這個指令,才能獲得預期的結果。

點選「Check my progress」,確認目標已達成。 使用 API 金鑰測試呼叫

恭喜!

您已成功使用 API Gateway 保護 API 後端。現在您可以產生其他 API 金鑰,開始加入新的 API 用戶端。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 10 月 9 日

實驗室上次測試日期:2024 年 10 月 9 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。