1. 總覽
這個系列的程式碼研究室 (循序漸進的實作教學課程) 旨在協助開發人員瞭解部署應用程式時有哪些不同的選項。您將瞭解如何在簡單的網頁應用程式中使用 Google Cloud Translation API。這個應用程式可以在本機執行,或部署至 Cloud 無伺服器運算平台 (App Engine、Cloud Functions 或 Cloud Run)。
您將使用採用 Express.js 網路架構的 Node.js 執行 JavaScript 教學課程。您也將學到如何從我們的無伺服器平台存取 Google Cloud API。這個應用程式的所有版本都來自「神經無伺服器」開放原始碼存放區,其中包含這個應用程式的 Python 版本和獨立程式碼研究室。這個存放區也會託管類似的應用程式,方便開發人員瞭解如何從我們的無伺服器平台存取非雲端的 Google API。
本程式碼研究室著重於將應用程式部署至上述粗體的平台。
你將瞭解如何
- 使用 Google Cloud API,尤其是 Cloud Translation API (advanced/v3)
- 在本機執行基本網頁應用程式,或部署至雲端無伺服器運算平台
軟硬體需求
- Google Cloud 專案,且具備有效的 Cloud Billing 帳戶
- 安裝在本機環境中執行的網路架構 ( 適用於 Python 教學課程的使用者 Flask,或為執行 JavaScript/Node.js 教學課程的人員使用 Express)
- 至少一個已啟用 Google Cloud 部署作業的無伺服器運算平台
- 基本程式設計技能 (Python 或 JavaScript/Node.js)
- 具備基本作業系統指令的知識
問卷調查
您會如何使用這個教學課程?
針對以 Python 或 Node.js 開發的經驗,您會給予什麼評價?
針對使用 Google Cloud 服務的經驗,您會給予什麼評價?
2. 設定和需求
自修環境設定
- 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。
- 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 不使用的字元字串,您可以隨時更新。
- 所有 Google Cloud 專案的專案 ID 均不得重複,且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常稱為
PROJECT_ID
),因此如果您不喜歡的話,請隨機產生一個,或者,您也可以自行嘗試看看是否可用。是「凍結」建立專案後 - 還有第三個值,也就是部分 API 使用的專案編號。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行這個程式碼研究室並不會產生任何費用,如果有的話。如要關閉資源,以免產生本教學課程結束後產生的費用,請按照任「清除所用資源」操作請參閱本程式碼研究室結尾處的操作說明。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
3. 啟用 Translation API
在本節中,您將大致瞭解如何啟用 Google API。在範例應用程式中,您將啟用 Cloud Translation API。也會啟用 App Engine、Cloud Functions 和/或 Cloud Run (加上 Cloud Artifact Registry),這取決於您要部署範例應用程式的目標平台。
啟用 Google API
簡介
無論您在應用程式中要使用哪個 Google API,都必須啟用 API。API 可透過指令列或 Cloud 控制台啟用。API 的啟用程序完全相同,因此您只要啟用一個 API,就能以同樣的方式執行其他 API。
選項 1: gcloud
指令列介面 (Cloud Shell 或本機環境)
雖然透過 Cloud 控制台啟用 API 較為常見,但有些開發人員偏好透過指令列完成所有事項。方法是查詢 API 的「服務名稱」。網址類似於:SERVICE_NAME
.googleapis.com
。您可以在支援的產品圖表中找到這些資訊,也可以利用 Google Discovery API,以程式輔助的方式查詢這些產品。
只要使用 Cloud Shell (或已安裝 gcloud
指令列工具的本機開發環境) 取得這些資訊,您就能啟用 API,方法如下:
gcloud services enable SERVICE_NAME.googleapis.com
範例 1:啟用 Cloud Vision API
gcloud services enable vision.googleapis.com
範例 2:啟用 Google App Engine
gcloud services enable appengine.googleapis.com
範例 3:透過單一要求啟用多個 API。舉例來說,如果本程式碼研究室的檢視者使用 Cloud Translation API 將應用程式部署至 App Engine、Cloud Functions 和 Cloud Run,指令列會是:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
這個指令會啟用 App Engine、Cloud Functions、Cloud Run 和 Cloud Translation API。此外,這個元件會啟用 Cloud Artifact Registry,因為必須在 Cloud Build 系統註冊容器映像檔,才能部署至 Cloud Run。
選項 2:Cloud 控制台
您也可以在 API 管理員中啟用 Google API。在 Cloud 控制台中,前往「API 管理員」,然後選取「程式庫」。
開始在搜尋列中輸入 API 名稱即可查看相符結果:
選取您要啟用的 API,然後按一下「Enable」按鈕:
無論您要使用哪一個 Google API,啟用所有 API 的程序都大同小異。
費用
許多 Google API 都無須付費即可使用,但大部分的 Google Cloud 產品與 API 使用都需要付費。啟用 Cloud API 時,系統可能會要求您提供有效的帳單帳戶。不過,部分 Google Cloud 產品提供的是「一律免費」項目層級,必須超過這個額度才會產生帳單費用。
GCP 新使用者符合免費試用資格,目前前 90 天可折抵 $300 美元。使用程式碼研究室通常不會產生太多費用,也不會產生任何費用,因此建議您先準備免費試用,直到準備好進行試用為止,特別是一次性優惠。無論您是否使用免費試用,都沒有效期限制,而且免費方案配額沒有期限。
啟用 API 前,使用者應先參考任何 API 的定價資訊 (例如 Cloud Vision API 定價 頁面),特別是該 API 是否提供免費方案,以及 API 的內容為何。只要不超過每日或每月的匯總上限,就不必支付任何費用。定價和免費方案會因 Google 產品群組 API 而異。範例:
- Google Cloud/GCP:每項產品的計費方式不盡相同,通常按用量計費;請參閱上方的免費方案資訊。
- Google 地圖:提供一系列 API,並為使用者提供每月$200 美元免費抵免額。
- Google Workspace (舊稱 G Suite) API:提供 Workspace 每月訂閱方案費用的用量 (設有一定上限的配額),因此無須直接支付 Gmail、Google 雲端硬碟、日曆、文件、試算表或簡報等應用程式的 API 使用費。
各項 Google 產品的計費方式各有不同,因此請務必參閱相應說明文件。
確認已啟用所需服務
確認 API 管理員中的 Cloud Translation API (如上所示)。如果您尚未透過指令列啟用無伺服器平台,可以在 Cloud 控制台的個別資訊主頁中進行這項操作:App Engine、Cloud Functions、Cloud Run。
雖然從 Cloud 控制台啟用 API 可以在視覺上提供豐富的資訊,但使用 gcloud
工具則可快速啟用 (需要幾秒鐘才能啟用所有服務):
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
進一步瞭解費用
上一節說明 Google API 的所有費用。我們可以用本教學課程的具體細節說明。雖然其每月配額並未列在整個「一律免費」的級別摘要頁面是 Translation API 的定價頁面,指出所有使用者每個月都能獲得固定的翻譯字元數量。如果未超過該門檻,API 不會產生任何費用。如要進一步瞭解使用 Google Cloud 無伺服器平台的費用,請參閱存放區的「費用」一節。「清理」部分結尾處,將說明如何在完成本程式碼研究室後停止產生帳單。
4. 取得範例應用程式的程式碼
下載 ZIP 或複製存放區
- 下載 ZIP 檔案,或使用
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
複製存放區 - 如果您沒有本機開發環境,而且想透過 Cloud Shell 執行本教學課程,可以使用相同
git clone
指令複製存放區。 - 您也可以透過綠色的「Code」按鈕存取 ZIP 檔案,如以下螢幕截圖所示:
您現在已擁有所有內容,請建立資料夾的完整副本來進行教學課程,因為您可能需要刪除或變更檔案。如需執行其他部署作業,您可以直接複製原始檔案,不必複製或重新下載。
5. 確認 Node.js 環境
如要設定 Node.js 環境,請按照下列步驟操作:
- 確認您已安裝節點的現代版本 (>=10) 和 NPM (>=6)
- 前往您複製存放區 (或解壓縮 ZIP 檔案) 的位置,然後前往
cloud/nodejs
資料夾 - 確認
package.json
存在,然後執行npm install
您可以檢查上述 #1 的指令列版本:
$ node -v v17.0.1 $ npm -v 8.1.0
6. 範例應用程式導覽
這個範例應用程式是簡單的 Google 翻譯衍生工具,會提示使用者以英文輸入文字,並翻譯成西班牙文的對應文字。
package.json
設定檔會指出應用程式需要哪些第三方套件 (請注意,套件版本可能會更新,而非此處所列版本):
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
現在請開啟 index.js
檔案,瞭解其運作方式。如在頂端和底部顯示授權註解的註解行,如下所示:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
require
提供架構和範本功能,以及 Cloud Translation API 用戶端程式庫。- 全域變數代表網頁應用程式、Cloud 專案 ID、Translation API 用戶端、父項「位置路徑」以及
SOURCE
和TARGET
語言。在本例中為英文 (en
) 和西班牙文 (es
),但您可以將這些值變更為 Cloud Translation API 支援的其他語言。 - 每對組合的第一個元素 (
SOURCE
和TARGET
) 是語言代碼,第二個元素則是語言名稱 (僅供顯示,因為與 API 無關)。 - 底部的幾行是將所有 HTTP 要求傳送至
translate()
,然後匯出app
應用程式物件。
最後,index.js
的中間是應用程式的核心,也就是 translate()
函式:
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
主要函式會擷取使用者輸入內容,並呼叫 Translation API 來執行繁重工作。以下將詳細說明:
- 重設表單的基本變數。這主要用於 GET 要求,因為 POST 要求會有資料取代這些要求。
- 如果是 POST,請擷取要翻譯的文字;如為空白,請建立代表 API 中繼資料要求的 JSON 結構。然後呼叫 API 以取得服務。
- 我們並未將
SOURCE[0]
傳入 API 至特定的英文來源。選擇不顯示原文語言後,就會要求 API 自動偵測原文語言 (請參閱說明文件中的sourceLanguageCode
)。 - 無論如何,將實際結果 (POST) 或沒有資料 (GET) 的格式設定為範本結構定義後,即可呈現成果。
應用程式的視覺部分位於範本 index.html
檔案中。它會顯示先前翻譯過的結果 (如為空白),接著在表單中要求翻譯內容:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
在教學課程的其餘部分,您可以選擇全部或全部四個選項來部署及執行這個應用程式。所有部署作業皆為選用,也就是說,您可以執行全部或所有部署作業。
- 在本機執行服務
- 部署至 App Engine (標準環境)
- 部署至 Cloud Functions
- 部署至 Cloud Run
7. 做法 1:在本機執行服務
程式碼研究室的這一節僅適用於本機執行。如果只要部署至雲端,請繼續前往下一節。
如要在本機執行範例應用程式,必須完成以下三個不同步驟:
- 建立服務帳戶
- 建立服務帳戶公開/私密金鑰組
- 下載憑證檔案和與應用程式程式碼組合
- 啟動服務
瞭解服務帳戶
服務帳戶是一種安全機制,可在存取雲端應用程式時,存取不屬於真人使用者的資料。部署至雲端時,所有 Google Cloud 運算平台 (無伺服器或其他方法) 都會提供預設服務帳戶,藉此縮短新手上路使用者開始使用雲端的時間。
預設服務帳戶具有一系列「透過紅帶處理」的權限。但在準備推出正式環境服務時,我們強烈建議使用者採用「最少權限」的最佳做法。但只建立含有足夠權限的使用者自行管理的服務帳戶,讓應用程式正常運作。無論本機部署為何,都沒有預設服務帳戶,因此您必須建立服務帳戶和服務帳戶金鑰 (實際上是公開/私密金鑰組),並將這些憑證提供給應用程式程式碼使用。
建立服務帳戶金鑰組及下載憑證檔案
按照這個頁面中的操作說明,建立用來在本機執行的服務帳戶和公開/私密金鑰組。建立服務帳戶金鑰時,系統會提示您提供所需的權限。請務必選取「roles/cloudtranslate.user
」,以便成功存取 API。
成功建立金鑰組後,系統會提示您下載服務帳戶金鑰檔案。呼叫 credentials.json
,然後移至應用程式頂層資料夾。現在,您必須指示 Cloud SDK「使用」這些憑證:請將 GOOGLE_APPLICATION_CREDENTIALS
環境變數設為指向該檔案。如要進一步瞭解這個程序,您也可以參閱這個頁面,瞭解服務帳戶使用情形。
啟動服務
準備好繼續時,請使用下列指令在本機啟動 Express 伺服器:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
請前往網路瀏覽器並前往 localhost:8080 連線,畫面會顯示如下的內容:
趕快翻譯,看看成效如何!
完成後,請使用 ^C (control-C) 結束伺服器,然後結束測試。恭喜!您能夠執行本機部署。不過別擔心,部署至雲端的作業容易多了。
疑難排解
你在要求翻譯時遇到這類錯誤嗎?
node:fs:2486 handleErrorFromBinding(ctx); ^ Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json' . . .
解決方案:這個錯誤表示您並未完成建立服務帳戶及下載公開/私密金鑰組檔案 credentials.json
。請返回 "選項 1:在本機執行服務」並完成這個程序,並在主資料夾中安裝 Crate,再繼續操作。
8. 選項 2:部署至 App Engine (標準環境)
程式碼研究室的此部分僅適用於部署至 Node App Engine。如果不感興趣,請繼續參閱下一節。
這項部署作業會使用 app.yaml
設定檔,透過一行程式碼告訴 App Engine 要使用的執行階段:
runtime: nodejs16
Cloud Functions 和 Cloud Run 均未使用 app.yaml
檔案。如果您不打算使用 App Engine,可以安全刪除這個檔案。準備好部署至 App Engine 時,請執行下列指令:
$ gcloud app deploy
選取地區後,gcloud app deploy
輸出內容會較為精簡,如下所示:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
由於您的應用程式現已在全球推出,您應可透過包含專案 ID 的網址存取該應用程式。此外,您應該會看到與本機 Express 版本類似的輸出內容,但請注意,應用程式是在雲端執行,也可供世界各地的使用者使用:
提交要求之後,您會發現該要求的運作方式與其他部署作業相同。
9. 選項 3:部署至 Cloud Functions
程式碼研究室的此部分僅適用於部署至 Node Cloud Functions。如果不感興趣,請繼續參閱下一節。
Cloud Functions 沒有任何設定檔,因此當您準備好部署至 Cloud Functions 時,請執行以下指令:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
您的 GCP 專案可能有預設的 REGION
,但您可以使用 --region
旗標將函式部署至特定地區。Cloud Functions 不會特別推薦其他 Cloud 產品。無論您選擇哪個區域,gcloud functions deploy
輸出內容都應如下所示:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
由於您的應用程式現已在全球各地上線,您應該可以透過含有專案 ID 的網址存取應用程式,如部署輸出內容 (在「httpsTrigger/url
」底下) 所示。網址應如下所示:https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
,這會因您選取的區域和 Cloud 專案 ID 而異。
10. 選項 4:部署至 Cloud Run
程式碼研究室的此節僅適用於部署至 Cloud Run。如果不感興趣,請繼續參閱下一節。
Cloud Run 中沒有設定檔,因此在準備部署至 Cloud Run 時,請按照以下指示操作。
您現在可執行下列指令,將翻譯服務部署至 Cloud Run:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
輸出內容應如下所示,並提供後續步驟提示:
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Cloud Buildpack 將應用程式與 Cloud Run 整合,就像在本機執行應用程式一樣。針對 Node.js 使用者,它會執行 npm install
和 npm start
。如果是 Python,系統會執行 pip install -r requirements.txt
,並依據 Procfile
中的指示啟動應用程式。(這項原則也適用於 Cloud Buildpacks 支援的所有其他語言)。建構程序完成後,您的應用程式就可以準備開始運作。
接著,您的應用程式 (僅於特定地區部署) 可在全球使用,使用者可以透過包含專案 ID 的網址,開啟部署作業輸出內容,如「Service URL
」底下:
趕快翻譯,看看成效如何!
11. 結語
恭喜!您已瞭解如何啟用及使用 Cloud Translation API、取得必要憑證,以及如何在本機將簡易網頁應用程式部署至 App Engine、Cloud Functions 和/或 Cloud Run。請查看 repo 資料夾瞭解詳情,或存取這個應用程式的其他版本和其他程式碼研究室。
清除所用資源
Cloud Translation API 可讓您每月免費處理固定數量的翻譯字元。App Engine 也提供免費配額,Cloud Functions 和 Cloud Run 也是如此。超過上述任一額度時,就必須支付費用。如果您打算繼續下一個程式碼研究室,則不必關閉應用程式。
但是,如果您還沒準備好進行下一個教學課程,或擔心網際網路發現您剛剛部署的應用程式,請停用 App Engine 應用程式、刪除 Cloud 函式或停用 Cloud Run 服務,以免產生費用。當您準備好前往下一個程式碼研究室時,即可重新啟用。另一方面,如果您不打算繼續使用這個應用程式或其他程式碼研究室,且想要徹底刪除所有內容,可以關閉專案。
此外,部署至 Google Cloud 無伺服器運算平台會產生少許建構和儲存空間費用。Cloud Build 提供的免費配額與 Cloud Storage 相同。為提升資訊透明度,Cloud Build 會建構應用程式映像檔,並將映像檔儲存在其後續的 Cloud Container Registry 或 Artifact Registry 中。這個映像檔的儲存空間會佔用部分配額,如同網路輸出圖片傳輸至服務一般。不過,您可能居住的區域沒有這類免費方案,因此請留意儲存空間用量,盡可能降低潛在費用。
12. 其他資源
以下各節提供其他閱讀素材和推薦練習,有助您增強完成本教學課程後獲得的知識。
其他研究
您已經瞭解過 Translation API 的經驗,現在讓我們進行一些額外的練習,進一步培養您的技能。如要繼續學習路徑,請修改範例應用程式,執行下列操作:
- 完成本程式碼研究室的所有其他版本,以便在本機執行或部署至 Google Cloud 無伺服器運算平台 (請參閱存放區 README)。
- 使用其他程式設計語言完成教學課程。
- 變更這個應用程式,支援不同的原文或譯文語言。
- 升級這個應用程式後,即可將文字翻譯成多種語言。變更範本檔案,加入支援的目標語言下拉式選單。
瞭解詳情
Google App Engine
Google Cloud Functions
Google Cloud Run
Google Cloud Buildpacks、Container Registry、Artifact Registry
- Cloud Buildpacks 公告
- Cloud Buildpacks 存放區
- Cloud Artifact Registry 首頁
- Cloud Artifact Registry 說明文件
- Cloud Container Registry 首頁
- Cloud Container Registry 說明文件
Google Cloud Translation 和 Google ML 套件
- Cloud Translation 首頁
- Cloud Translation 說明文件
- Cloud Translation API 用戶端程式庫 (所有開發語言)
- 支援 Cloud Translation API (語音/文字) 的語言
- Translation API 定價頁面
- 所有 Cloud AI/機器學習「建構模塊」API
- Google ML Kit (適用於行動裝置的 Cloud AI/機器學習 API 子集)
- Google ML Kit Translation API
其他 Google Cloud 產品/頁面
Python 連結
- Python 3 App Engine 快速入門導覽課程
- Python 2 App Engine (標準) 執行階段
- Python 3 App Engine (標準) 執行階段
- Python 2 與3 個 App Engine (標準) 執行階段
- Python 2 至 3 App Engine (標準) 遷移指南
- Python Cloud Functions 快速入門導覽課程
- Python Cloud Run 快速入門導覽課程
- Google Cloud Python 支援
- 燒瓶
Node.js 連結
- Node.js App Engine 快速入門導覽課程
- Node.js App Engine (標準) 執行階段
- Node.js Cloud Functions 快速入門導覽課程
- Node.js Cloud Run 快速入門導覽課程
- Google Cloud Node.js 支援
- Express
授權
本教學課程採用的是創用 CC 姓名標示 2.0 通用授權,而存放區中的原始碼是依據 Apache 2 授權。