1. 概览
这一系列的 Codelab(自定进度的动手教程)旨在帮助开发者了解部署应用时可用的各种选项。您将学习如何在简单的 Web 应用中使用 Google Cloud Translation API。此应用可以在本地运行,也可以部署到 Cloud 无服务器计算平台(App Engine、Cloud Functions 或 Cloud Run)。
您将使用 Express.js Web 框架通过 Node.js 完成本 JavaScript 教程。您还将了解如何从无服务器平台访问 Google Cloud API。此应用的所有版本均来自 “模糊无服务器”开源代码库,其中包含此应用的 Python 版本和独立的 Codelab。该代码库还托管了类似的应用,向开发者展示了如何从我们的无服务器平台访问非 Cloud Google API。
此 Codelab 重点介绍如何将此应用部署到上述加粗的平台。
您将了解如何
- 使用 Google Cloud API,尤其是 Cloud Translation API(高级版/v3)
- 在本地运行基本 Web 应用或将其部署到 Cloud 无服务器计算平台
所需条件
- 具有有效的 Cloud Billing 账号的 Google Cloud 项目
- 为本地运行安装的网络框架(对于学习 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 尚未使用的字符串,您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中必须是唯一的,并且不可变(一经设置便无法更改)。Cloud Console 会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(它通常标识为
PROJECT_ID),因此如果您不喜欢某个 ID,请再生成一个随机 ID,还可以尝试自己创建一个,并确认是否可用。然后,项目创建后,ID 会处于“冻结”状态。 - 第三个值是一些 API 使用的项目编号。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud Console 中启用结算功能,才能使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。要关闭资源以避免产生超出本教程范围的费用,请按照此 Codelab 末尾提供的任何“清理”说明操作。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。
3. 启用 Translation API
在本部分中,您将学习如何启用 Google API。对于我们的示例应用,您将启用 Cloud Translation API。您还需要启用 App Engine、Cloud Functions 和/或 Cloud Run(以及 Cloud Artifact Registry),具体取决于您希望将示例应用部署到哪个平台。
启用 Google API
简介
无论您要在应用中使用哪个 Google API,都必须先启用相应 API。您可以通过命令行或 Cloud 控制台启用 API。启用 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。例如,如果本 Codelab 的观看者使用 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。此外,它还会启用 Artifact Registry,因为 Cloud Build 系统必须在该注册表中注册容器映像,才能部署到 Cloud Run。
选项 2:Cloud 控制台
您还可以在 API 管理器中启用 Google API。在 Cloud 控制台中,前往 API 管理器,然后选择库。

开始在搜索栏中输入 API 的名称,即可看到匹配的结果:

选择您要启用的 API,然后点击启用按钮:

无论您想使用哪个 Google API,启用所有 API 的过程都类似。
费用
许多 Google API 可免费使用,但使用大多数 Google Cloud 产品和 API 会产生费用。启用 Cloud API 时,系统可能会要求您提供有效的结算账号。不过,部分 Google Cloud 产品提供“始终免费”层级,只有超出此层级才会产生结算费用。
GCP 新用户符合参与免费试用计划的条件,目前可获享 300 美元赠金,有效期为前 90 天。Codelab 通常不会产生或只会产生少量费用,因此我们建议您在真正准备好试用时再开始免费试用,尤其因为这是一次性优惠。免费层级配额不会过期,无论您是否使用免费试用,都适用。
用户应在启用任何 API 之前参考其定价信息(例如:Cloud Vision 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 无服务器平台的费用,请参阅代码库的“费用”部分。本 Codelab 末尾的“清理”部分将介绍如何在完成本 Codelab 后停止产生结算费用。
4. 获取示例应用代码
下载 ZIP 文件或克隆代码库
- 下载 ZIP 文件或使用
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git克隆 代码库 - 如果您没有本地开发环境,但希望在 Cloud Shell 中完成本教程,可以在其中使用相同的
git clone命令克隆代码库。 - 您还可以通过其绿色 Code 按钮访问 ZIP 文件,如以下屏幕截图所示:

现在,您已准备好一切,请创建该文件夹的完整副本以完成本教程,因为本教程可能涉及删除或更改文件。如果您想进行其他部署,可以复制原始部署,这样就无需再次克隆或下载。
5. 确认 Node.js 环境
如需设置 Node.js 环境,请执行以下操作:
- 确保您已安装最新版本的 Node (>=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 客户端库。- 全局变量表示 Web 应用、云项目 ID、Translation API 客户端、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:在本地运行服务
Codelab 的这一部分仅适用于在本地运行。如果您仅部署到云端,请继续下一部分。
如需在本地运行示例应用,必须执行以下三个不同的步骤:
- 创建服务账号
- 创建服务账号公钥/私钥对
- 下载凭据文件并将其与应用代码捆绑在一起
- 启动服务
了解服务账号
服务账号是一种安全机制,用于在访问不属于人类用户的数据时,让基于云的应用访问 Google API。在部署到云端时,为了缩短用户加入云端的准备时间,所有 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:在本地运行服务”,完成此流程并在主文件夹中安装凭据,然后再继续。
8. 选项 2:部署到 App Engine(标准环境)
此 Codelab 部分仅适用于部署到 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
本部分 Codelab 仅适用于部署到 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,具体取决于您选择的地区以及您的云项目 ID。

10. 选项 4:部署到 Cloud Run
本部分 Codelab 仅适用于部署到 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 Buildpacks 会将您的应用构建到 Cloud Run 中,就像您在本地运行应用一样。对于 Node.js 用户,它会运行 npm install 和 npm start。对于 Python,它会运行 pip install -r requirements.txt 并根据 Procfile 中的说明启动应用。(这同样适用于 Cloud Buildpack 支持的所有其他语言。)构建流程完成后,您的应用即可投入使用。
然后,您的应用将(在区域级部署,但)在全球范围内提供,并且可以通过包含项目 ID 的网址访问,如部署输出中所示(在“Service URL:”下)。

翻译一些内容,看看效果如何!

11. 总结
恭喜!您已了解如何启用和使用 Cloud Translation API、获取必要的凭据,以及将简单的 Web 应用部署到本地 Express、App Engine、Cloud Functions 和/或 Cloud Run。请查看 repo 文件夹,详细了解或访问此应用的其他版本以及其他 Codelab。
清理
借助 Cloud Translation API,您可以每月免费翻译一定数量的字符。App Engine 也有免费配额,Cloud Functions 和 Cloud Run 也是如此。如果超出任一限制,您都需要付费。如果您打算继续学习下一个 Codelab,则无需关闭应用。
不过,如果您尚未准备好学习下一个教程,或者担心互联网会发现您刚刚部署的应用,请停用 App Engine 应用、删除 Cloud Function 或停用 Cloud Run 服务,以免产生费用。准备好继续学习下一个 Codelab 后,您可以重新启用该功能。另一方面,如果您不打算继续使用此应用或其他 Codelab,并想彻底删除所有内容,可以关停项目。
此外,部署到 Google Cloud 无服务器计算平台会产生少量构建和存储费用。Cloud Build 和 Cloud Storage 都有各自的免费配额。为了提高透明度,Cloud Build 会构建您的应用映像,然后将其存储在 Cloud Container Registry 或其后继产品 Artifact Registry 中。存储该映像会占用部分配额,将该映像传输到服务时产生的网络出站流量也会占用部分配额。不过,您居住的地区可能没有此类免费层级,因此请注意存储空间用量,以尽可能减少潜在费用。
12. 其他资源
在以下部分中,您可以找到其他读物以及推荐的练习,以巩固您通过完成本教程获得的知识。
其他研究
现在,您已经积累了一些 Translation API 使用经验,接下来让我们做一些额外的练习,进一步提升您的技能。如需继续学习路线,请修改我们的示例应用,以实现以下功能:
- 完成此 Codelab 的所有其他版本,以便在本地运行或部署到 Google Cloud 无服务器计算平台(请参阅代码库 README)。
- 使用其他编程语言完成本教程。
- 更改此应用以支持不同的源语言或目标语言。
- 升级此应用,以便能够将文本翻译成多种语言;更改模板文件,使其包含支持的目标语言下拉菜单。
了解详情
Google App Engine
Google Cloud Functions
Google Cloud Run
Google Cloud Buildpacks、Container Registry、Artifact Registry
- Cloud Buildpack 公告
- Cloud Buildpack 代码库
- Cloud Artifact Registry 首页
- Cloud Artifact Registry 文档
- Cloud Container Registry 首页
- Cloud Container Registry 文档
Google Cloud Translation 和 Google 机器学习套件
- Cloud Translation 首页
- Cloud Translation 文档
- Cloud Translation API 客户端库(所有开发语言)
- Cloud Translation API 支持的(口语/书面)语言
- Translation API 价格页面
- 所有云 AI/机器学习“构建块”API
- Google 机器学习套件(适用于移动设备的云 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 支持
- Flask
Node.js 链接
- Node.js App Engine 快速入门
- Node.js App Engine(标准)运行时
- Node.js Cloud Functions 快速入门
- Node.js Cloud Run 快速入门
- Google Cloud Node.js 支持
- Express 版
许可
本教程已获得知识共享署名 2.0 通用许可授权,而相应代码库中的源代码已获得 Apache 2 许可授权。