Instructivo de la API de Translation y las funciones remotas
En este instructivo, se describe cómo crear una función remota de BigQuery, invocar la API de Cloud Translation y realizar la traducción de contenido desde cualquier idioma a español mediante SQL y Python.
Estos son algunos casos de uso de esta función:
- Traducir los comentarios de los usuarios en un sitio web a un idioma local
- Traducir solicitudes de asistencia de muchos idiomas a un idioma común para trabajadores que atienden casos de asistencia
Objetivos
- Asigna los roles necesarios a tu cuenta.
- Crea una función de Cloud Functions.
- Crear un conjunto de datos de BigQuery
- Crea una conexión de BigQuery y una cuenta de servicio.
- Otorga permisos a la cuenta de servicio de BigQuery.
- Crea una función remota de BigQuery.
- Llama a la función remota de BigQuery.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
Te recomendamos que crees un proyecto de Google Cloud para este instructivo. Además, asegúrate de tener los roles necesarios para completar este instructivo.
Configura un proyecto de Google Cloud
Si deseas configurar un proyecto de Google Cloud para este instructivo, completa estos pasos:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs.
Roles necesarios para su cuenta
A fin de obtener los permisos que necesitas para realizar las tareas de este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Propietario de datos de BigQuery (
roles/bigquery.dataOwner
) -
Administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin
) -
Desarrollador de Cloud Functions (
roles/cloudfunctions.developer
)
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este instructivo. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para realizar las tareas de este instructivo:
-
bigquery.datasets.create
-
bigquery.connections.create
-
bigquery.connections.get
-
cloudfunctions.functions.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Funciones necesarias para la cuenta de servicio predeterminada de Compute Engine
Cuando habilitaste la API para Cloud Functions, se creó una cuenta de servicio predeterminada de Compute Engine. Para completar este instructivo, debes otorgar a esta cuenta de servicio predeterminada la función de usuario de la API de Cloud Translation.
Copia tu cuenta de servicio predeterminada de Compute Engine. La cuenta de servicio predeterminada se ve de la siguiente manera:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
con el ID del proyecto.En la consola de Google Cloud, ve a la página IAM.
Selecciona tu proyecto.
Haz clic en
Otorgar acceso y, luego, en el campo Principales nuevos, pega la cuenta de servicio predeterminada de Compute Engine que copiaste antes.En la lista Asignar roles, busca y selecciona Usuario de la API de Cloud Translation.
Haz clic en Guardar.
Crea una función de Cloud Functions
Con Cloud Functions, crea una función que traduzca el texto de entrada al español.
Crea una función de Cloud Functions con las siguientes especificaciones:
- En Entorno, selecciona 2ª gen..
- En Nombre de la función, ingresa
translation-handler
. - En Región, selecciona us-central1.
En Cantidad máxima de instancias, ingresa
10
.Esta configuración se encuentra en la sección Configuración del entorno de ejecución, la compilación, las conexiones y la seguridad.
En este instructivo, usamos un valor menor que el predeterminado para controlar el porcentaje de solicitudes enviadas a Translation.
Para Entorno de ejecución, selecciona Python 3.10.
En Punto de entrada, ingresa
handle_translation
.
En la lista de archivos, selecciona main.py y, luego, pega el siguiente código.
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Actualiza
<your location>
conus-central1
.En la lista de archivos, selecciona requirements.txt y, luego, pega el siguiente texto:
Haz clic en Implementar y espera a que la función se implemente.
Haz clic en la pestaña Activador.
Copia el valor de la URL del activador y guárdalo para usarlo más adelante. Debes usar esta URL cuando crees una función remota de BigQuery.
Crea un conjunto de datos de BigQuery
Crea un conjunto de datos de BigQuery que contendrá la función remota. Cuando crees el conjunto de datos, incluye estas especificaciones:
- En ID del conjunto de datos, ingresa
remote_function_test
. - En Tipo de ubicación, selecciona Multirregión.
- En Multirregión, selecciona EE.UU. (varias regiones en Estados Unidos).
Crea una conexión de BigQuery y una cuenta de servicio
Crea una conexión de BigQuery para poder implementar una función remota con cualquier lenguaje compatible en Cloud Functions y Cloud Run. Cuando creas una conexión, se crea una cuenta de servicio para esa conexión.
Crea una conexión de recursos de Google Cloud con las siguientes especificaciones:
- En Tipo de conexión, selecciona BigLake y funciones remotas (Cloud Resource)
- En ID de conexión, ingresa
remote-function-connection
. - En Tipo de ubicación, selecciona Multirregión.
- En Multirregión, selecciona EE.UU. (varias regiones en Estados Unidos).
Abre la lista Conexiones externas y selecciona
us.remote-function-connection
.Copia el ID de la cuenta de servicio y guárdalo para usarlo más adelante. Debes otorgar permisos a este ID en el paso siguiente.
Otorga permisos a la cuenta de servicio de BigQuery
La cuenta de servicio que creaste en el paso anterior necesita permiso para usar Cloud Run a fin de que la función remota de BigQuery pueda usar la función de Cloud Functions. Para otorgar permisos a la cuenta de servicio, completa los siguientes pasos:
Ir a la página Cloud Run.
Selecciona tu proyecto.
Selecciona la casilla de verificación junto a
translation-handler
.En el panel Permisos, haz clic en Agregar principal.
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En la lista Asignar roles, busca y selecciona Invocador de Cloud Run.
Haz clic en Guardar.
Crea una función remota de BigQuery
Para usar la función de Cloud Functions que traduce texto en español con una función remota de BigQuery, completa los siguientes pasos.
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, ingresa la consulta siguiente:
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);
Reemplaza
TRIGGER_URL
por la URL del activador que guardaste antes cuando creaste una función de Cloud Functions.Haga clic en Ejecutar. Aparecerá un mensaje similar al que figura a continuación:
This statement created a new function named your_project.remote_function_test.translate_text.
Llama a la función remota de BigQuery
Después de crear tu función remota, pruébala para asegurarte de que esté vinculada a la función de Cloud Functions y produzca los resultados esperados en español.
En el editor de consultas de BigQuery, ingresa la siguiente consulta y, luego, haz clic en Ejecutar.
SELECT remote_function_test.translate_text('This new feature is fantastic!') AS translated_text;
Las políticas son similares a las siguientes:
+-------------------------------------------+ | translated_text | +-------------------------------------------+ | ¡Esta nueva característica es fantástica! | +-------------------------------------------+
Opcional: Para probar la función remota en un conjunto de datos públicos, ingresa la siguiente consulta y, luego, haz clic en Ejecutar. Para limitar los resultados que se muestran, usa la cláusula
LIMIT
.SELECT text, remote_function_test.translate_text(text) AS translated_text FROM (SELECT text FROM `bigquery-public-data.hacker_news.full` LIMIT 3);
Las políticas son similares a las siguientes:
+---------------------------------------------------------------------------+ | 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. | +---------------------------------------------------------------------------+
Borra recursos
Si no planeas usar estas funciones en este proyecto, puedes borrar los proyectos para evitar costos adicionales. Esto borra de forma permanente todos los recursos asociados con el proyecto.
- In the Google 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.
¿Qué sigue?
- Aprende a usar las funciones remotas en BigQuery.
- Obtén más información sobre Translation.
- Obtén información sobre Cloud Functions.
- Obtener información sobre Cloud Run.