使用 Cloud Translation 連接器執行批次翻譯

本教學課程說明如何建立工作流程,使用 Cloud Translation API 連接器以非同步批次模式將檔案翻譯成其他語言。這項功能會在處理輸入內容時,即時提供輸出內容。

目標

教學課程內容:

  1. 建立輸入 Cloud Storage bucket。
  2. 以英文建立兩個檔案,並上傳至輸入 bucket。
  3. 建立工作流程,使用 Cloud Translation API 連接器將這兩個檔案翻譯成法文和西班牙文,並將結果儲存至輸出 bucket。
  4. 部署及執行工作流程,自動化調度管理整個程序。

費用

在本文件中,您會使用下列 Google Cloud的計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用期資格。

事前準備

貴機構定義的安全性限制,可能會導致您無法完成下列步驟。如需疑難排解資訊,請參閱「在受限的 Google Cloud 環境中開發應用程式」。

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  6. 確認專案已啟用計費功能 Google Cloud

  7. 啟用 Cloud Storage、Translation 和 Workflows API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  8. 安裝 Google Cloud CLI。

  9. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  10. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  11. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  12. 確認專案已啟用計費功能 Google Cloud

  13. 啟用 Cloud Storage、Translation 和 Workflows API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  14. 更新 gcloud 元件:
    gcloud components update
  15. 使用帳戶登入:
    gcloud auth login
  16. 設定本教學課程中使用的預設位置:
    gcloud config set workflows/location us-central1

    由於本教學課程使用位於 us-central1 的預設 AutoML Translation 模型,因此您必須將位置設為 us-central1

    如果使用預設模型或詞彙表以外的 AutoML Translation 模型或詞彙表,請確保該模型或詞彙表與連接器呼叫位於相同的位置;否則系統會傳回 INVALID_ARGUMENT (400) 錯誤。詳情請參閱 batchTranslateText 方法

建立輸入 Cloud Storage bucket 和檔案

您可以使用 Cloud Storage 儲存物件。物件是不可變更的資料片段,由任何格式的檔案組成,並儲存在稱為 bucket 的容器中。

  1. 建立 Cloud Storage bucket,用來存放要翻譯的檔案:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. 以英文建立兩個檔案,然後上傳至輸入 bucket:

    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}

部署及執行工作流程

工作流程是由一系列步驟組成,這些步驟使用 Workflows 語法描述,且可採用 YAML 或 JSON 格式編寫。這是工作流程的定義。建立工作流程後,請部署工作流程,以便執行。

  1. 建立名為 workflow.yaml 的文字檔,並在當中加入下列內容:

    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

    工作流程會指派變數、建立輸出 bucket,並啟動檔案翻譯作業,然後將結果儲存至輸出 bucket。

  2. 建立工作流程後,請部署工作流程:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. 執行工作流程:

    gcloud workflows execute batch-translation
  4. 如要查看工作流程狀態,可以執行傳回的指令。例如:

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

    工作流程應為 ACTIVE。幾分鐘後,翻譯後的檔案 (法文和西班牙文) 會上傳至輸出值區。

列出輸出值區中的物件

您可以列出輸出 bucket 中的物件,確認工作流程是否正常運作。

  1. 擷取輸出 bucket 名稱:

    gcloud storage ls

    輸出結果會與下列內容相似:

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

  2. 列出輸出值區中的物件:

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

    幾分鐘後,系統會列出翻譯後的檔案,法文和西班牙文各兩個。

清除所用資源

如果您是為了這個教學課程建立新專案,請刪除專案。如果您已使用現有專案,並想保留專案,但不要本教學課程新增的變更,請刪除為本教學課程建立的資源

刪除專案

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。

刪除專案的方法如下:

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除教學課程資源

  1. 移除您在教學課程設定期間新增的 gcloud 預設設定:

    gcloud config unset workflows/location
  2. 刪除在本教學課程中建立的工作流程:

    gcloud workflows delete WORKFLOW_NAME
  3. 刪除在本教學課程中建立的 bucket 和物件:

    gcloud storage rm gs://BUCKET_NAME --recursive

    其中 BUCKET_NAME 是要刪除的值區名稱。例如:my-bucket

    回覆內容大致如下:

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

後續步驟