Ejecutar una traducción por lotes con el conector de Cloud Translation


En este tutorial se muestra cómo crear un flujo de trabajo que utilice el conector de la API Cloud Translation para traducir archivos a otros idiomas en modo de lote asíncrono. De esta forma, se proporciona información en tiempo real a medida que se procesan las entradas.

Objetivos

En este tutorial, aprenderás a hacer lo siguiente:

  1. Crea un segmento de Cloud Storage de entrada.
  2. Crea dos archivos en inglés y súbelos al segmento de entrada.
  3. Crea un flujo de trabajo que utilice el conector de la API Cloud Translation para traducir los dos archivos al francés y al español, y guarda los resultados en un bucket de salida.
  4. Implementa y ejecuta el flujo de trabajo para orquestar todo el proceso.

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Antes de empezar

Es posible que las restricciones de seguridad definidas por tu organización te impidan completar los siguientes pasos. Para obtener información sobre cómo solucionar problemas, consulta el artículo Desarrollar aplicaciones en un entorno limitado Google Cloud .

  1. 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.
  2. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  8. Install the Google Cloud CLI.

  9. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  10. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  14. Actualiza los componentes de gcloud:
    gcloud components update
  15. Inicia sesión con tu cuenta:
    gcloud auth login
  16. Define la ubicación predeterminada que se usará en este tutorial:
    gcloud config set workflows/location us-central1

    Como en este tutorial se usa el modelo predeterminado de AutoML Translation, que se encuentra en us-central1, debes definir la ubicación como us-central1.

    Si utilizas un modelo o una glosario de AutoML Translation que no sea el predeterminado, asegúrate de que se encuentre en la misma ubicación que la llamada al conector. De lo contrario, se devolverá un error INVALID_ARGUMENT (400). Para obtener más información, consulta el método batchTranslateText.

  17. Crea un segmento y archivos de Cloud Storage de entrada

    Puedes usar Cloud Storage para almacenar objetos. Los objetos son fragmentos de datos inmutables que constan de un archivo en cualquier formato y se almacenan en contenedores llamados cubos.

    1. Crea un segmento de Cloud Storage para almacenar los archivos que quieras traducir:

      BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
      gcloud storage buckets create gs://${BUCKET_INPUT}
    2. Crea dos archivos en inglés y súbelos al segmento de entrada:

      echo "Hello World!" > file1.txt
      gcloud storage cp file1.txt gs://${BUCKET_INPUT}
      echo "Workflows connectors simplify calling services." > file2.txt
      gcloud storage cp file2.txt gs://${BUCKET_INPUT}

    Desplegar y ejecutar el flujo de trabajo

    Un flujo de trabajo se compone de una serie de pasos descritos mediante la sintaxis de Workflows, que se puede escribir en formato YAML o JSON. Esta es la definición del flujo de trabajo. Después de crear un flujo de trabajo, debes implementarlo para que esté disponible.

    1. Crea un archivo de texto con el nombre workflow.yaml y el siguiente contenido:

      main:
        steps:
        - init:
            assign:
            - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
            - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
            - inputBucketName: ${projectId + "-input-files"}
            - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
        - createOutputBucket:
              call: googleapis.storage.v1.buckets.insert
              args:
                project: ${projectId}
                body:
                  name: ${outputBucketName}
        - batchTranslateText:
            call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
            args:
                parent: ${"projects/" + projectId + "/locations/" + location}
                body:
                    inputConfigs:
                      gcsSource:
                        inputUri: ${"gs://" + inputBucketName + "/*"}
                    outputConfig:
                        gcsDestination:
                          outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                    sourceLanguageCode: "en"
                    targetLanguageCodes: ["es", "fr"]
            result: batchTranslateTextResult

      El flujo de trabajo asigna variables, crea un segmento de salida e inicia la traducción de los archivos, guardando los resultados en el segmento de salida.

    2. Una vez que hayas creado el flujo de trabajo, despliégalo:

      gcloud workflows deploy batch-translation --source=workflow.yaml
    3. Ejecuta el flujo de trabajo:

      gcloud workflows execute batch-translation
    4. Para ver el estado del flujo de trabajo, puedes ejecutar el comando devuelto. Por ejemplo:

      gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
        --workflow batch-translation /
        --location us-central1

      El flujo de trabajo debe ser ACTIVE. Al cabo de unos minutos, los archivos traducidos (en francés y español) se suben al contenedor de salida.

    Lista de objetos del segmento de salida

    Para confirmar que el flujo de trabajo ha funcionado correctamente, enumera los objetos de tu segmento de salida.

    1. Recupera el nombre del segmento de salida:

      gcloud storage ls

      El resultado debería ser similar al siguiente:

      gs://PROJECT_ID-input-files/
      gs://PROJECT_ID-output-files-TIMESTAMP/

    2. Lista los objetos del segmento de salida:

      gcloud storage ls gs://PROJECT_ID-output-files-TIMESTAMP/** --recursive

      Al cabo de unos minutos, se mostrarán los archivos traducidos (dos de cada uno en francés y español).

    Limpieza

    Si has creado un proyecto para este tutorial, elimínalo. Si has usado un proyecto y quieres conservarlo sin los cambios que se han añadido en este tutorial, elimina los recursos creados para el tutorial.

    Eliminar el proyecto

    La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.

    Para ello, sigue las instrucciones que aparecen a continuación:

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Eliminar recursos del tutorial

    1. Elimina la configuración predeterminada de gcloud que has añadido durante la configuración del tutorial:

      gcloud config unset workflows/location
    2. Elimina el flujo de trabajo que has creado en este tutorial:

      gcloud workflows delete WORKFLOW_NAME
    3. Elimina un segmento y los objetos que hayas creado en este tutorial:

      gcloud storage rm gs://BUCKET_NAME --recursive

      Donde BUCKET_NAME es el nombre del segmento que quieres eliminar. Por ejemplo, my-bucket.

      La respuesta es similar a la siguiente:

      Removing gs://my-bucket/...

    Siguientes pasos