使用連接器叫用 Google Cloud 服務

工作流程會發布連接器,方便您在工作流程中存取其他Google Cloud API,並將工作流程與這些 Google Cloud 產品整合。舉例來說,您可以使用連接器發布 Pub/Sub 訊息、讀取或寫入 Firestore 資料庫中的資料,或是從 Secret Manager 擷取驗證金鑰。如需可用連接器的詳細參考資料,請參閱「連接器參考資料」。

連接器可簡化呼叫服務,因為它會為您處理要求的格式化作業,提供方法和引數,讓您不必瞭解 Google Cloud API 的詳細資料。如要進一步瞭解驗證機制,以及重試和長時間執行作業期間的行為,請參閱「瞭解連接器」。

叫用連接器呼叫

叫用 HTTP 端點類似,連接器呼叫需要 callargs 欄位。您可以使用 connector_params 區塊指定逾時值和輪詢政策:

- STEP_NAME:
    call: CONNECTOR
    args:
        ARG: ARG_VALUE
        [...]
        body:
            KEY:KEY_VALUE
            [...]
        connector_params:
            timeout: TIMEOUT_IN_SECONDS
            polling_policy:
                initial_delay: INITIAL_DELAY_IN_SECONDS
                multiplier: MULTIPLIER_VALUE
                max_delay: MAX_DELAY_IN_SECONDS
            skip_polling: SKIP_POLLING_SWITCH 
            scopes:  OAUTH2_SCOPE 
    result: RESPONSE_VALUE

更改下列內容:

  • STEP_NAME:步驟名稱。
  • CONNECTOR (必要):表單 googleapis.gcp_service.version.resource.operation 中的連接器方法。例如:googleapis.bigquery.v2.tables.get
  • ARGARG_VALUE (必要):每個連接器呼叫都需要不同的引數。
  • KEYKEY_VALUE (選用):為 API 提供輸入內容的欄位。
  • 特定連接器參數 (選用):
    • TIMEOUT_IN_SECONDS:時間,以秒為單位。連接器呼叫允許執行的端對端持續時間,超過時間就會擲回逾時例外狀況。預設值為 1800,且應為非長時間運作作業的連接器方法的上限。否則,對於長時間執行的作業,連接器呼叫的逾時時間上限為 31536000 秒 (一年)。
    • INITIAL_DELAY_IN_SECONDS:輪詢政策參數,預設值為 1.0。僅適用於長時間執行的作業呼叫。
    • MULTIPLIER_VALUE:輪詢政策參數,預設值為 1.25。僅適用於長時間執行的作業呼叫。
    • MAX_DELAY_IN_SECONDS:輪詢政策參數,預設值為 60.0。僅適用於長時間執行的作業呼叫。
    • SKIP_POLLING_SWITCH:如果設為 True,當用於管理或更新資源的初始要求成功 (通常為 HTTP POSTHTTP UPDATEHTTP DELETE) 時,連接器叫用呼叫將不會阻斷。如果初始要求不成功,可能會重試。在初始要求完成後,系統會略過長時間執行作業的狀態輪詢 (HTTP GET 要求,接續初始要求)。預設值為 False
    • OAUTH2_SCOPE:要傳遞至 Google API 的 OAuth 2 範圍。可以是字串、字串清單、以空格分隔的字串,或以半形逗號分隔的字串。
  • RESPONSE_VALUE (選用):儲存連接器呼叫叫用步驟結果的變數名稱。

範例

以下工作流程示範如何同時使用 Cloud Storage API 連接器Cloud Translation API 連接器,將兩個檔案翻譯成法文和西班牙文,並將結果儲存在 Cloud Storage 值區中。

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

後續步驟