Google Cloud-Dienst über einen Connector aufrufen

Workflows veröffentlichen Connectors, um den Zugriff auf andere Google Cloud APIs in einem Workflow zu erleichtern und Ihre Workflows in diese Google Cloud Produkte zu integrieren. Beispielsweise können Sie Connectors verwenden, um Pub/Sub-Nachrichten zu veröffentlichen, Daten in einer Firestore-Datenbank zu lesen oder zu schreiben oder Authentifizierungsschlüssel aus Secret Manager abzurufen. Eine detaillierte Referenz zu den verfügbaren Connectors finden Sie in der Referenz zu Connectors.

Connectors vereinfachen den Aufruf von Diensten, da sie die Formatierung von Anfragen für Sie verarbeiten und Methoden und Argumente bereitstellen. Sie müssen also die Details einer Google Cloud API nicht kennen. Weitere Informationen zur Authentifizierung, und zum Verhalten bei Wiederholungen und lang andauernden Vorgängen finden Sie unter Informationen zu Connectors.

Connector-Aufruf aufrufen

Ähnlich wie beim Aufrufen eines HTTP-Endpunkts, sind für einen Connector-Aufruf die Felder call und args erforderlich. Mit dem Block connector_params können Sie einen Timeout-Wert und eine Abrufrichtlinie angeben:

- 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

Ersetzen Sie Folgendes:

  • STEP_NAME: der Name des Schritts.
  • CONNECTOR (erforderlich): die Connector-Methode im Format googleapis.gcp_service.version.resource.operation. Beispiel: googleapis.bigquery.v2.tables.get.
  • ARG und ARG_VALUE (erforderlich): Für jeden Connector-Aufruf sind unterschiedliche Argumente erforderlich.
  • KEY und KEY_VALUE (optional): Felder zur Bereitstellung einer Eingabe für die API.
  • Connectorspezifische Parameter (optional):
    • TIMEOUT_IN_SECONDS: Zeit in Sekunden. Die End-to-End-Dauer, die der Connector-Aufruf ausgeführt werden darf, bevor eine Timeout-Ausnahme ausgelöst wird. Der Standardwert ist 1800. Dies sollte der Maximalwert für Connector-Methoden sein, die keine lang andauernden Vorgänge sind. Andernfalls beträgt der maximale Timeout für einen Connector-Aufruf bei lang andauernden Vorgängen 31536000 Sekunden (ein Jahr).
    • INITIAL_DELAY_IN_SECONDS: Parameter der Abrufrichtlinie mit dem Standardwert 1.0. Gilt nur für Aufrufe lang andauernder Vorgänge.
    • MULTIPLIER_VALUE: Parameter der Abrufrichtlinie mit dem Standardwert 1.25. Gilt nur für Aufrufe von Vorgängen mit langer Ausführungszeit.
    • MAX_DELAY_IN_SECONDS: Parameter der Abrufrichtlinie mit dem Standardwert 60.0. Gilt nur für Aufrufe von Vorgängen mit langer Ausführungszeit.
    • SKIP_POLLING_SWITCH: Wenn dieser Wert auf True gesetzt ist, ist der Connector-Aufruf nicht blockierend, wenn die erste Anfrage zum Verwalten oder Aktualisieren der Ressource erfolgreich ist (in der Regel HTTP POST, HTTP UPDATE oder HTTP DELETE). Wenn die erste Anfrage nicht erfolgreich ist, können Wiederholungen auftreten. Das Abrufen des Status (HTTP GET-Anfragen, die auf die erste Anfrage folgen) wird für den Vorgang mit langer Ausführungszeit nach Abschluss der ersten Anfrage übersprungen. Der Standardwert ist False.
    • OAUTH2_SCOPE: OAuth2-Bereiche, die an die Google API übergeben werden sollen. Kann ein String, eine Liste von Strings, ein durch Leerzeichen getrennter String oder ein kommagetrennter String sein.
  • RESPONSE_VALUE (optional): Variablenname, in dem das Ergebnis eines Connector-Aufrufschritts gespeichert ist.

Beispiel

Der folgende Workflow zeigt die Verwendung des Cloud Storage API-Connectors und des Cloud Translation API-Connectors, um zwei Dateien ins Französische und Spanische zu übersetzen und die Ergebnisse in einem Cloud Storage-Bucket zu speichern.

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

Nächste Schritte