远程函数和 Translation API 教程
本教程介绍如何创建 BigQuery 远程函数,调用 Cloud Translation API,以及如何使用 SQL 和 Python 将任何语言的内容翻译成西班牙语。
此函数的使用场景包括以下各项:
- 将网站上的用户评论翻译成当地语言
- 将来自众多语言的支持请求翻译成支持案例工作器的一种通用语言
目标
- 为您的账号分配必要的角色。
- 创建 Cloud Run functions 函数。
- 创建 BigQuery 数据集。
- 创建 BigQuery 连接和服务账号。
- 向 BigQuery 服务账号授予权限。
- 创建 BigQuery 远程函数。
- 调用 BigQuery 远程函数。
费用
在本文档中,您将使用 Trusted Cloud by S3NS的以下收费组件:
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
我们建议您为本教程创建一个 Trusted Cloud 项目。此外,请确保您拥有完成本教程所需的角色。
设置 Trusted Cloud 项目
如需为本教程设置 Trusted Cloud 项目,请完成以下步骤:
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Make sure that billing is enabled for your Trusted Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Run functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs.
-
BigQuery Data Owner (
roles/bigquery.dataOwner
) -
BigQuery Connection Admin (
roles/bigquery.connectionAdmin
) -
Cloud Functions Developer (
roles/cloudfunctions.developer
) -
bigquery.datasets.create
-
bigquery.connections.create
-
bigquery.connections.get
-
cloudfunctions.functions.create
复制您的 Compute Engine 默认服务账号。您的默认服务账号如下所示:
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com
将
PROJECT_NUMBER
替换为您的项目 ID。在 Trusted Cloud 控制台中,前往 IAM 页面。
选择您的项目。
点击
授予访问权限,然后在新主账号字段中粘贴您之前复制的 Compute Engine 默认服务账号。在分配角色列表中,搜索并选择 Cloud Translation API User。
点击保存。
使用以下规范创建 Cloud Run functions 函数:
- 对于环境,选择第 2 代。
- 对于函数名称,请输入
translation-handler
。 - 在区域部分,选择 us-central1。
对于实例数上限,请输入
10
。此设置位于运行时、构建、连接和安全设置部分。
在本教程中,我们使用低于默认值的值来控制发送到 Translation 的请求速率。
对于运行时,请选择 Python 3.10。
对于入口点,请输入
handle_translation
。
在文件列表中,选择 main.py,然后粘贴以下代码。
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 BigQuery Python API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将
GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为s3nsapis.fr
。使用
us-central1
更新<your location>
。在文件列表中,选择 requirements.txt,然后粘贴以下文本:
点击部署,然后等待函数部署。
点击触发器标签页。
复制触发器网址值并保存,以备日后使用。您必须在创建 BigQuery 远程函数时使用此网址。
- 在数据集 ID 部分,输入
remote_function_test
。 - 对于位置类型,请选择多区域。
- 对于多区域,请选择美国(美国的多个区域)。
使用以下规范创建 Trusted Cloud 资源连接:
- 对于连接类型,请选择 BigLake 和远程函数(Cloud 资源)
- 对于连接 ID,请输入
remote-function-connection
。 - 对于位置类型,请选择多区域。
- 对于多区域,请选择美国(美国的多个区域)。
打开外部连接列表,然后选择
us.remote-function-connection
。复制服务账号 ID 并保存,以备日后使用。您必须在下一步向此 ID 授予权限。
转到 Cloud Run 页面
选择您的项目。
选中
translation-handler
旁边的复选框。在权限面板中,点击添加主账号。
在新的主账号字段中,输入您之前复制的服务账号 ID。
在分配角色列表中,搜索并选择 Cloud Run Invoker。
点击保存。
在 Trusted Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中输入以下查询:
CREATE OR REPLACE FUNCTION `remote_function_test.translate_text`(x STRING) RETURNS STRING REMOTE WITH CONNECTION `us.remote-function-connection` OPTIONS ( endpoint = 'TRIGGER_URL', max_batching_rows = 10);
将
TRIGGER_URL
替换为您之前在创建 Cloud Run functions 函数时保存的触发器网址。点击运行。系统会显示类似以下内容的消息:
This statement created a new function named your_project.remote_function_test.translate_text.
在 BigQuery 查询编辑器中,输入以下查询,然后点击运行。
SELECT remote_function_test.translate_text('This new feature is fantastic!') AS translated_text;
这些结果如下所示:
+-------------------------------------------+ | translated_text | +-------------------------------------------+ | ¡Esta nueva característica es fantástica! | +-------------------------------------------+
可选:如需测试公共数据集上的远程函数,请输入以下查询,然后点击运行。如需限制返回的结果,请使用
LIMIT
子句。SELECT text, remote_function_test.translate_text(text) AS translated_text FROM (SELECT text FROM `bigquery-public-data.hacker_news.full` LIMIT 3);
这些结果如下所示:
+---------------------------------------------------------------------------+ | text | translated_text | +---------------------------------------------------------------------------+ | These benchmarks look good. | Estos puntos de referencia se ven bien. | | Who is using Java? | ¿Quién está usando Java? | | You need more database storage. | Necesitas más almacenamiento. | +---------------------------------------------------------------------------+
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- 了解如何在 BigQuery 中使用远程函数。
- 了解 Translation。
- 了解 Cloud Run functions。
- 了解 Cloud Run。
账号所需的角色
如需获得执行本教程中任务所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色可提供执行本教程中的任务所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需执行本教程中的任务,您需要拥有以下权限:
Compute Engine 默认服务账号所需的角色
启用 Cloud Run functions 的 API 后,系统创建了一个 Compute Engine 默认服务账号。如需完成本教程,您必须为此默认服务账号提供 Cloud Translation API User 角色。
创建 Cloud Run functions 函数
使用 Cloud Run functions 创建一个将输入文本翻译成西班牙语的函数。
创建 BigQuery 数据集
创建 BigQuery 数据集,其中包含远程函数。创建数据集时,请添加以下规范:
创建 BigQuery 连接和服务账号
创建 BigQuery 连接,以便在 Cloud Run functions 和 Cloud Run 中使用任何支持的语言实现远程函数。创建连接时,系统会为该连接创建一个服务账号。
向 BigQuery 服务账号授予权限
您在上一步创建的服务账号需要使用 Cloud Run 的权限,以便 BigQuery 远程函数可以使用 Cloud Run functions 函数。如需向服务账号授予权限,请完成以下步骤:
创建 BigQuery 远程函数
如需使用 Cloud Run functions 函数以通过 BigQuery 远程函数将文本翻译成西班牙语,请完成以下步骤。
调用 BigQuery 远程函数
创建远程函数后,请进行测试以确保它与 Cloud Run functions 函数关联并生成西班牙语的预期结果。
删除资源
如果您不打算在此项目中使用这些函数,通过删除项目可以避免产生额外的费用。这将永久删除与项目关联的所有资源。