准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Proxy the Cloud Translation API
/ 20
Change the API request and response
/ 20
Add API key verification and quota enforcement
/ 20
Add message logging
/ 20
Rewrite a backend error message
/ 20
在挑戰研究室中,您會在特定情境下完成一系列任務。挑戰研究室不會提供逐步說明,您將運用從課程研究室學到的技巧,自行找出方法完成任務!自動評分系統 (如本頁所示) 將根據您是否正確完成任務來提供意見回饋。
在您完成任務的期間,挑戰研究室不會介紹新的 Google Cloud 概念。您須靈活運用所學技巧,例如變更預設值或詳讀並研究錯誤訊息,解決遇到的問題。
若想滿分達標,就必須在時限內成功完成所有任務!
本實驗室適合已完成「透過 Apigee X 開發及保護 API」課程實驗室的學員。準備好迎接挑戰了嗎?
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
您是國際零售商 Cymbal Shops 的雲端工程師。Cymbal Shop 將經營重心放在全球銷售,認為翻譯服務是拓展國際業務的關鍵工具。您的職責是建立翻譯 API 的初始版本。
公司期望您已具備相關技能與知識,因此不會提供逐步指南。
您將在專案的 Apigee 組織中,建立新的 Apigee API Proxy 和其他資源。請詳閱每個工作說明,然後建立必要功能。
儲存 API Proxy 的變更時,可能會顯示錯誤訊息:Could not save new revision。如果點按「儲存」下拉式選單按鈕 (),然後選取「另存為新的修訂版本」,應會看到錯誤訊息指出哪裡無效。
Cymbal Shops 決定使用 Google Cloud 的 Translation API 做為 API Proxy 的後端服務。
必要操作:
apigee-proxy」建立服務帳戶,然後在「Logging」授予「記錄寫入者」角色。https://translation.googleapis.com/language/translate/v2)。https://www.googleapis.com/auth/cloud-translation。如果指令碼傳回 ORG IS READY TO USE,即可繼續執行後續步驟。
您可以使用主機名稱「eval.example.com」呼叫 Apigee 組織中的 eval 環境。這個 DNS 項目僅適用於內部網路,因此必須使用已為您建立的 VM。
如果系統要求您授權,請點按「授權」。對於透過 gcloud 指令提出的每個問題,按下 Enter 或 Return 鍵來使用預設輸入內容。
順利完成工作 1 後,應能使用下列 curl 指令翻譯文字:
回應內容大致如下:
點選「Check my progress」,確認目標已達成。
Cymbal Shops 想建立的 API 與 Translation API 提供的介面不同,因此請您修改兩項 Translation API 呼叫。
第一個呼叫用來擷取有效語言清單。
Cloud Translation API 要求:
Cloud Translation API 回應:
translate-v1 要求:
translate-v1 回應:
API Proxy 必須將 GET 取代為 POST、移除 data 和 languages 回應欄位,並從屬性集取得譯文語言代碼。工作 1 的 Authentication 區段會自動新增存取權杖。
第二個呼叫會將文字翻譯成指定語言。
Cloud Translate API 要求:
Cloud Translate API 回應:
translate-v1 要求:
translate-v1 回應:
API Proxy 必須透過 lang 查詢參數取得譯文語言,並變更傳入和翻譯文字的欄位名稱。您可以選擇省略 translate-v1 要求中的 lang 查詢參數。這樣一來,系統會透過屬性集的屬性取得譯文語言。
必要操作:
在 API Proxy 建立名稱為「language.properties」的屬性集,其中應有兩個屬性:output (值為 es) 和 caller (值為 en)。caller 屬性會在列出 name 欄位使用的語言時,指定譯文語言;output 屬性則會在未提供 lang 查詢參數時,指定預設使用的譯文語言。
在 Proxy 端點中,為 POST / 資源建立路徑和動詞條件式流程,並命名為 translate。
在 Proxy 端點中,為 /languages 資源建立路徑 (無動詞) 條件式流程,並命名為 getLanguages。請勿加入動詞。您會將要求的動詞從 GET (用於輸入 Proxy 的內容) 改成 POST (後端需要的元素)。如果條件包含動詞,流程中的回應政策就不會執行,因為 request.verb 不再等於 GET。
建立 AssignMessage 政策並命名為 AM-BuildTranslateRequest,建構用於 translate 條件式流程的後端要求。
政策應符合以下幾點:
包含附範本的 AssignVariable 來建立變數,稍後會用於記錄訊息。其中,text 變數應使用 jsonPath 訊息範本凾式擷取要求中的 text 欄位。
使用 firstnonnull 訊息範本凾式建立 language 變數。如有指定 lang 查詢參數值,這個變數應包含該值;如未指定 lang 查詢參數,則應使用語言屬性集的 output 屬性設定譯文語言。
應使用 Set 區段設定後端服務所需的 JSON 酬載。您建立的兩個變數都會用於酬載。
[AssignTo] 元素應使用現有要求語言。
AssignMessage 政策中的 AssignVariable 區段應與下方類似:
AM-BuildTranslateResponse,以便使用 Translation API 回應為呼叫端建立回應。政策應符合以下幾點:
包含附 jsonPath 範本的 AssignVariable,以便建立 translated 變數來擷取 Translation API 回應中的 translatedText 欄位。提示:擷取這個欄位的 JSONPath 運算式為 $.data.translations[0].translatedText。
將 createNew 設為 true。
新的 JSON 酬載會使用 translated 變數。
AssignMessage 政策中的 AssignVariable 區段應與下方類似:
AM-BuildLanguagesRequest,建構用於 getLanguages 條件式流程的後端要求政策應符合以下幾點:
使用 Set 為後端要求設定正確的動詞和酬載。
應將 language 屬性集的 caller 屬性,做為後端酬載中的 target 欄位。
將 createNew 設為 true。
將後端要求酬載的內容類型設為 application/json。
AssignMessage 政策中的 AssignVariable 區段應與下方類似:
JS-BuildLanguagesResponse,為呼叫端建構回應。JavaScript 程式碼應使用下列步驟:response.content 變數。response.content 替換為步驟 3 中的 JSON。您的 JavaScript 程式碼應與下方類似:
語言清單:
翻譯成指定語言 (德文):
翻譯成預設語言 (西班牙文):
點選「Check my progress」,確認目標已達成。
這個 API 的存取權應僅限於已核准的應用程式,因此您將新增 VerifyAPI 金鑰政策和配額政策,限制要求數量。
必要操作:
建立 API 產品,並將名稱和顯示名稱設為 translate-product。這個 API 產品應具備公開存取權、會自動核准存取要求,且可在 eval 環境中使用。
在 API 產品「translate-product」中,新增一項作業來允許存取 translate-v1 Proxy,並使用 / 路徑允許存取任何要求 (包括 /)。允許的方法為 GET 和 POST。新增作業配額設定,將要求數量限制為每分鐘 10 個。
設定電子郵件地址為 joe@example.com 的開發人員。您可以自行選擇姓氏、名字和使用者名稱。
建立應用程式並命名為 translate-app,然後為該應用程式啟用 API 產品「translate-product」。該應用程式必須與 joe@example.com 開發人員建立關聯。
在 Proxy 端點預先流程中,新增 VerifyAPIKey 政策並命名為 VA-VerifyKey。每個要求都應包含 API 金鑰,並使用 Key 標頭傳送。
在 Proxy 端點預先流程中,新增 Quota 政策並命名為 Q-EnforceQuota。
政策應包含下列步驟:
calendar 類型,且 calendar 類型須有 StartTime 元素。UseQuotaConfigInAPIProduct 使用 API 產品的配額。如果 API 產品未指定配額,則預設為每小時 5 個要求。完成這些變更後,如果未在 Key 標頭指定有效的 API 金鑰,要求應會傳回錯誤。
失敗 (沒有 API 金鑰):
失敗 (API 金鑰無效):
成功 (KEY 變數設為有效 API 金鑰:KEY=<get this from the earlier step when setting up a Developer App>):
點選「Check my progress」,確認目標已達成。
如要瞭解翻譯服務使用情形,可以設定 MessageLogging 政策來記錄每則翻譯訊息。
必要操作:
translate 條件式流程中,新增 MessageLogging 政策並命名為 ML-LogTranslation。政策必須在 AM-BuildTranslateResponse 步驟後執行。LogName 值應為:
記錄訊息的 contentType 應為 text/plain,且訊息內容應如下所示:
這則訊息需要 language、text 和 translated 變數。這些變數是透過 AM-BuildTranslateRequest 和 AM-BuildTranslateResponse 政策建立。
在 Google Cloud 控制台的「Logging」頁面中,驗證記錄訊息。請使用「logName : "translate"」查詢,只查看翻譯記錄。
成功新增 MessageLogging 政策後,使用下列 curl 指令:
該 curl 指令應會建立含下列內容的記錄訊息:
點選「Check my progress」,確認目標已達成。
如果傳送至 Translation API 的 target 參數無效,系統會傳回 400 Bad Request 錯誤訊息:
這則錯誤訊息會造成呼叫端混淆,因此請重寫錯誤訊息。
必要操作:
在 FaultRules 區段新增 FaultRule。請務必設定 FaultRule 的 Condition。這樣一來,當 fault.name 為 ErrorResponseCode,FaultRule 才能執行。
建立 AssignMessage 政策並命名為 AM-BuildErrorResponse,然後附加至 FaultRule。請使用以下政策設定:
附加政策後,目標端點的 FaultRules 區段應與下方類似:
有效要求 (如下所示) 應仍可運作:
如果語言查詢參數無效 (如下所示),系統應會傳回重寫的錯誤訊息:
點選「Check my progress」,確認目標已達成。
在這個挑戰實驗室課程,您展現了 Apigee X API 開發和安全性方面的知識。
這個自學實驗室是「透過 Apigee X 開發及保護 API」任務的一部分。完成這項技能徽章任務即可獲得上方的徽章,表彰您的成果。您可以在履歷表和社群平台張貼徽章,並加上 #GoogleCloudBadge 公開這項成就。
這個技能徽章任務是 Google Cloud API 開發人員學習路徑的一環。您可以報名「部署與管理 Apigee X」課程,繼續精進專業能力。
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 7 月 10 日
實驗室上次測試日期:2024 年 7 月 10 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验