Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
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 的 API 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 端點預先流程中,新增配額政策並命名為 Q-EnforceQuota。
政策應包含下列步驟:
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 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one